From 881290b0109aa1f52a34d31505b9ebf73b991a00 Mon Sep 17 00:00:00 2001 From: Petr Vobornik Date: Thu, 18 Jul 2013 16:17:40 +0200 Subject: Web UI search optimization This patch optimizes options used in commands executed by search pages. 1) Removed --all from _find and _show commands used by search pages. All displayed attributes should be already included in default attributes. 2) Removed search_all_attributes - Not needed since introduction of paging. 3) Added --no-members options to search _show commmands. Members are not displayed on search pages and such change drastically improves performance. It reduces computations on server and amount of data transferred to Web UI. https://fedorahosted.org/freeipa/ticket/3706 --- install/ui/src/freeipa/entity.js | 14 ++++++++++++++ install/ui/src/freeipa/facet.js | 11 ++++++----- install/ui/src/freeipa/hbac.js | 1 - install/ui/src/freeipa/search.js | 5 +---- install/ui/src/freeipa/selinux.js | 1 - 5 files changed, 21 insertions(+), 11 deletions(-) (limited to 'install') diff --git a/install/ui/src/freeipa/entity.js b/install/ui/src/freeipa/entity.js index 22efd47a..eef58d1a 100644 --- a/install/ui/src/freeipa/entity.js +++ b/install/ui/src/freeipa/entity.js @@ -217,6 +217,20 @@ exp.entity = IPA.entity = function(spec) { return that; }; + that.has_members = function() { + var members = that.metadata.attribute_members; + var has = false; + if (members) { + for (var member in members) { + if (members.hasOwnProperty(member)) { + has = true; + break; + } + } + } + return has; + }; + that.builder = spec.builder || IPA.entity_builder(that); that.entity_init = that.init; diff --git a/install/ui/src/freeipa/facet.js b/install/ui/src/freeipa/facet.js index 166203a9..37106e22 100644 --- a/install/ui/src/freeipa/facet.js +++ b/install/ui/src/freeipa/facet.js @@ -1082,7 +1082,6 @@ exp.table_facet = IPA.table_facet = function(spec, no_init) { that.pagination = spec.pagination === undefined ? true : spec.pagination; that.search_all_entries = spec.search_all_entries; - that.search_all_attributes = spec.search_all_attributes; that.sort_enabled = spec.sort_enabled === undefined ? true : spec.sort_enabled; that.selectable = spec.selectable === undefined ? true : spec.selectable; that.select_changed = IPA.observer(); @@ -1312,7 +1311,7 @@ exp.table_facet = IPA.table_facet = function(spec, no_init) { that.create_get_records_command = function(pkeys, on_success, on_error) { - var batch = IPA.batch_command({ + var batch = IPA.batch_command({ name: that.get_records_command_name(), on_success: on_success, on_error: on_error @@ -1324,10 +1323,13 @@ exp.table_facet = IPA.table_facet = function(spec, no_init) { var command = IPA.command({ entity: that.table.entity.name, method: 'show', - args: [ pkey ], - options: { all: true } + args: [pkey] }); + if (that.table.entity.has_members()) { + command.set_options({no_members: true}); + } + batch.add_command(command); } @@ -1353,7 +1355,6 @@ exp.table_facet = IPA.table_facet = function(spec, no_init) { label: entity.metadata.label, entity: entity, pagination: true, - search_all_attributes: that.search_all_attributes, scrollable: true, selectable: that.selectable && !that.read_only }); diff --git a/install/ui/src/freeipa/hbac.js b/install/ui/src/freeipa/hbac.js index dc29fad5..e977b4d2 100644 --- a/install/ui/src/freeipa/hbac.js +++ b/install/ui/src/freeipa/hbac.js @@ -44,7 +44,6 @@ var spec = { { $type: 'search', row_enabled_attribute: 'ipaenabledflag', - search_all_attributes: true, columns: [ 'cn', { diff --git a/install/ui/src/freeipa/search.js b/install/ui/src/freeipa/search.js index 03ec0b12..c2e678a3 100644 --- a/install/ui/src/freeipa/search.js +++ b/install/ui/src/freeipa/search.js @@ -239,10 +239,7 @@ IPA.search_facet = function(spec, no_init) { name: that.get_search_command_name(), entity: that.managed_entity.name, method: 'find', - args: args, - options: { - all: that.search_all_attributes - } + args: args }); if (that.pagination) { diff --git a/install/ui/src/freeipa/selinux.js b/install/ui/src/freeipa/selinux.js index 4eb5fbee..8a308b43 100644 --- a/install/ui/src/freeipa/selinux.js +++ b/install/ui/src/freeipa/selinux.js @@ -42,7 +42,6 @@ var spec = { { $type: 'search', row_enabled_attribute: 'ipaenabledflag', - search_all_attributes: true, columns: [ 'cn', 'ipaselinuxuser', -- cgit