summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2011-06-23 11:44:44 -0500
committerAdam Young <ayoung@redhat.com>2011-06-24 12:05:51 -0400
commit1717d638fc69d38ac5ed848847c7b01601c910dc (patch)
tree815e337b558d1cfe8723ad521780f1268016ea57
parent8a32bb3746802a29b2655e4ad2cbbba8481e1eaf (diff)
downloadfreeipa-1717d638fc69d38ac5ed848847c7b01601c910dc.tar.gz
freeipa-1717d638fc69d38ac5ed848847c7b01601c910dc.tar.xz
freeipa-1717d638fc69d38ac5ed848847c7b01601c910dc.zip
Added record count into association facet tabs.
The details and association facets have been modified to show the number of records in each association in the corresponding facet tab. Ticket #1386
-rw-r--r--install/ui/association.js50
-rw-r--r--install/ui/details.js36
-rw-r--r--install/ui/entity.js59
-rw-r--r--install/ui/ipa.css4
-rw-r--r--install/ui/search.js10
5 files changed, 88 insertions, 71 deletions
diff --git a/install/ui/association.js b/install/ui/association.js
index ad8d84795..54a8f6ae2 100644
--- a/install/ui/association.js
+++ b/install/ui/association.js
@@ -1011,7 +1011,7 @@ IPA.association_facet = function (spec) {
that.table.current_page_input.val(that.table.current_page);
that.table.total_pages_span.text(that.table.total_pages);
- var pkeys = that.record[that.get_attribute_name()];
+ var pkeys = that.data[that.get_attribute_name()];
if (!pkeys || !pkeys.length) {
that.table.empty();
that.table.summary.text('No entries.');
@@ -1087,6 +1087,22 @@ IPA.association_facet = function (spec) {
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;
+ }
+
+ that.table.current_page = 1;
+
+ that.table.refresh();
+ };
+
that.refresh = function() {
if (that.association_type == 'direct') {
@@ -1099,31 +1115,21 @@ IPA.association_facet = function (spec) {
if (that.remove_button) that.remove_button.css('display', 'none');
}
- function on_success(data, text_status, xhr) {
- that.record = data.result.result;
-
- that.table.current_page = 1;
-
- var pkeys = that.record[that.get_attribute_name()];
- if (pkeys) {
- that.table.total_pages =
- Math.ceil(pkeys.length / that.table.page_length);
- } else {
- that.table.total_pages = 1;
- }
-
- that.table.refresh();
- }
-
var pkey = IPA.get_entity(that.entity_name).get_primary_key();
- IPA.command({
+ var command = IPA.command({
entity: that.entity_name,
method: 'show',
- args: pkey,
- on_success: on_success,
- on_error: that.on_error
- }).execute();
+ args: pkey
+ });
+
+ command.on_success = function(data, text_status, xhr) {
+ that.load(data.result.result);
+ };
+
+ command.on_error = that.on_error;
+
+ command.execute();
};
that.association_facet_init = that.init;
diff --git a/install/ui/details.js b/install/ui/details.js
index 2db80fbaa..3b73e5b49 100644
--- a/install/ui/details.js
+++ b/install/ui/details.js
@@ -321,14 +321,14 @@ IPA.details_facet = function(spec) {
var pkey = IPA.get_entity(that.entity_name).get_primary_key_prefix();
- if (from_url){
+ if (from_url) {
pkey.push(that.pkey);
- }else{
+ } else {
var pkey_name = IPA.metadata.objects[that.entity_name].primary_key;
- var pkey_val = that.record[pkey_name];
- if (pkey_val instanceof Array){
- pkey.push( pkey_val[0]);
- }else{
+ var pkey_val = that.data[pkey_name];
+ if (pkey_val instanceof Array) {
+ pkey.push(pkey_val[0]);
+ } else {
pkey.push(pkey_val);
}
}
@@ -528,12 +528,13 @@ IPA.details_facet = function(spec) {
return false;
};
- that.load = function(record) {
- that.record = record;
+ that.load = function(data) {
+ that.facet_load(data);
+
var sections = that.sections.values;
for (var i=0; i<sections.length; i++) {
var section = sections[i];
- section.load(record);
+ section.load(data);
}
};
@@ -640,20 +641,15 @@ IPA.details_facet = function(spec) {
options: { all: true, rights: true }
});
- if (IPA.details_refresh_devel_hook){
- IPA.details_refresh_devel_hook(that.entity_name,command,that.pkey);
+ if (IPA.details_refresh_devel_hook) {
+ IPA.details_refresh_devel_hook(that.entity_name, command, that.pkey);
}
- if (that.pkey){
+ if (that.pkey) {
command.args = that.get_primary_key(true);
- }else if (that.entity.redirect_facet) {
- var current_entity = that.entity;
- while (current_entity.containing_entity){
- current_entity = current_entity.containing_entity;
- }
- IPA.nav.show_page(
- current_entity.name,
- that.entity.redirect_facet);
+
+ } else if (that.entity.redirect_facet) {
+ that.redirect();
return;
}
diff --git a/install/ui/entity.js b/install/ui/entity.js
index 6a1cde38d..b24a874e6 100644
--- a/install/ui/entity.js
+++ b/install/ui/entity.js
@@ -123,7 +123,9 @@ IPA.facet = function (spec) {
that.container.css('display', 'none');
};
- that.load = function() {
+ that.load = function(data) {
+ that.data = data;
+ that.header.load(data);
};
that.is_dirty = function() {
@@ -140,13 +142,14 @@ IPA.facet = function (spec) {
details.append('<p>'+error_thrown.message+'</p>');
};
- that.redirect_on_error = function(){
- var current_entity = that.entity;
- while (current_entity.containing_entity){
- current_entity = current_entity.containing_entity;
+ that.redirect = function() {
+ var entity = that.entity;
+ while (entity.containing_entity) {
+ entity = entity.containing_entity;
}
+
IPA.nav.show_page(
- current_entity.name,
+ entity.name,
that.entity.redirect_facet);
};
@@ -157,11 +160,10 @@ IPA.facet = function (spec) {
/*If the error is in talking to the server, don't attempt to redirect,
as there is nothing any other facet can do either. */
- if (that.entity.redirect_facet )
- {
- for (var i =0; i < redirect_errors.length; i += 1){
- if (error_thrown.name === redirect_errors[i]){
- that.redirect_on_error();
+ if (that.entity.redirect_facet) {
+ for (var i=0; i<redirect_errors.length; i++) {
+ if (error_thrown.name === redirect_errors[i]) {
+ that.redirect();
return;
}
}
@@ -178,6 +180,7 @@ IPA.facet = function (spec) {
that.facet_setup = that.setup;
that.facet_show = that.show;
that.facet_hide = that.hide;
+ that.facet_load = that.load;
return that;
};
@@ -251,6 +254,7 @@ IPA.facet_header = function(spec) {
that.create_facet_link = function(container, other_facet) {
var li = $('<li/>', {
+ name: other_facet.name,
title: other_facet.name,
click: function() {
if (li.hasClass('entity-facet-disabled')) {
@@ -273,11 +277,12 @@ IPA.facet_header = function(spec) {
that.create_facet_group = function(container, facet_group) {
var section = $('<span/>', {
+ name: facet_group.name,
'class': 'facet-group'
}).appendTo(container);
$('<div/>', {
- 'class': 'facet-group-name',
+ 'class': 'facet-group-label',
text: facet_group.label
}).appendTo(section);
@@ -308,12 +313,7 @@ IPA.facet_header = function(spec) {
$('<a/>', {
text: that.facet.back_link_text,
click: function() {
- var current_entity = that.facet.entity;
- while(current_entity.containing_entity){
- current_entity = current_entity.containing_entity;
- }
-
- IPA.nav.show_page(current_entity.name, 'search');
+ that.facet.redirect();
return false;
}
}).appendTo(that.back_link);
@@ -347,6 +347,29 @@ IPA.facet_header = function(spec) {
}
};
+ that.load = function(data) {
+ if (!that.facet.disable_facet_tabs) {
+ var facet_groups = that.facet.entity.facet_groups.values;
+ for (var i=0; i<facet_groups.length; i++) {
+ var facet_group = facet_groups[i];
+ var span = $('.facet-group[name='+facet_group.name+']', that.facet_tabs);
+
+ var facets = facet_group.facets.values;
+ for (var j=0; j<facets.length; j++) {
+ var facet = facets[j];
+ var link = $('li[name='+facet.name+'] a', span);
+
+ var values = data[facet.name];
+ if (values) {
+ link.text(facet.label+' ('+values.length+')');
+ } else {
+ link.text(facet.label);
+ }
+ }
+ }
+ }
+ };
+
return that;
};
diff --git a/install/ui/ipa.css b/install/ui/ipa.css
index b9801b8c9..b2a9ffe0c 100644
--- a/install/ui/ipa.css
+++ b/install/ui/ipa.css
@@ -489,7 +489,7 @@ div.tabs {
height: 100%;
}
-.facet-group-name {
+.facet-group-label {
height: 20px;
}
@@ -504,7 +504,7 @@ div.tabs {
.facet-tab li {
display: inline-block;
position: relative;
- padding-right: 5px;
+ padding-right: 1px;
}
.facet-tab li a {
diff --git a/install/ui/search.js b/install/ui/search.js
index 33f6b8bb6..382e26bc5 100644
--- a/install/ui/search.js
+++ b/install/ui/search.js
@@ -361,15 +361,7 @@ IPA.nested_search_facet = function(spec) {
var pkey = $.bbq.getState(that.entity.name+'-pkey');
if ((!pkey) && (that.entity.redirect_facet)) {
-
- var current_entity = that.entity;
- while (current_entity.containing_entity){
- current_entity = current_entity.containing_entity;
- }
-
- IPA.nav.show_page(
- current_entity.name,
- that.entity.redirect_facet);
+ that.redirect();
return;
}