From a5918fbd136d1b597e30629f66a3d69d567737f3 Mon Sep 17 00:00:00 2001
From: Pavel Vomacka <pvomacka@redhat.com>
Date: Fri, 26 Aug 2016 12:50:00 +0200
Subject: [PATCH] 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>
---
install/ui/src/freeipa/facet.js | 49 ++++++++++++++++++++++++++++++++++++++++-
1 file changed, 48 insertions(+), 1 deletion(-)
diff --git a/install/ui/src/freeipa/facet.js b/install/ui/src/freeipa/facet.js
index 4553c5c65e6c334ed451e9c2f1a89ddc455d71c3..06eca189fa2c7b125fdfbd964e6192ddf709b2c8 100644
--- a/install/ui/src/freeipa/facet.js
+++ b/install/ui/src/freeipa/facet.js
@@ -1819,6 +1819,15 @@ exp.table_facet = IPA.table_facet = function(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
* @property {entity.entity}
*/
@@ -2268,6 +2277,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.
*
@@ -2279,6 +2320,12 @@ exp.table_facet = IPA.table_facet = function(spec, no_init) {
*/
that.on_column_link_click = function(value, entity) {
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
var containing_entity = entity.get_containing_entity();
@@ -2287,7 +2334,7 @@ exp.table_facet = IPA.table_facet = function(spec, no_init) {
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;
};
--
2.7.4