mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-22 18:50:08 +03:00
Feature #4614: Redo search to work with hidden table pages
This commit is contained in:
parent
d482d967aa
commit
651bf6686c
@ -89,6 +89,7 @@ tabs:
|
||||
#- 8 # Group ID
|
||||
#- 9 # Hidden User Data
|
||||
#- 10 # Labels
|
||||
#- 11 # Search data
|
||||
actions:
|
||||
User.refresh: true
|
||||
User.create_dialog: true
|
||||
|
@ -87,6 +87,7 @@ tabs:
|
||||
#- 8 # Group ID
|
||||
#- 9 # Hidden User Data
|
||||
#- 10 # Labels
|
||||
#- 11 # Search data
|
||||
actions:
|
||||
User.refresh: true
|
||||
User.create_dialog: true
|
||||
|
@ -87,6 +87,7 @@ tabs:
|
||||
#- 8 # Group ID
|
||||
#- 9 # Hidden User Data
|
||||
#- 10 # Labels
|
||||
#- 11 # Search data
|
||||
actions:
|
||||
User.refresh: true
|
||||
User.create_dialog: true
|
||||
|
@ -87,6 +87,7 @@ tabs:
|
||||
#- 8 # Group ID
|
||||
#- 9 # Hidden User Data
|
||||
#- 10 # Labels
|
||||
#- 11 # Search data
|
||||
actions:
|
||||
User.refresh: true
|
||||
User.create_dialog: true
|
||||
|
@ -86,6 +86,7 @@ tabs:
|
||||
#- 8 # Group ID
|
||||
#- 9 # Hidden User Data
|
||||
#- 10 # Labels
|
||||
#- 11 # Search data
|
||||
actions:
|
||||
User.refresh: true
|
||||
User.create_dialog: true
|
||||
|
@ -36,6 +36,7 @@ define(function(require) {
|
||||
var XML_ROOT = "USER";
|
||||
var TAB_NAME = require('./tabId');
|
||||
var LABELS_COLUMN = 10;
|
||||
var SEARCH_COLUMN = 11;
|
||||
var TEMPLATE_ATTR = 'TEMPLATE';
|
||||
|
||||
/*
|
||||
@ -73,7 +74,8 @@ define(function(require) {
|
||||
Locale.tr("CPU"),
|
||||
Locale.tr("Group ID"),
|
||||
Locale.tr("Hidden User Data"),
|
||||
Locale.tr("Labels")
|
||||
Locale.tr("Labels"),
|
||||
"search_data"
|
||||
];
|
||||
|
||||
this.selectOptions = {
|
||||
@ -89,6 +91,9 @@ define(function(require) {
|
||||
|
||||
this.conf.searchDropdownHTML = SearchDropdown();
|
||||
|
||||
this.searchFields = ["NAME", "GNAME", "PASSWORD", "AUTH_DRIVER"];
|
||||
this.searchVals = {"NAME": "", "GNAME": "", "PASSWORD": "", "AUTH_DRIVER": ""};
|
||||
|
||||
TabDataTable.call(this);
|
||||
}
|
||||
|
||||
@ -108,27 +113,27 @@ define(function(require) {
|
||||
function _setupSearch(context) {
|
||||
var that = this;
|
||||
|
||||
$(".pass-search", context).on('input', function(){
|
||||
var val = $(".pass-search", context).val();
|
||||
$("[search-field]", context).on('input change', function(){
|
||||
that.searchVals[$(this).attr("search-field")] = $(this).val();
|
||||
});
|
||||
|
||||
if(val == undefined || val == ""){
|
||||
this.dataTable.on('search.dt', function() {
|
||||
var empty = true;
|
||||
|
||||
for(var i=0; i < that.searchFields.length; i++){
|
||||
var name = that.searchFields[i];
|
||||
empty = $("[search-field="+name+"]", context).val() == "";
|
||||
|
||||
if(!empty){
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(empty){
|
||||
$("button.search-dropdown", context).addClass("hollow");
|
||||
} else {
|
||||
$("button.search-dropdown", context).removeClass("hollow");
|
||||
}
|
||||
|
||||
that.dataTable.fnDraw(true);
|
||||
}).on("keyup keypress", function(e) {
|
||||
var code = e.keyCode || e.which;
|
||||
if (code == 13) {
|
||||
$("button.advanced-search", context).click();
|
||||
}
|
||||
});
|
||||
|
||||
$("a.advanced-search-clear", context).on('click', function(){
|
||||
$(".pass-search", context).val("").trigger("input");
|
||||
|
||||
$("button.advanced-search", context).click();
|
||||
});
|
||||
|
||||
$.fn.dataTable.ext.search.push(
|
||||
@ -139,17 +144,22 @@ define(function(require) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var val = $(".pass-search", context).val();
|
||||
|
||||
if(val == undefined || val == ""){
|
||||
return true;
|
||||
}
|
||||
|
||||
try {
|
||||
var pass = $("input.check_item", that.dataTable.fnGetNodes(dataIndex)).attr("password64");
|
||||
pass = atob(pass);
|
||||
var data = JSON.parse(atob(data[SEARCH_COLUMN]));
|
||||
|
||||
return pass == val;
|
||||
var match = true;
|
||||
|
||||
for(var i=0; i < that.searchFields.length; i++){
|
||||
var name = that.searchFields[i];
|
||||
|
||||
match = (data[name].match( that.searchVals[name] ) != null);
|
||||
|
||||
if (!match){
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return match;
|
||||
} catch (err) {}
|
||||
|
||||
return true;
|
||||
@ -158,6 +168,8 @@ define(function(require) {
|
||||
}
|
||||
|
||||
function _elementArray(element_json) {
|
||||
var that = this;
|
||||
|
||||
this.totalUsers++;
|
||||
|
||||
var element = element_json[XML_ROOT];
|
||||
@ -190,13 +202,23 @@ define(function(require) {
|
||||
// Build hidden user template
|
||||
var hidden_template = TemplateUtils.templateToString(element);
|
||||
|
||||
this.passwordList += '<option value="' + element.PASSWORD + '">'
|
||||
var search = {
|
||||
NAME: element.NAME,
|
||||
GNAME: element.GNAME,
|
||||
PASSWORD: element.PASSWORD,
|
||||
AUTH_DRIVER: element.AUTH_DRIVER
|
||||
}
|
||||
|
||||
try{
|
||||
that.searchFields.forEach(function(name){
|
||||
that.searchSets[name].add(search[name]);
|
||||
});
|
||||
}catch(e){}
|
||||
|
||||
return [
|
||||
'<input class="check_item" type="checkbox" id="'+RESOURCE.toLowerCase()+'_' +
|
||||
element.ID + '" name="selected_items" ' +
|
||||
'value="' + element.ID + '" ' +
|
||||
'password64="' + btoa(element.PASSWORD) + '"/>',
|
||||
'value="' + element.ID + '"/>',
|
||||
element.ID,
|
||||
element.NAME,
|
||||
element.GNAME,
|
||||
@ -206,18 +228,40 @@ define(function(require) {
|
||||
cpu,
|
||||
element.GID,
|
||||
hidden_template,
|
||||
(LabelsUtils.labelsStr(element[TEMPLATE_ATTR])||'')
|
||||
(LabelsUtils.labelsStr(element[TEMPLATE_ATTR])||''),
|
||||
btoa(JSON.stringify(search))
|
||||
];
|
||||
}
|
||||
|
||||
function _preUpdateView() {
|
||||
var that = this;
|
||||
|
||||
this.totalUsers = 0;
|
||||
this.passwordList = "";
|
||||
|
||||
this.searchSets = {};
|
||||
|
||||
try {
|
||||
that.searchFields.forEach(function(name){
|
||||
that.searchSets[name] = new Set();
|
||||
});
|
||||
} catch(e){}
|
||||
}
|
||||
|
||||
function _postUpdateView() {
|
||||
var that = this;
|
||||
|
||||
$(".total_users").text(this.totalUsers);
|
||||
|
||||
$("#userSearchPasswordList", $("#"+TAB_NAME)).html(this.passwordList);
|
||||
try {
|
||||
that.searchFields.forEach(function(name){
|
||||
var st = "";
|
||||
|
||||
that.searchSets[name].forEach(function(val){
|
||||
st += '<option value="' + val + '">';
|
||||
});
|
||||
|
||||
$("datalist[search-datalist="+name+"]", $("#"+TAB_NAME)).html(st);
|
||||
});
|
||||
} catch(e){}
|
||||
}
|
||||
});
|
||||
|
@ -1,9 +1,27 @@
|
||||
<div class="row">
|
||||
<div class="small-12 columns">
|
||||
<label>
|
||||
{{tr "Name"}}
|
||||
<input search-field="NAME" type="text" list="userSearchListNAME"/>
|
||||
<datalist search-datalist="NAME" id="userSearchListNAME">
|
||||
</datalist>
|
||||
</label>
|
||||
<label>
|
||||
{{tr "Group"}}
|
||||
<input search-field="GNAME" type="text" list="userSearchListGNAME"/>
|
||||
<datalist search-datalist="GNAME" id="userSearchListGNAME">
|
||||
</datalist>
|
||||
</label>
|
||||
<label>
|
||||
{{tr "Password"}}
|
||||
<input class="pass-search" type="text" list="userSearchPasswordList"/>
|
||||
<datalist id="userSearchPasswordList">
|
||||
<input search-field="PASSWORD" type="text" list="userSearchListPASSWORD"/>
|
||||
<datalist search-datalist="PASSWORD" id="userSearchListPASSWORD">
|
||||
</datalist>
|
||||
</label>
|
||||
<label>
|
||||
{{tr "Auth driver"}}
|
||||
<input search-field="AUTH_DRIVER" type="text" list="userSearchListAUTH_DRIVER"/>
|
||||
<datalist search-datalist="AUTH_DRIVER" id="userSearchListAUTH_DRIVER">
|
||||
</datalist>
|
||||
</label>
|
||||
</div>
|
||||
|
@ -221,6 +221,19 @@ define(function(require) {
|
||||
var context = $('#' + this.dataTableId + 'Search-wrapper');
|
||||
that.setupSearch(context);
|
||||
|
||||
$("a.advanced-search-clear", context).on('click', function(){
|
||||
$("input", context).val("").trigger("change");
|
||||
|
||||
$("button.advanced-search", context).click();
|
||||
});
|
||||
|
||||
$("input", context).on("keypress", function(e) {
|
||||
var code = e.keyCode || e.which;
|
||||
if (code == 13) {
|
||||
$("button.advanced-search", context).click();
|
||||
}
|
||||
});
|
||||
|
||||
$("button.advanced-search", context).on('click', function(){
|
||||
$('#' + that.dataTableId + 'Search-dropdown', context).foundation('close');
|
||||
that.dataTable.fnDraw(true);
|
||||
@ -527,10 +540,6 @@ define(function(require) {
|
||||
}
|
||||
}
|
||||
|
||||
if(that.conf.searchDropdownHTML != undefined){
|
||||
this.dataTable.fnDraw(true);
|
||||
}
|
||||
|
||||
if (that.postUpdateView) {
|
||||
that.postUpdateView();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user