summaryrefslogtreecommitdiffstats
path: root/install
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2011-11-04 20:43:39 -0500
committerEndi S. Dewata <edewata@redhat.com>2011-11-11 14:44:25 +0000
commit9405e1a9db11294a11efa24a7a3c36ea76a42f31 (patch)
tree104dea0cb0624e66bd294c6886049d115e4142e8 /install
parentdf6bd6ab5acf6d6178f6dd726b9c5927ae7cf047 (diff)
downloadfreeipa.git-9405e1a9db11294a11efa24a7a3c36ea76a42f31.tar.gz
freeipa.git-9405e1a9db11294a11efa24a7a3c36ea76a42f31.tar.xz
freeipa.git-9405e1a9db11294a11efa24a7a3c36ea76a42f31.zip
Added paging on search facet.
The search facet has been modified to support paging on most entities using the --pkey-only option to get the primary keys and a batch command to get the complete records. Paging on DNS records is not supported because a record may appear as multiple rows. The following entities do not have --pkey-only option: Automount Key, Self-Service Permissions, Delegation. The search and association facet have been refactored to reuse the common code from the table facet base class. Ticket #981
Diffstat (limited to 'install')
-rw-r--r--install/ui/aci.js2
-rw-r--r--install/ui/add.js6
-rw-r--r--install/ui/association.js221
-rw-r--r--install/ui/automount.js1
-rw-r--r--install/ui/dns.js57
-rw-r--r--install/ui/facet.js227
-rw-r--r--install/ui/search.js131
-rw-r--r--install/ui/widget.js14
8 files changed, 335 insertions, 324 deletions
diff --git a/install/ui/aci.js b/install/ui/aci.js
index 92c5dcf0..5d66bfb2 100644
--- a/install/ui/aci.js
+++ b/install/ui/aci.js
@@ -200,6 +200,7 @@ IPA.aci.selfservice_entity = function(spec) {
that.init = function(params) {
params.builder.search_facet({
+ pagination: false,
columns:['aciname']}).
details_facet({
sections:[{
@@ -232,6 +233,7 @@ IPA.aci.delegation_entity = function(spec) {
that.init = function(params) {
params.builder.search_facet({
+ pagination: false,
columns:['aciname']}).
details_facet({sections:[
{
diff --git a/install/ui/add.js b/install/ui/add.js
index 621861fd..c9d5e46b 100644
--- a/install/ui/add.js
+++ b/install/ui/add.js
@@ -46,8 +46,7 @@ IPA.entity_adder_dialog = function(spec) {
that.add(
function(data, text_status, xhr) {
var facet = IPA.current_entity.get_facet();
- var table = facet.table;
- table.refresh();
+ facet.refresh();
that.close();
},
that.on_error);
@@ -67,8 +66,7 @@ IPA.entity_adder_dialog = function(spec) {
that.show_message(message);
var facet = IPA.current_entity.get_facet();
- var table = facet.table;
- table.refresh();
+ facet.refresh();
that.reset();
},
that.on_error);
diff --git a/install/ui/association.js b/install/ui/association.js
index 6ef73daf..553966eb 100644
--- a/install/ui/association.js
+++ b/install/ui/association.js
@@ -457,9 +457,9 @@ IPA.association_table_widget = function (spec) {
}
var batch = IPA.batch_command({
- 'name': that.entity.name+'_'+that.name,
- 'on_success': on_success,
- 'on_error': on_error
+ name: that.entity.name+'_'+that.name,
+ on_success: on_success,
+ on_error: on_error
});
for (var i=0; i<length; i++) {
@@ -701,7 +701,6 @@ IPA.association_facet = function (spec) {
var that = IPA.table_facet(spec);
- that.entity = spec.entity;
that.attribute_member = spec.attribute_member;
that.indirect_attribute_member = spec.indirect_attribute_member;
@@ -721,8 +720,6 @@ IPA.association_facet = function (spec) {
that.adder_columns = $.ordered_map();
- that.page_length = spec.page_length === undefined ? 20 : spec.page_length;
-
that.get_adder_column = function(name) {
return that.adder_columns.get(name);
};
@@ -748,10 +745,16 @@ IPA.association_facet = function (spec) {
return column;
};
- function setup_columns(){
+ var init = function() {
+
var column;
var i;
+ var adder_columns = spec.adder_columns || [];
+ for (i=0; i<adder_columns.length; i++) {
+ that.create_adder_column(adder_columns[i]);
+ }
+
var pkey_name;
if (that.other_entity) {
pkey_name = IPA.metadata.objects[that.other_entity].primary_key;
@@ -772,100 +775,19 @@ IPA.association_facet = function (spec) {
});
}
- var label = IPA.metadata.objects[that.other_entity] ?
- IPA.metadata.objects[that.other_entity].label : that.other_entity;
-
- that.table = IPA.table_widget({
- id: that.entity.name+'-'+that.other_entity,
- 'class': 'content-table',
- name: pkey_name,
- label: label,
- entity: that.entity,
- other_entity: that.other_entity,
- page_length: that.page_length,
- scrollable: true,
- selectable: !that.read_only
- });
-
- var columns = that.columns.values;
-
- that.table.set_columns(columns);
-
- for (i=0; i<columns.length; i++) {
- column = columns[i];
- column.entity_name = that.other_entity;
-
- if (column.link) {
- column.link_handler = function(value) {
- IPA.nav.show_page(that.other_entity, 'default', value);
- return false;
- };
- }
- }
-
- var adder_columns = that.adder_columns.values;
+ adder_columns = that.adder_columns.values;
for (i=0; i<adder_columns.length; i++) {
column = adder_columns[i];
column.entity_name = that.other_entity;
}
- that.table.prev_page = function() {
- if (that.table.current_page > 1) {
- var state = {};
- state[that.entity_name+'-page'] = that.table.current_page - 1;
- IPA.nav.push_state(state);
- }
- };
-
- that.table.next_page = function() {
- if (that.table.current_page < that.table.total_pages) {
- var state = {};
- state[that.entity_name+'-page'] = that.table.current_page + 1;
- IPA.nav.push_state(state);
- }
- };
-
- that.table.set_page = function(page) {
- if (page < 1) {
- page = 1;
- } else if (page > that.total_pages) {
- page = that.total_pages;
- }
- var state = {};
- state[that.entity_name+'-page'] = page;
- IPA.nav.push_state(state);
- };
-
- that.table.refresh = function() {
- var state = {};
- var page = parseInt(IPA.nav.get_state(that.entity_name+'-page'), 10) || 1;
- if (page < 1) {
- state[that.entity_name+'-page'] = 1;
- IPA.nav.push_state(state);
- return;
- } else if (page > that.table.total_pages) {
- state[that.entity_name+'-page'] = that.table.total_pages;
- IPA.nav.push_state(state);
- return;
- }
- that.table.current_page = page;
- that.table.current_page_input.val(page);
- that.refresh_table();
- };
-
- that.table.select_changed = function() {
-
- var values = that.table.get_selected_values();
+ var other_entity = IPA.get_entity(that.other_entity);
+ that.init_table(other_entity);
+ };
- if (that.remove_button) {
- if (values.length === 0) {
- that.remove_button.addClass('action-button-disabled');
- } else {
- that.remove_button.removeClass('action-button-disabled');
- }
- }
- };
- }
+ that.get_records_command_name = function() {
+ return that.entity.name+'_'+that.get_attribute_name();
+ };
that.create_header = function(container) {
@@ -1070,105 +992,8 @@ IPA.association_facet = function (spec) {
dialog.open(that.container);
};
- that.refresh_table = function() {
-
- that.table.current_page_input.val(that.table.current_page);
- that.table.total_pages_span.text(that.table.total_pages);
-
- var pkeys = that.data[that.get_attribute_name()];
- if (!pkeys || !pkeys.length) {
- that.table.empty();
- that.table.summary.text(IPA.messages.association.no_entries);
- return;
- }
-
- pkeys.sort();
- var total = pkeys.length;
-
- var start = (that.table.current_page - 1) * that.table.page_length + 1;
- var end = that.table.current_page * that.table.page_length;
- end = end > total ? total : end;
-
- var summary = IPA.messages.association.paging;
- summary = summary.replace('${start}', start);
- summary = summary.replace('${end}', end);
- summary = summary.replace('${total}', total);
- that.table.summary.text(summary);
-
- var list = pkeys.slice(start-1, end);
-
- var columns = that.table.columns.values;
- if (columns.length == 1) { // show pkey only
- var name = columns[0].name;
- that.table.empty();
- for (var i=0; i<list.length; i++) {
- var entry = {};
- entry[name] = list[i];
- that.table.add_record(entry);
- }
-
- } else { // get and show additional fields
- that.get_records(
- list,
- function(data, text_status, xhr) {
- var results = data.result.results;
- that.table.empty();
- for (var i=0; i<results.length; i++) {
- var record = results[i].result;
- that.table.add_record(record);
- }
- },
- function(xhr, text_status, error_thrown) {
- that.table.empty();
- var summary = that.table.summary.empty();
- summary.append(error_thrown.name+': '+error_thrown.message);
- }
- );
- }
- };
-
- that.get_records = function(pkeys, on_success, on_error) {
-
- var length = pkeys.length;
- if (!length) return;
-
- var batch = IPA.batch_command({
- 'name': that.entity.name+'_'+that.get_attribute_name(),
- 'on_success': on_success,
- 'on_error': on_error
- });
-
- for (var i=0; i<length; i++) {
- var pkey = pkeys[i];
-
- var command = IPA.command({
- entity: that.other_entity,
- method: 'show',
- args: [pkey],
- options: { all: true }
- });
-
- batch.add_command(command);
- }
-
- batch.execute();
- };
-
- that.load = function(data) {
- that.facet_load(data);
-
- var pkeys = that.data[that.get_attribute_name()];
- if (pkeys) {
- that.table.total_pages =
- Math.ceil(pkeys.length / that.table.page_length);
- } else {
- that.table.total_pages = 1;
- }
-
- delete that.table.current_page;
-
- that.table.refresh();
- that.table.unselect_all();
+ that.load_pkeys = function(result) {
+ that.pkeys = that.data[that.get_attribute_name()] || [];
};
that.refresh = function() {
@@ -1217,11 +1042,7 @@ IPA.association_facet = function (spec) {
return false;
};
- /*initialization*/
- var adder_columns = spec.adder_columns || [];
- for (var i=0; i<adder_columns.length; i++) {
- that.create_adder_column(adder_columns[i]);
- }
- setup_columns();
+ init();
+
return that;
};
diff --git a/install/ui/automount.js b/install/ui/automount.js
index 054d2aee..9c0152ae 100644
--- a/install/ui/automount.js
+++ b/install/ui/automount.js
@@ -71,6 +71,7 @@ IPA.automount.map_entity = function(spec) {
nested_search_facet({
facet_group: 'automountkey',
nested_entity: 'automountkey',
+ pagination: false,
label: IPA.metadata.objects.automountkey.label,
name: 'keys',
get_values: IPA.get_option_values,
diff --git a/install/ui/dns.js b/install/ui/dns.js
index 2cf5cd4a..933366c0 100644
--- a/install/ui/dns.js
+++ b/install/ui/dns.js
@@ -88,12 +88,13 @@ IPA.dns.zone_entity = function(spec) {
}]
}).
nested_search_facet({
+ factory: IPA.dns.record_search_facet,
facet_group: 'dnsrecord',
nested_entity : 'dnsrecord',
name: 'records',
+ pagination: false,
title: IPA.metadata.objects.dnszone.label_singular,
label: IPA.metadata.objects.dnsrecord.label,
- load: IPA.dns_record_search_load,
get_values: IPA.dnsrecord_get_delete_values,
columns: [
{
@@ -407,31 +408,41 @@ IPA.dnszone_adder_dialog = function(spec) {
return that;
};
-IPA.dns_record_search_load = function (result) {
- this.table.empty();
- var normalized_record;
- var dns_record_types = IPA.dns_record_types();
- for (var i = 0; i<result.length; i++) {
- var record = result[i];
- for (var j =0; j < dns_record_types.length; j += 1){
- var record_type = dns_record_types[j].value;
- if (record[record_type]){
- var record_of_type = record[record_type];
- for (var k =0;
- k < record_of_type.length;
- k+=1)
- {
- normalized_record = {
- idnsname:record.idnsname,
- type:record_type,
- data:record_of_type[k]
- };
- this.table.add_record(normalized_record);
+IPA.dns.record_search_facet = function(spec) {
+
+ var that = IPA.nested_search_facet(spec);
+
+ var init = function() {
+
+ that.table.load = function(result) {
+
+ that.table.empty();
+
+ var types = IPA.dns_record_types();
+
+ for (var i=0; i<result.length; i++) {
+ var record = result[i];
+
+ for (var j=0; j<types.length; j++) {
+ var type = types[j].value;
+ if (!record[type]) continue;
+ var data = record[type];
+ for (var k=0; k<data.length; k++) {
+ that.table.add_record({
+ idnsname: record.idnsname,
+ type: type,
+ data: data[k]
+ });
+ }
}
}
- }
- }
+ };
+ };
+
+ init();
+
+ return that;
};
IPA.dns.record_entity = function(spec) {
diff --git a/install/ui/facet.js b/install/ui/facet.js
index 5b6d964d..e4377151 100644
--- a/install/ui/facet.js
+++ b/install/ui/facet.js
@@ -391,9 +391,21 @@ IPA.table_facet = function(spec) {
var that = IPA.facet(spec);
that.managed_entity_name = spec.managed_entity_name || that.entity.name;
+ that.page_length = spec.page_length === undefined ? 20 : spec.page_length;
+
+ that.pagination = spec.pagination === undefined ? true : spec.pagination;
+ that.search_all = spec.search_all;
+ that.selectable = spec.selectable === undefined ? true : spec.selectable;
that.columns = $.ordered_map();
+ var init = function() {
+ var columns = spec.columns || [];
+ for (var i=0; i<columns.length; i++) {
+ that.create_column(columns[i]);
+ }
+ };
+
that.get_columns = function() {
return that.columns.values;
};
@@ -428,10 +440,217 @@ IPA.table_facet = function(spec) {
return that;
};
- var columns = spec.columns || [];
- for (var i=0; i<columns.length; i++) {
- that.create_column(columns[i]);
- }
+ that.load = function(result) {
+ that.facet_load(result);
+
+ that.table.current_page = 1;
+ that.table.total_pages = 1;
+
+ if (that.pagination) {
+ that.table.load_page(result);
+ } else {
+ that.table.load(result);
+ }
+
+ that.table.current_page_input.val(that.table.current_page);
+ that.table.total_pages_span.text(that.table.total_pages);
+
+ that.table.unselect_all();
+ };
+
+ that.get_records_command_name = function() {
+ return that.entity.name+'_get_records';
+ };
+
+ that.get_records = function(on_success, on_error) {
+
+ var length = that.values.length;
+ if (!length) return;
+
+ var batch = IPA.batch_command({
+ name: that.get_records_command_name(),
+ on_success: on_success,
+ on_error: on_error
+ });
+
+ for (var i=0; i<length; i++) {
+ var pkey = that.values[i];
+
+ var command = IPA.command({
+ entity: that.table.entity.name,
+ method: 'show',
+ args: [pkey],
+ options: { all: true }
+ });
+
+ batch.add_command(command);
+ }
+
+ batch.execute();
+ };
+
+ that.select_changed = function() {
+
+ var values = that.table.get_selected_values();
+
+ if (that.remove_button) {
+ if (values.length === 0) {
+ that.remove_button.addClass('action-button-disabled');
+ } else {
+ that.remove_button.removeClass('action-button-disabled');
+ }
+ }
+ };
+
+ that.init_table = function(entity) {
+
+ that.table = IPA.table_widget({
+ 'class': 'content-table',
+ name: entity.metadata.primary_key,
+ label: entity.metadata.label,
+ entity: entity,
+ page_length: that.page_length,
+ search_all: that.search_all,
+ scrollable: true,
+ selectable: that.selectable && !that.read_only
+ });
+
+ var columns = that.columns.values;
+ for (var i=0; i<columns.length; i++) {
+ var column = columns[i];
+
+ if (column.link) {
+ column.link_handler = function(value) {
+ IPA.nav.show_page(entity.name, 'default', value);
+ return false;
+ };
+ }
+
+ that.table.add_column(column);
+ }
+
+ that.table.select_changed = function() {
+ that.select_changed();
+ };
+
+ that.table.prev_page = function() {
+ if (that.table.current_page > 1) {
+ var state = {};
+ state[that.entity_name+'-page'] = that.table.current_page - 1;
+ IPA.nav.push_state(state);
+ }
+ };
+
+ that.table.next_page = function() {
+ if (that.table.current_page < that.table.total_pages) {
+ var state = {};
+ state[that.entity_name+'-page'] = that.table.current_page + 1;
+ IPA.nav.push_state(state);
+ }
+ };
+
+ that.table.set_page = function(page) {
+ if (page < 1) {
+ page = 1;
+ } else if (page > that.total_pages) {
+ page = that.total_pages;
+ }
+ var state = {};
+ state[that.entity_name+'-page'] = page;
+ IPA.nav.push_state(state);
+ };
+
+ that.table.load = function(result) {
+
+ that.table.empty();
+
+ for (var i=0; i<result.length; i++) {
+ var record = that.table.get_record(result[i], 0);
+ that.table.add_record(record);
+ }
+
+ that.table.unselect_all();
+ };
+
+ that.table.load_page = function(result) {
+
+ that.load_pkeys(result);
+
+ if (that.pkeys.length) {
+ that.table.total_pages =
+ Math.ceil(that.pkeys.length / that.table.page_length);
+ } else {
+ that.table.total_pages = 1;
+ }
+
+ delete that.table.current_page;
+
+ var state = {};
+ var page = parseInt(IPA.nav.get_state(that.entity_name+'-page'), 10) || 1;
+ if (page < 1) {
+ state[that.entity_name+'-page'] = 1;
+ IPA.nav.push_state(state);
+ return;
+ } else if (page > that.table.total_pages) {
+ state[that.entity_name+'-page'] = that.table.total_pages;
+ IPA.nav.push_state(state);
+ return;
+ }
+ that.table.current_page = page;
+
+ if (!that.pkeys || !that.pkeys.length) {
+ that.table.empty();
+ that.table.summary.text(IPA.messages.association.no_entries);
+ return;
+ }
+
+ that.pkeys.sort();
+ var total = that.pkeys.length;
+
+ var start = (that.table.current_page - 1) * that.table.page_length + 1;
+ var end = that.table.current_page * that.table.page_length;
+ end = end > total ? total : end;
+
+ var summary = IPA.messages.association.paging;
+ summary = summary.replace('${start}', start);
+ summary = summary.replace('${end}', end);
+ summary = summary.replace('${total}', total);
+ that.table.summary.text(summary);
+
+ that.values = that.pkeys.slice(start-1, end);
+
+ var columns = that.table.columns.values;
+ if (columns.length == 1) { // show pkey only
+ var name = columns[0].name;
+ that.table.empty();
+ for (var i=0; i<that.values.length; i++) {
+ var entry = {};
+ entry[name] = that.values[i];
+ that.table.add_record(entry);
+ }
+ return;
+ }
+
+ // get and show additional fields
+ that.get_records(
+ function(data, text_status, xhr) {
+ var results = data.result.results;
+ that.table.empty();
+ for (var i=0; i<results.length; i++) {
+ var record = results[i].result;
+ that.table.add_record(record);
+ }
+ },
+ function(xhr, text_status, error_thrown) {
+ that.table.empty();
+ var summary = that.table.summary.empty();
+ summary.append(error_thrown.name+': '+error_thrown.message);
+ }
+ );
+ };
+ };
+
+ init();
return that;
};
diff --git a/install/ui/search.js b/install/ui/search.js
index a8f897ab..493edb7f 100644
--- a/install/ui/search.js
+++ b/install/ui/search.js
@@ -38,66 +38,27 @@ IPA.search_facet = function(spec) {
var that = IPA.table_facet(spec);
- that.search_all = spec.search_all || false;
- that.selectable = spec.selectable;
-
function get_values() {
return that.table.get_selected_values();
}
that.get_values = spec.get_values || get_values;
- function initialize_table_columns(){
+ var init = function() {
+
that.managed_entity = IPA.get_entity(that.managed_entity_name);
- var entity = that.managed_entity;
-
- that.table = IPA.table_widget({
- 'class': 'content-table',
- name: 'search',
- label: entity.metadata.label,
- entity: entity,
- search_all: that.search_all,
- scrollable: true,
- selectable: that.selectable
- });
var columns = that.columns.values;
for (var i=0; i<columns.length; i++) {
var column = columns[i];
- column.entity = entity;
- var metadata = IPA.get_entity_param(entity.name, column.name);
+
+ var metadata = IPA.get_entity_param(that.managed_entity_name, column.name);
column.primary_key = metadata && metadata.primary_key;
column.link = column.primary_key;
-
- if (column.link) {
- column.link_handler = function(value) {
- IPA.nav.show_page(entity.name, 'default', value);
- return false;
- };
- }
-
- that.table.add_column(column);
}
- that.table.select_changed = function() {
- that.select_changed();
- };
-
- that.table.refresh = function() {
- that.refresh();
- };
-
- that.table.load = function(result) {
- that.table.empty();
-
- for (var i = 0; i<result.length; i++) {
- var record = that.table.get_record(result[i], 0);
- that.table.add_record(record);
- }
-
- that.table.unselect_all();
- };
- }
+ that.init_table(that.managed_entity);
+ };
that.create_content = function(container) {
that.table.create(container);
@@ -144,7 +105,7 @@ IPA.search_facet = function(spec) {
icon: 'remove-icon',
click: function() {
if (!that.remove_button.hasClass('action-button-disabled')) {
- that.remove();
+ that.show_remove_dialog();
}
return false;
}
@@ -155,7 +116,9 @@ IPA.search_facet = function(spec) {
label: IPA.messages.buttons.add,
icon: 'add-icon',
click: function() {
- that.add();
+ if (!that.add_button.hasClass('action-button-disabled')) {
+ that.show_add_dialog();
+ }
return false;
}
}).appendTo(that.controls);
@@ -173,29 +136,12 @@ IPA.search_facet = function(spec) {
}
};
- that.select_changed = function() {
-
- var values = that.table.get_selected_values();
-
- if (that.remove_button) {
- if (values.length === 0) {
- that.remove_button.addClass('action-button-disabled');
- } else {
- that.remove_button.removeClass('action-button-disabled');
- }
- }
- };
-
- that.add = function() {
+ that.show_add_dialog = function() {
var dialog = that.managed_entity.get_dialog('add');
dialog.open(that.container);
};
- that.remove = function() {
- that.remove_instances(that.managed_entity);
- };
-
- that.remove_instances = function(entity) {
+ that.show_remove_dialog = function() {
var values = that.get_values();
@@ -212,12 +158,12 @@ IPA.search_facet = function(spec) {
dialog = IPA.search_deleter_dialog();
}
- dialog.entity_name = entity.name;
- dialog.entity = entity;
+ dialog.entity_name = that.managed_entity.name;
+ dialog.entity = that.managed_entity;
dialog.facet = that;
title = IPA.messages.dialogs.remove_title;
- var label = entity.metadata.label;
+ var label = that.managed_entity.metadata.label;
dialog.title = title.replace('${entity}', label);
dialog.set_values(values);
@@ -232,21 +178,25 @@ IPA.search_facet = function(spec) {
IPA.nav.push_state(state);
};
- function load(result) {
- that.table.load(result);
- }
-
- that.load = spec.load || load;
-
- that.refresh = function() {
- that.search_refresh(that.entity);
+ that.load_pkeys = function(result) {
+ that.pkeys = [];
+ for (var i=0; i<result.length; i++) {
+ var record = result[i];
+ var values = record[that.managed_entity.metadata.primary_key];
+ that.pkeys.push(values[0]);
+ }
+ return that.pkeys;
};
that.on_error = function(xhr, text_status, error_thrown) {
that.report_error(error_thrown);
};
- that.search_refresh = function(entity){
+ that.get_search_command_name = function() {
+ return that.managed_entity.name + '_find' + (that.pagination ? "_pkeys" : "");
+ };
+
+ that.refresh = function() {
function on_success(data, text_status, xhr) {
@@ -260,12 +210,15 @@ IPA.search_facet = function(spec) {
that.table.summary.text(data.result.summary);
}
+ that.table.current_page_input.val(that.table.current_page);
+ that.table.total_pages_span.text(that.table.total_pages);
+
that.filter.focus();
that.select_changed();
}
var filter = [];
- var current_entity = entity;
+ var current_entity = that.managed_entity;
filter.unshift(IPA.nav.get_state(current_entity.name+'-filter'));
current_entity = current_entity.get_containing_entity();
while (current_entity !== null) {
@@ -274,7 +227,8 @@ IPA.search_facet = function(spec) {
}
var command = IPA.command({
- entity: entity.name,
+ name: that.get_search_command_name(),
+ entity: that.managed_entity.name,
method: 'find',
args: filter,
options: {
@@ -284,11 +238,16 @@ IPA.search_facet = function(spec) {
on_error: that.on_error
});
+ if (that.pagination) {
+ command.set_option('pkey_only', true);
+ command.set_option('sizelimit', 0);
+ }
+
command.execute();
};
that.clear = function() {
- if(that.needs_clear()) {
+ if (that.needs_clear()) {
that.table.clear();
}
};
@@ -298,11 +257,11 @@ IPA.search_facet = function(spec) {
return that.old_filter !== '' || that.old_filter !== filter;
};
+ init();
+
// methods that should be invoked by subclasses
that.search_facet_create_content = that.create_content;
-
- //initialization
- initialize_table_columns();
+ that.search_facet_refresh = that.refresh;
return that;
};
@@ -398,7 +357,7 @@ IPA.nested_search_facet = function(spec) {
}
};
- that.refresh = function(){
+ that.refresh = function() {
var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
@@ -407,7 +366,7 @@ IPA.nested_search_facet = function(spec) {
return;
}
- that.search_refresh(that.managed_entity);
+ that.search_facet_refresh();
};
return that;
diff --git a/install/ui/widget.js b/install/ui/widget.js
index c3260659..2a3b952b 100644
--- a/install/ui/widget.js
+++ b/install/ui/widget.js
@@ -1305,6 +1305,7 @@ IPA.table_widget = function (spec) {
};
that.add_column = function(column) {
+ column.entity = that.entity;
that.columns.put(column.name, column);
};
@@ -1566,13 +1567,12 @@ IPA.table_widget = function (spec) {
that.empty();
- that.values = result[that.name];
- if (that.values) {
- for (var i=0; i<that.values.length; i++) {
- var record = that.get_record(result, i);
- that.add_record(record);
- }
+ that.values = result[that.name] || [];
+ for (var i=0; i<that.values.length; i++) {
+ var record = that.get_record(result, i);
+ that.add_record(record);
}
+
that.unselect_all();
};
@@ -1617,7 +1617,7 @@ IPA.table_widget = function (spec) {
if (values instanceof Array){
record[name] = values[index];
- }else{
+ } else {
record[name] = values;
}
}