diff options
-rw-r--r-- | install/ui/src/freeipa/entity.js | 13 | ||||
-rw-r--r-- | install/ui/src/freeipa/facet.js | 32 |
2 files changed, 39 insertions, 6 deletions
diff --git a/install/ui/src/freeipa/entity.js b/install/ui/src/freeipa/entity.js index 1b9cae7b7..61698e859 100644 --- a/install/ui/src/freeipa/entity.js +++ b/install/ui/src/freeipa/entity.js @@ -323,7 +323,7 @@ exp.entity = IPA.entity = function(spec) { */ that.get_facet = function(name) { - var i, l, facets; + var i, l, facets, facet; //build all facets on the first time if(!that.facets_created) { @@ -331,7 +331,7 @@ exp.entity = IPA.entity = function(spec) { var facet_specs = that.facet_specs; for (i=0,l=facet_specs.length; i<l; i++) { var type_name = that.create_facet_type(facet_specs[i].name); - var facet = reg.facet.get(type_name); + facet = reg.facet.get(type_name); that.add_facet(facet); if (facet.name === 'search') { that.add_redirect_info(facet.name); @@ -358,7 +358,14 @@ exp.entity = IPA.entity = function(spec) { return that.facets.values[0]; } - return that.facets.get(name); + + facet = that.facets.get(name); + // maybe the facet is in central facet registry + if (!facet) { + facet = reg.facet.get(that.create_facet_type(name)); + } + + return facet; }; /** diff --git a/install/ui/src/freeipa/facet.js b/install/ui/src/freeipa/facet.js index 42949215d..74c13353f 100644 --- a/install/ui/src/freeipa/facet.js +++ b/install/ui/src/freeipa/facet.js @@ -284,6 +284,17 @@ exp.facet = IPA.facet = function(spec, no_init) { that.dom_node = null; /** + * Facet groups + * + * Entity facet groups are used if not defined + * + * @property {IPA.facet_group[]} + */ + that.facet_groups = builder.build('', spec.facet_groups, {}, { + $factory: IPA.facet_group + }); + + /** * Facet group name * @property {string} */ @@ -1280,12 +1291,27 @@ exp.facet_header = IPA.facet_header = function(spec) { var facets = facet_group.facets.values; for (var i=0; i<facets.length; i++) { - var facet = facets[i]; + var facet = reg.facet.get(facets[i]); that.create_facet_link(ul, facet); } }; /** + * Get facet groups for current facet. + * + * By default facet groups are defined in entity. In certain circumstances + * it could be overridden, i.e., if different facet contained in the facet + * groups uses different entity. + * @return {Array} Array of facet groups + */ + that.get_facet_groups = function() { + if (that.facet.facet_groups) { + return that.facet.facet_groups; + } + return that.facet.entity.facet_groups.values; + }; + + /** * Create header's HTML * @param {jQuery} container */ @@ -1308,7 +1334,7 @@ exp.facet_header = IPA.facet_header = function(spec) { 'class': 'facet-tabs' }).appendTo(container); - var facet_groups = that.facet.entity.facet_groups.values; + var facet_groups = that.get_facet_groups(); for (var i=0; i<facet_groups.length; i++) { var facet_group = facet_groups[i]; if (facet_group.facets.length) { @@ -2080,7 +2106,7 @@ exp.facet_group = IPA.facet_group = function(spec) { * Facet collection * @property {ordered_map} */ - that.facets = $.ordered_map(); + that.facets = $.ordered_map(spec.facets); /** * Add facet to the map |