Add support for additional options taken from table facet

Sometimes the entity_show command must be called with options which are gathered
from result of entity_find command. These options needs to be passed as
arguments in URL which points to details page.

This functionality is implemented to table facet. There is new property
'additional_navigation_arguments' which is prepared for array of attributes
which will be passed to URL.

Part of: https://fedorahosted.org/freeipa/ticket/6238

Reviewed-By: Petr Vobornik <pvoborni@redhat.com>
This commit is contained in:
Pavel Vomacka
2016-08-26 12:50:00 +02:00
committed by Martin Babinsky
parent 37f3ad8867
commit 40f923f56b

View File

@@ -1818,6 +1818,15 @@ exp.table_facet = IPA.table_facet = function(spec, no_init) {
var that = IPA.facet(spec, no_init); var that = IPA.facet(spec, no_init);
/**
* Names of additional row attributes which will be send to another facet
* during navigation as URL parameters.
*
* @property {Array<string>}
*/
that.additional_navigation_arguments = spec.additional_navigation_arguments;
/** /**
* Entity of data displayed in the table * Entity of data displayed in the table
* @property {entity.entity} * @property {entity.entity}
@@ -2267,6 +2276,38 @@ exp.table_facet = IPA.table_facet = function(spec, no_init) {
}; };
/**
* Extract data from command response and return them.
*
* @param pkey {string} primary key of row which is chosen
* @param attrs {Array} names of attributes which will be extracted
*/
that.get_row_attribute_values = function(key, attrs) {
var result = that.data.result.result;
var options = {};
var row;
if (result) {
for (var i=0, l=result.length; i<l; i++) {
row = result[i];
var pkey = row[that.table.name];
if (pkey == key) break;
}
if (row) {
for (var j=0, le=attrs.length; j<le; j++) {
var attr = attrs[j];
var new_attr = {};
new_attr[attr] = row[attr];
$.extend(options, new_attr);
}
}
}
return options;
};
/** /**
* *
* Method which will be called after clicking on pkey in table. * Method which will be called after clicking on pkey in table.
@@ -2279,6 +2320,12 @@ exp.table_facet = IPA.table_facet = function(spec, no_init) {
*/ */
that.on_column_link_click = function(value, entity) { that.on_column_link_click = function(value, entity) {
var pkeys = [value]; var pkeys = [value];
var args;
var attributes = that.additional_navigation_arguments;
if (lang.isArray(attributes)) {
args = that.get_row_attribute_values(value, attributes);
}
// for nested entities // for nested entities
var containing_entity = entity.get_containing_entity(); var containing_entity = entity.get_containing_entity();
@@ -2287,7 +2334,7 @@ exp.table_facet = IPA.table_facet = function(spec, no_init) {
pkeys.push(value); pkeys.push(value);
} }
navigation.show_entity(entity.name, that.details_facet_name, pkeys); navigation.show_entity(entity.name, that.details_facet_name, pkeys, args);
return false; return false;
}; };