entry : procNode.getProperties().entrySet()) {
final PropertyDescriptor descriptor = entry.getKey();
- addIfAppropriate(searchStr, descriptor.getName(), "Property", matches);
- addIfAppropriate(searchStr, descriptor.getDescription(), "Property", matches);
+ addIfAppropriate(searchStr, descriptor.getName(), "Property name", matches);
+ addIfAppropriate(searchStr, descriptor.getDescription(), "Property description", matches);
// never include sensitive properties values in search results
if (descriptor.isSensitive()) {
continue;
}
- final String value = entry.getValue();
+ String value = entry.getValue();
+
+ // if unset consider default value
+ if (value == null) {
+ value = descriptor.getDefaultValue();
+ }
+
+ // evaluate if the value matches the search criteria
if (StringUtils.containsIgnoreCase(value, searchStr)) {
- matches.add("Property: " + descriptor.getName() + " - " + value);
+ matches.add("Property value: " + descriptor.getName() + " - " + value);
}
}
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-docs/pom.xml b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-docs/pom.xml
index 00bad751cb..252c75cafb 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-docs/pom.xml
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-docs/pom.xml
@@ -17,7 +17,7 @@
org.apache.nifi
nifi-web
- 0.0.1-incubating-SNAPSHOT
+ 0.0.2-incubating-SNAPSHOT
org.apache.nifi
nifi-web-docs
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/pom.xml b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/pom.xml
index 7c7f518f90..6a77bd28c3 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/pom.xml
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-error/pom.xml
@@ -17,7 +17,7 @@
org.apache.nifi
nifi-web
- 0.0.1-incubating-SNAPSHOT
+ 0.0.2-incubating-SNAPSHOT
org.apache.nifi
nifi-web-error
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/pom.xml b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/pom.xml
index 4a263cc8b6..0857d6f8de 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/pom.xml
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-optimistic-locking/pom.xml
@@ -18,7 +18,7 @@
org.apache.nifi
nifi-web
- 0.0.1-incubating-SNAPSHOT
+ 0.0.2-incubating-SNAPSHOT
org.apache.nifi
nifi-web-optimistic-locking
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-security/pom.xml b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-security/pom.xml
index 3a7a2e52c1..9e5bab8025 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-security/pom.xml
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-security/pom.xml
@@ -18,7 +18,7 @@
org.apache.nifi
nifi-web
- 0.0.1-incubating-SNAPSHOT
+ 0.0.2-incubating-SNAPSHOT
org.apache.nifi
nifi-web-security
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
index d12b660346..202bfc1f34 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/pom.xml
@@ -18,7 +18,7 @@
org.apache.nifi
nifi-web
- 0.0.1-incubating-SNAPSHOT
+ 0.0.2-incubating-SNAPSHOT
nifi-web-ui
war
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/provenance.css b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/provenance.css
index 7877f697e1..751a647c26 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/provenance.css
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/provenance.css
@@ -453,6 +453,11 @@ div.content-detail-value {
#provenance-percent-complete, #lineage-percent-complete {
width: 378px;
+ border-radius: 0;
+}
+
+#provenance-percent-complete .ui-progressbar-value, #lineage-percent-complete .ui-progressbar-value {
+ border-radius: 0;
}
div.progress-label {
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster-table.js b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster-table.js
index 13b0e5f24c..29689190a7 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster-table.js
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/cluster/nf-cluster-table.js
@@ -109,6 +109,22 @@ nf.ClusterTable = (function () {
return nf.Common.escapeHtml(node.address) + ':' + nf.Common.escapeHtml(node.apiPort);
};
+ /**
+ * Prompts to verify node connection.
+ *
+ * @argument {object} node The node
+ */
+ var promptForConnect = function (node) {
+ // prompt to connect
+ nf.Dialog.showYesNoDialog({
+ dialogContent: 'Connect \'' + formatNodeAddress(node) + '\' to this cluster?',
+ overlayBackground: false,
+ yesHandler: function () {
+ connect(node.nodeId);
+ }
+ });
+ };
+
/**
* Connects the node in the specified row.
*
@@ -132,6 +148,22 @@ nf.ClusterTable = (function () {
}).fail(nf.Common.handleAjaxError);
};
+ /**
+ * Prompts to verify node disconnection.
+ *
+ * @argument {object} node The node
+ */
+ var promptForDisconnect = function (node) {
+ // prompt for disconnect
+ nf.Dialog.showYesNoDialog({
+ dialogContent: 'Disconnect \'' + formatNodeAddress(node) + '\' from the cluster?',
+ overlayBackground: false,
+ yesHandler: function () {
+ disconnect(node.nodeId);
+ }
+ });
+ };
+
/**
* Disconnects the node in the specified row.
*
@@ -155,6 +187,22 @@ nf.ClusterTable = (function () {
}).fail(nf.Common.handleAjaxError);
};
+ /**
+ * Prompts to verify node disconnection.
+ *
+ * @argument {object} node The node
+ */
+ var promptForRemoval = function (node) {
+ // prompt for disconnect
+ nf.Dialog.showYesNoDialog({
+ dialogContent: 'Remove \'' + formatNodeAddress(node) + '\' from the cluster?',
+ overlayBackground: false,
+ yesHandler: function () {
+ remove(node.nodeId);
+ }
+ });
+ };
+
/**
* Disconnects the node in the specified row.
*
@@ -230,6 +278,86 @@ nf.ClusterTable = (function () {
// perform the filter
return item[args.property].search(filterExp) >= 0;
};
+
+ /**
+ * Show the node details.
+ *
+ * @argument {object} item The item
+ */
+ var showNodeDetails = function (item) {
+ $.ajax({
+ type: 'GET',
+ url: config.urls.nodes + '/' + encodeURIComponent(item.nodeId),
+ dataType: 'json'
+ }).done(function (response) {
+ var node = response.node;
+
+ // update the dialog fields
+ $('#node-id').text(node.nodeId);
+ $('#node-address').text(formatNodeAddress(node));
+
+ // format the events
+ var events = $('#node-events');
+ if ($.isArray(node.events) && node.events.length > 0) {
+ var eventMessages = [];
+ $.each(node.events, function (i, event) {
+ eventMessages.push(event.timestamp + ": " + event.message);
+ });
+ $('').append(nf.Common.formatUnorderedList(eventMessages)).appendTo(events);
+ } else {
+ events.append('None
');
+ }
+
+ // show the dialog
+ $('#node-details-dialog').modal('show');
+ }).fail(nf.Common.handleAjaxError);
+ };
+
+ /**
+ * Makes the specified node the primary node of the cluster.
+ *
+ * @argument {object} item The node item
+ */
+ var makePrimary = function (item) {
+ $.ajax({
+ type: 'PUT',
+ url: config.urls.nodes + '/' + encodeURIComponent(item.nodeId),
+ data: {
+ primary: true
+ },
+ dataType: 'json'
+ }).done(function (response) {
+ var grid = $('#cluster-table').data('gridInstance');
+ var data = grid.getData();
+
+ var node = response.node;
+
+ // start the update
+ data.beginUpdate();
+ data.updateItem(node.nodeId, node);
+
+ // need to find the previous primary node
+ // get the property grid data
+ var clusterItems = data.getItems();
+ $.each(clusterItems, function (i, otherNode) {
+ // attempt to identify the previous primary node
+ if (node.nodeId !== otherNode.nodeId && otherNode.primary === true) {
+ // reset its primary status
+ otherNode.primary = false;
+ otherNode.status = 'CONNECTED';
+
+ // set the new node state
+ data.updateItem(otherNode.nodeId, otherNode);
+
+ // no need to continue processing
+ return false;
+ }
+ });
+
+ // end the update
+ data.endUpdate();
+ }).fail(nf.Common.handleAjaxError);
+ };
return {
/**
@@ -292,7 +420,7 @@ nf.ClusterTable = (function () {
// define a custom formatter for the more details column
var moreDetailsFormatter = function (row, cell, value, columnDef, dataContext) {
- return '';
+ return '';
};
// define a custom formatter for the run status column
@@ -348,11 +476,11 @@ nf.ClusterTable = (function () {
// return the appropriate markup
if (canConnect) {
- return ' ';
+ return ' ';
} else if (canDisconnect) {
- var actions = '';
+ var actions = '';
if (canBecomePrimary) {
- actions += ' ';
+ actions += ' ';
}
return actions;
} else {
@@ -360,7 +488,7 @@ nf.ClusterTable = (function () {
}
};
- columnModel.push({id: 'action', label: ' ', formatter: actionFormatter, resizable: false, sortable: false, width: 80, maxWidth: 80});
+ columnModel.push({id: 'actions', label: ' ', formatter: actionFormatter, resizable: false, sortable: false, width: 80, maxWidth: 80});
}
var clusterOptions = {
@@ -398,6 +526,31 @@ nf.ClusterTable = (function () {
sortAsc: args.sortAsc
}, clusterData);
});
+
+ // configure a click listener
+ clusterGrid.onClick.subscribe(function (e, args) {
+ var target = $(e.target);
+
+ // get the node at this row
+ var item = clusterData.getItem(args.row);
+
+ // determine the desired action
+ if (clusterGrid.getColumns()[args.cell].id === 'actions') {
+ if (target.hasClass('prompt-for-connect')) {
+ promptForConnect(item);
+ } else if (target.hasClass('prompt-for-removal')) {
+ promptForRemoval(item);
+ } else if (target.hasClass('prompt-for-disconnect')) {
+ promptForDisconnect(item);
+ } else if (target.hasClass('make-primary')) {
+ makePrimary(item);
+ }
+ } else if (clusterGrid.getColumns()[args.cell].id === 'moreDetails') {
+ if (target.hasClass('show-node-details')) {
+ showNodeDetails(item);
+ }
+ }
+ });
// wire up the dataview to the grid
clusterData.onRowCountChanged.subscribe(function (e, args) {
@@ -419,122 +572,6 @@ nf.ClusterTable = (function () {
$('#displayed-nodes').text('0');
},
- /**
- * Prompts to verify node connection.
- *
- * @argument {string} row The row
- */
- promptForConnect: function (row) {
- var grid = $('#cluster-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var node = data.getItem(row);
-
- // prompt to connect
- nf.Dialog.showYesNoDialog({
- dialogContent: 'Connect \'' + formatNodeAddress(node) + '\' to this cluster?',
- overlayBackground: false,
- yesHandler: function () {
- connect(node.nodeId);
- }
- });
- }
-
- },
-
- /**
- * Prompts to verify node disconnection.
- *
- * @argument {string} row The row
- */
- promptForDisconnect: function (row) {
- var grid = $('#cluster-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var node = data.getItem(row);
-
- // prompt for disconnect
- nf.Dialog.showYesNoDialog({
- dialogContent: 'Disconnect \'' + formatNodeAddress(node) + '\' from the cluster?',
- overlayBackground: false,
- yesHandler: function () {
- disconnect(node.nodeId);
- }
- });
- }
- },
-
- /**
- * Makes the specified node the primary node of the cluster.
- *
- * @argument {string} row The row
- */
- makePrimary: function (row) {
- var grid = $('#cluster-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- $.ajax({
- type: 'PUT',
- url: config.urls.nodes + '/' + encodeURIComponent(item.nodeId),
- data: {
- primary: true
- },
- dataType: 'json'
- }).done(function (response) {
- var node = response.node;
-
- // start the update
- data.beginUpdate();
- data.updateItem(node.nodeId, node);
-
- // need to find the previous primary node
- // get the property grid data
- var clusterItems = data.getItems();
- $.each(clusterItems, function (i, otherNode) {
- // attempt to identify the previous primary node
- if (node.nodeId !== otherNode.nodeId && otherNode.primary === true) {
- // reset its primary status
- otherNode.primary = false;
- otherNode.status = 'CONNECTED';
-
- // set the new node state
- data.updateItem(otherNode.nodeId, otherNode);
-
- // no need to continue processing
- return false;
- }
- });
-
- // end the update
- data.endUpdate();
- }).fail(nf.Common.handleAjaxError);
- }
- },
-
- /**
- * Prompts to verify node disconnection.
- *
- * @argument {string} row The row
- */
- promptForRemoval: function (row) {
- var grid = $('#cluster-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var node = data.getItem(row);
-
- // prompt for disconnect
- nf.Dialog.showYesNoDialog({
- dialogContent: 'Remove \'' + formatNodeAddress(node) + '\' from the cluster?',
- overlayBackground: false,
- yesHandler: function () {
- remove(node.nodeId);
- }
- });
- }
- },
-
/**
* Update the size of the grid based on its container's current size.
*/
@@ -575,46 +612,6 @@ nf.ClusterTable = (function () {
$('#total-nodes').text('0');
}
}).fail(nf.Common.handleAjaxError);
- },
-
- /**
- * Populate the expanded row.
- *
- * @argument {string} row The row
- */
- showNodeDetails: function (row) {
- var grid = $('#cluster-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- $.ajax({
- type: 'GET',
- url: config.urls.nodes + '/' + encodeURIComponent(item.nodeId),
- dataType: 'json'
- }).done(function (response) {
- var node = response.node;
-
- // update the dialog fields
- $('#node-id').text(node.nodeId);
- $('#node-address').text(formatNodeAddress(node));
-
- // format the events
- var events = $('#node-events');
- if ($.isArray(node.events) && node.events.length > 0) {
- var eventMessages = [];
- $.each(node.events, function (i, event) {
- eventMessages.push(event.timestamp + ": " + event.message);
- });
- $('').append(nf.Common.formatUnorderedList(eventMessages)).appendTo(events);
- } else {
- events.append('None
');
- }
-
- // show the dialog
- $('#node-details-dialog').modal('show');
- }).fail(nf.Common.handleAjaxError);
- }
}
};
}());
\ No newline at end of file
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters-table.js b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters-table.js
index 536ffdbcf3..2b26aaa12e 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters-table.js
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/counters/nf-counters-table.js
@@ -110,6 +110,26 @@ nf.CountersTable = (function () {
// perform the filter
return item[args.property].search(filterExp) >= 0;
};
+
+ /**
+ * Resets the specified counter.
+ *
+ * @argument {object} item The counter item
+ */
+ var resetCounter = function (item) {
+ $.ajax({
+ type: 'PUT',
+ url: config.urls.counters + '/' + encodeURIComponent(item.id),
+ dataType: 'json'
+ }).done(function (response) {
+ var counter = response.counter;
+
+ // get the table and update the row accordingly
+ var countersGrid = $('#counters-table').data('gridInstance');
+ var countersData = countersGrid.getData();
+ countersData.updateItem(counter.id, counter);
+ }).fail(nf.Common.handleAjaxError);
+ };
return {
/**
@@ -159,7 +179,7 @@ nf.CountersTable = (function () {
if (nf.Common.isDFM()) {
// function for formatting the actions column
var actionFormatter = function (row, cell, value, columnDef, dataContext) {
- return '';
+ return '';
};
// add the action column
@@ -202,6 +222,21 @@ nf.CountersTable = (function () {
sortAsc: args.sortAsc
}, countersData);
});
+
+ // configure a click listener
+ countersGrid.onClick.subscribe(function (e, args) {
+ var target = $(e.target);
+
+ // get the node at this row
+ var item = countersData.getItem(args.row);
+
+ // determine the desired action
+ if (countersGrid.getColumns()[args.cell].id === 'actions') {
+ if (target.hasClass('reset-counter')) {
+ resetCounter(item);
+ }
+ }
+ });
// wire up the dataview to the grid
countersData.onRowCountChanged.subscribe(function (e, args) {
@@ -223,32 +258,6 @@ nf.CountersTable = (function () {
$('#displayed-counters').text('0');
},
- /**
- * Resets the specified counter.
- *
- * @argument {string} row The row
- */
- resetCounter: function (row) {
- var grid = $('#counters-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- $.ajax({
- type: 'PUT',
- url: config.urls.counters + '/' + encodeURIComponent(item.id),
- dataType: 'json'
- }).done(function (response) {
- var counter = response.counter;
-
- // get the table and update the row accordingly
- var countersGrid = $('#counters-table').data('gridInstance');
- var countersData = countersGrid.getData();
- countersData.updateItem(counter.id, counter);
- }).fail(nf.Common.handleAjaxError);
- }
- },
-
/**
* Update the size of the grid based on its container's current size.
*/
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-table.js b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-table.js
index be0ea73bc1..72fc549a72 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-table.js
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/history/nf-history-table.js
@@ -244,7 +244,7 @@ nf.HistoryTable = (function () {
// define a custom formatter for the more details column
var moreDetailsFormatter = function (row, cell, value, columnDef, dataContext) {
- return '';
+ return '';
};
// initialize the templates table
@@ -283,6 +283,21 @@ nf.HistoryTable = (function () {
});
historyGrid.setSortColumn('timestamp', false);
+ // configure a click listener
+ historyGrid.onClick.subscribe(function (e, args) {
+ var target = $(e.target);
+
+ // get the node at this row
+ var item = historyModel.getItem(args.row);
+
+ // determine the desired action
+ if (historyGrid.getColumns()[args.cell].id === 'moreDetails') {
+ if (target.hasClass('show-action-details')) {
+ showActionDetails(item);
+ }
+ }
+ });
+
// listen for when the viewport changes so we can fetch the appropriate records
historyGrid.onViewportChanged.subscribe(function (e, args) {
var vp = historyGrid.getViewport();
@@ -325,6 +340,68 @@ nf.HistoryTable = (function () {
nf.HistoryTable.loadHistoryTable();
}).fail(nf.Common.handleAjaxError);
};
+
+ /**
+ * Shows the details for the specified action.
+ *
+ * @param {object} action
+ */
+ var showActionDetails = function (action) {
+ // create the markup for the dialog
+ var detailsMarkup = $('').append(
+ $('Id
' + nf.Common.escapeHtml(action.sourceId) + '
'));
+
+ // get any component details
+ var componentDetails = action.componentDetails;
+
+ // inspect the operation to determine if there are any component details
+ if (nf.Common.isDefinedAndNotNull(componentDetails)) {
+ if (action.sourceType === 'Processor') {
+ detailsMarkup.append(
+ $('Type
' + nf.Common.escapeHtml(componentDetails.type) + '
'));
+ } else if (action.sourceType === 'RemoteProcessGroup') {
+ detailsMarkup.append(
+ $('Uri
' + nf.Common.formatValue(componentDetails.uri) + '
'));
+ }
+ }
+
+ // get any action details
+ var actionDetails = action.actionDetails;
+
+ // inspect the operation to determine if there are any action details
+ if (nf.Common.isDefinedAndNotNull(actionDetails)) {
+ if (action.operation === 'Configure') {
+ detailsMarkup.append(
+ $('Name
' + nf.Common.formatValue(actionDetails.name) + '
')).append(
+ $('Value
' + nf.Common.formatValue(actionDetails.value) + '
')).append(
+ $('Previous Value
' + nf.Common.formatValue(actionDetails.previousValue) + '
'));
+ } else if (action.operation === 'Connect' || action.operation === 'Disconnect') {
+ detailsMarkup.append(
+ $('Source Id
' + nf.Common.escapeHtml(actionDetails.sourceId) + '
')).append(
+ $('Source Name
' + nf.Common.formatValue(actionDetails.sourceName) + '
')).append(
+ $('Source Type
' + nf.Common.escapeHtml(actionDetails.sourceType) + '
')).append(
+ $('Relationship(s)
' + nf.Common.formatValue(actionDetails.relationship) + '
')).append(
+ $('Destination Id
' + nf.Common.escapeHtml(actionDetails.destinationId) + '
')).append(
+ $('Destination Name
' + nf.Common.formatValue(actionDetails.destinationName) + '
')).append(
+ $('Destination Type
' + nf.Common.escapeHtml(actionDetails.destinationType) + '
'));
+ } else if (action.operation === 'Move') {
+ detailsMarkup.append(
+ $('Group
' + nf.Common.formatValue(actionDetails.group) + '
')).append(
+ $('Group Id
' + nf.Common.escapeHtml(actionDetails.groupId) + '
')).append(
+ $('Previous Group
' + nf.Common.formatValue(actionDetails.previousGroup) + '
')).append(
+ $('Previous Group Id
' + nf.Common.escapeHtml(actionDetails.previousGroupId) + '
'));
+ } else if (action.operation === 'Purge') {
+ detailsMarkup.append(
+ $('End Date
' + nf.Common.escapeHtml(actionDetails.endDate) + '
'));
+ }
+ }
+
+ // populate the dialog
+ $('#action-details').append(detailsMarkup);
+
+ // show the dialog
+ $('#action-details-dialog').modal('show');
+ };
return {
init: function () {
@@ -356,74 +433,6 @@ nf.HistoryTable = (function () {
// request refresh of the current 'page'
historyGrid.onViewportChanged.notify();
- },
-
- /**
- * Shows the details for the specified action.
- *
- * @param {object} index
- */
- showActionDetails: function (index) {
- var historyGrid = $('#history-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(historyGrid)) {
- var historyModel = historyGrid.getData();
- var action = historyModel.getItem(index);
-
- // create the markup for the dialog
- var detailsMarkup = $('').append(
- $('Id
' + nf.Common.escapeHtml(action.sourceId) + '
'));
-
- // get any component details
- var componentDetails = action.componentDetails;
-
- // inspect the operation to determine if there are any component details
- if (nf.Common.isDefinedAndNotNull(componentDetails)) {
- if (action.sourceType === 'Processor') {
- detailsMarkup.append(
- $('Type
' + nf.Common.escapeHtml(componentDetails.type) + '
'));
- } else if (action.sourceType === 'RemoteProcessGroup') {
- detailsMarkup.append(
- $('Uri
' + nf.Common.formatValue(componentDetails.uri) + '
'));
- }
- }
-
- // get any action details
- var actionDetails = action.actionDetails;
-
- // inspect the operation to determine if there are any action details
- if (nf.Common.isDefinedAndNotNull(actionDetails)) {
- if (action.operation === 'Configure') {
- detailsMarkup.append(
- $('Name
' + nf.Common.formatValue(actionDetails.name) + '
')).append(
- $('Value
' + nf.Common.formatValue(actionDetails.value) + '
')).append(
- $('Previous Value
' + nf.Common.formatValue(actionDetails.previousValue) + '
'));
- } else if (action.operation === 'Connect' || action.operation === 'Disconnect') {
- detailsMarkup.append(
- $('Source Id
' + nf.Common.escapeHtml(actionDetails.sourceId) + '
')).append(
- $('Source Name
' + nf.Common.formatValue(actionDetails.sourceName) + '
')).append(
- $('Source Type
' + nf.Common.escapeHtml(actionDetails.sourceType) + '
')).append(
- $('Relationship(s)
' + nf.Common.formatValue(actionDetails.relationship) + '
')).append(
- $('Destination Id
' + nf.Common.escapeHtml(actionDetails.destinationId) + '
')).append(
- $('Destination Name
' + nf.Common.formatValue(actionDetails.destinationName) + '
')).append(
- $('Destination Type
' + nf.Common.escapeHtml(actionDetails.destinationType) + '
'));
- } else if (action.operation === 'Move') {
- detailsMarkup.append(
- $('Group
' + nf.Common.formatValue(actionDetails.group) + '
')).append(
- $('Group Id
' + nf.Common.escapeHtml(actionDetails.groupId) + '
')).append(
- $('Previous Group
' + nf.Common.formatValue(actionDetails.previousGroup) + '
')).append(
- $('Previous Group Id
' + nf.Common.escapeHtml(actionDetails.previousGroupId) + '
'));
- } else if (action.operation === 'Purge') {
- detailsMarkup.append(
- $('End Date
' + nf.Common.escapeHtml(actionDetails.endDate) + '
'));
- }
- }
-
- // populate the dialog
- $('#action-details').append(detailsMarkup);
-
- // show the dialog
- $('#action-details-dialog').modal('show');
- }
}
};
}());
\ No newline at end of file
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-table.js b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-table.js
index 759bcda0d1..28803757db 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-table.js
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/provenance/nf-provenance-table.js
@@ -553,7 +553,7 @@ nf.ProvenanceTable = (function () {
// define a custom formatter for the more details column
var moreDetailsFormatter = function (row, cell, value, columnDef, dataContext) {
- return '';
+ return '';
};
// define how general values are formatted
@@ -570,12 +570,12 @@ nf.ProvenanceTable = (function () {
// conditionally include the cluster node id
if (nf.Common.SUPPORTS_SVG) {
- markup += '';
+ markup += '';
}
// conditionally support going to the component
if (isInShell && nf.Common.isDefinedAndNotNull(dataContext.groupId)) {
- markup += ' ';
+ markup += ' ';
}
return markup;
@@ -599,7 +599,7 @@ nf.ProvenanceTable = (function () {
// conditionally show the action column
if (nf.Common.SUPPORTS_SVG || isInShell) {
- provenanceColumns.push({id: 'action', name: ' ', formatter: showLineageFormatter, resizable: false, sortable: false, width: 50, maxWidth: 50});
+ provenanceColumns.push({id: 'actions', name: ' ', formatter: showLineageFormatter, resizable: false, sortable: false, width: 50, maxWidth: 50});
}
var provenanceOptions = {
@@ -641,6 +641,27 @@ nf.ProvenanceTable = (function () {
sortAsc: args.sortAsc
}, provenanceData);
});
+
+ // configure a click listener
+ provenanceGrid.onClick.subscribe(function (e, args) {
+ var target = $(e.target);
+
+ // get the node at this row
+ var item = provenanceData.getItem(args.row);
+
+ // determine the desired action
+ if (provenanceGrid.getColumns()[args.cell].id === 'actions') {
+ if (target.hasClass('show-lineage')) {
+ nf.ProvenanceLineage.showLineage(item.flowFileUuid, item.eventId.toString(), item.clusterNodeId);
+ } else if (target.hasClass('go-to')) {
+ goTo(item);
+ }
+ } else if (provenanceGrid.getColumns()[args.cell].id === 'moreDetails') {
+ if (target.hasClass('show-event-details')) {
+ nf.ProvenanceTable.showEventDetails(item);
+ }
+ }
+ });
// wire up the dataview to the grid
provenanceData.onRowCountChanged.subscribe(function (e, args) {
@@ -884,6 +905,25 @@ nf.ProvenanceTable = (function () {
}
};
+ /**
+ * Goes to the specified component if possible.
+ *
+ * @argument {object} item The event it
+ */
+ var goTo = function (item) {
+ // ensure the component is still present in the flow
+ if (nf.Common.isDefinedAndNotNull(item.groupId)) {
+ // only attempt this if we're within a frame
+ if (top !== window) {
+ // and our parent has canvas utils and shell defined
+ if (nf.Common.isDefinedAndNotNull(parent.nf) && nf.Common.isDefinedAndNotNull(parent.nf.CanvasUtils) && nf.Common.isDefinedAndNotNull(parent.nf.Shell)) {
+ parent.nf.CanvasUtils.showComponent(item.groupId, item.componentId);
+ parent.$('#shell-close-button').click();
+ }
+ }
+ }
+ };
+
return {
/**
* The max delay between requests.
@@ -909,31 +949,6 @@ nf.ProvenanceTable = (function () {
}).fail(nf.Common.handleAjaxError);
},
- /**
- * Goes to the specified component if possible.
- *
- * @argument {string} row The row
- */
- goTo: function (row) {
- var grid = $('#provenance-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- // ensure the component is still present in the flow
- if (nf.Common.isDefinedAndNotNull(item.groupId)) {
- // only attempt this if we're within a frame
- if (top !== window) {
- // and our parent has canvas utils and shell defined
- if (nf.Common.isDefinedAndNotNull(parent.nf) && nf.Common.isDefinedAndNotNull(parent.nf.CanvasUtils) && nf.Common.isDefinedAndNotNull(parent.nf.Shell)) {
- parent.nf.CanvasUtils.showComponent(item.groupId, item.componentId);
- parent.$('#shell-close-button').click();
- }
- }
- }
- }
- },
-
/**
* Update the size of the grid based on its container's current size.
*/
@@ -1095,36 +1110,6 @@ nf.ProvenanceTable = (function () {
}).fail(closeDialog);
},
- /**
- * Shows the lineage for the event in the specified row.
- *
- * @param {type} row
- */
- showLineage: function (row) {
- var grid = $('#provenance-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
- nf.ProvenanceLineage.showLineage(item.flowFileUuid, item.eventId.toString(), item.clusterNodeId);
- }
- },
-
- /**
- * Gets the event details and shows the details dialog.
- *
- * @param {long} index
- */
- showEventDetailsByIndex: function (index) {
- var provenanceGrid = $('#provenance-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(provenanceGrid)) {
- var provenanceModel = provenanceGrid.getData();
- var event = provenanceModel.getItem(index);
-
- // show the event details
- nf.ProvenanceTable.showEventDetails(event);
- }
- },
-
/**
* Shows the details for the specified action.
*
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary-table.js b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary-table.js
index 969d7bf745..a4583bc6ea 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary-table.js
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary-table.js
@@ -263,7 +263,7 @@ nf.SummaryTable = (function () {
// define a custom formatter for showing more processor details
var moreProcessorDetails = function (row, cell, value, columnDef, dataContext) {
- var markup = '';
+ var markup = '';
// if there are bulletins, render them on the graph
if (!nf.Common.isEmpty(dataContext.bulletins)) {
@@ -333,26 +333,26 @@ nf.SummaryTable = (function () {
var markup = '';
if (isInShell) {
- markup += ' ';
+ markup += ' ';
}
if (nf.Common.SUPPORTS_SVG) {
if (isClustered) {
- markup += ' ';
+ markup += ' ';
} else {
- markup += ' ';
+ markup += ' ';
}
}
if (isClustered) {
- markup += ' ';
+ markup += ' ';
}
return markup;
};
// define the action column for clusters and within the shell
- processorsColumnModel.push({id: 'action', name: ' ', formatter: processorActionFormatter, resizable: false, sortable: false, width: 75, maxWidth: 75});
+ processorsColumnModel.push({id: 'actions', name: ' ', formatter: processorActionFormatter, resizable: false, sortable: false, width: 75, maxWidth: 75});
}
// initialize the templates table
@@ -394,6 +394,38 @@ nf.SummaryTable = (function () {
}, processorsData);
});
+ // configure a click listener
+ processorsGrid.onClick.subscribe(function (e, args) {
+ var target = $(e.target);
+
+ // get the node at this row
+ var item = processorsData.getItem(args.row);
+
+ // determine the desired action
+ if (processorsGrid.getColumns()[args.cell].id === 'actions') {
+ if (target.hasClass('go-to')) {
+ goTo(item.groupId, item.id);
+ } else if (target.hasClass('show-cluster-processor-status-history')) {
+ nf.StatusHistory.showClusterProcessorChart(item.groupId, item.id);
+ } else if (target.hasClass('show-processor-status-history')) {
+ nf.StatusHistory.showStandaloneProcessorChart(item.groupId, item.id);
+ } else if (target.hasClass('show-cluster-processor-summary')) {
+ // load the cluster processor summary
+ loadClusterProcessorSummary(item.id);
+
+ // hide the summary loading indicator
+ $('#summary-loading-container').hide();
+
+ // show the dialog
+ $('#cluster-processor-summary-dialog').modal('show');
+ }
+ } else if (processorsGrid.getColumns()[args.cell].id === 'moreDetails') {
+ if (target.hasClass('show-processor-details')) {
+ nf.ProcessorDetails.showDetails(item.groupId, item.id);
+ }
+ }
+ });
+
// wire up the dataview to the grid
processorsData.onRowCountChanged.subscribe(function (e, args) {
processorsGrid.updateRowCount();
@@ -464,6 +496,11 @@ nf.SummaryTable = (function () {
}
}
});
+
+ // cluster processor refresh
+ nf.Common.addHoverEffect('#cluster-processor-refresh-button', 'button-refresh', 'button-refresh-hover').click(function () {
+ loadClusterProcessorSummary($('#cluster-processor-id').text());
+ });
// initialize the cluster processor column model
var clusterProcessorsColumnModel = [
@@ -524,7 +561,7 @@ nf.SummaryTable = (function () {
// define a custom formatter for showing more processor details
var moreConnectionDetails = function (row, cell, value, columnDef, dataContext) {
- return '';
+ return '';
};
// define the input, read, written, and output columns (reused between both tables)
@@ -548,26 +585,26 @@ nf.SummaryTable = (function () {
var markup = '';
if (isInShell) {
- markup += ' ';
+ markup += ' ';
}
if (nf.Common.SUPPORTS_SVG) {
if (isClustered) {
- markup += ' ';
+ markup += ' ';
} else {
- markup += ' ';
+ markup += ' ';
}
}
if (isClustered) {
- markup += ' ';
+ markup += ' ';
}
return markup;
};
// define the action column for clusters and within the shell
- connectionsColumnModel.push({id: 'action', name: ' ', formatter: connectionActionFormatter, resizable: false, sortable: false, width: 75, maxWidth: 75});
+ connectionsColumnModel.push({id: 'actions', name: ' ', formatter: connectionActionFormatter, resizable: false, sortable: false, width: 75, maxWidth: 75});
}
// initialize the templates table
@@ -609,6 +646,38 @@ nf.SummaryTable = (function () {
}, connectionsData);
});
+ // configure a click listener
+ connectionsGrid.onClick.subscribe(function (e, args) {
+ var target = $(e.target);
+
+ // get the node at this row
+ var item = connectionsData.getItem(args.row);
+
+ // determine the desired action
+ if (connectionsGrid.getColumns()[args.cell].id === 'actions') {
+ if (target.hasClass('go-to')) {
+ goTo(item.groupId, item.id);
+ } else if (target.hasClass('show-cluster-connection-status-history')) {
+ nf.StatusHistory.showClusterConnectionChart(item.groupId, item.id);
+ } else if (target.hasClass('show-connection-status-history')) {
+ nf.StatusHistory.showStandaloneConnectionChart(item.groupId, item.id);
+ } else if (target.hasClass('show-cluster-connection-summary')) {
+ // load the cluster processor summary
+ loadClusterConnectionSummary(item.id);
+
+ // hide the summary loading indicator
+ $('#summary-loading-container').hide();
+
+ // show the dialog
+ $('#cluster-connection-summary-dialog').modal('show');
+ }
+ } else if (connectionsGrid.getColumns()[args.cell].id === 'moreDetails') {
+ if (target.hasClass('show-connection-details')) {
+ nf.ConnectionDetails.showDetails(item.groupId, item.id);
+ }
+ }
+ });
+
// wire up the dataview to the grid
connectionsData.onRowCountChanged.subscribe(function (e, args) {
connectionsGrid.updateRowCount();
@@ -651,6 +720,11 @@ nf.SummaryTable = (function () {
}
}
});
+
+ // cluster connection refresh
+ nf.Common.addHoverEffect('#cluster-connection-refresh-button', 'button-refresh', 'button-refresh-hover').click(function () {
+ loadClusterConnectionSummary($('#cluster-connection-id').text());
+ });
// initialize the cluster processor column model
var clusterConnectionsColumnModel = [
@@ -734,18 +808,18 @@ nf.SummaryTable = (function () {
var markup = '';
if (isInShell) {
- markup += ' ';
+ markup += ' ';
}
if (isClustered) {
- markup += ' ';
+ markup += ' ';
}
return markup;
};
// define the action column for clusters and within the shell
- inputPortsColumnModel.push({id: 'action', name: ' ', formatter: inputPortActionFormatter, resizable: false, sortable: false, width: 75, maxWidth: 75});
+ inputPortsColumnModel.push({id: 'actions', name: ' ', formatter: inputPortActionFormatter, resizable: false, sortable: false, width: 75, maxWidth: 75});
}
// initialize the input ports table
@@ -787,6 +861,30 @@ nf.SummaryTable = (function () {
}, inputPortsData);
});
+ // configure a click listener
+ inputPortsGrid.onClick.subscribe(function (e, args) {
+ var target = $(e.target);
+
+ // get the node at this row
+ var item = inputPortsData.getItem(args.row);
+
+ // determine the desired action
+ if (inputPortsGrid.getColumns()[args.cell].id === 'actions') {
+ if (target.hasClass('go-to')) {
+ goTo(item.groupId, item.id);
+ } else if (target.hasClass('show-cluster-input-port-summary')) {
+ // load the cluster processor summary
+ loadClusterInputPortSummary(item.id);
+
+ // hide the summary loading indicator
+ $('#summary-loading-container').hide();
+
+ // show the dialog
+ $('#cluster-input-port-summary-dialog').modal('show');
+ }
+ }
+ });
+
// wire up the dataview to the grid
inputPortsData.onRowCountChanged.subscribe(function (e, args) {
inputPortsGrid.updateRowCount();
@@ -857,6 +955,11 @@ nf.SummaryTable = (function () {
}
}
});
+
+ // cluster input port refresh
+ nf.Common.addHoverEffect('#cluster-input-port-refresh-button', 'button-refresh', 'button-refresh-hover').click(function () {
+ loadClusterInputPortSummary($('#cluster-input-port-id').text());
+ });
// initialize the cluster input port column model
var clusterInputPortsColumnModel = [
@@ -927,18 +1030,18 @@ nf.SummaryTable = (function () {
var markup = '';
if (isInShell) {
- markup += ' ';
+ markup += ' ';
}
if (isClustered) {
- markup += ' ';
+ markup += ' ';
}
return markup;
};
// define the action column for clusters and within the shell
- outputPortsColumnModel.push({id: 'action', name: ' ', formatter: outputPortActionFormatter, resizable: false, sortable: false, width: 75, maxWidth: 75});
+ outputPortsColumnModel.push({id: 'actions', name: ' ', formatter: outputPortActionFormatter, resizable: false, sortable: false, width: 75, maxWidth: 75});
}
// initialize the input ports table
@@ -980,6 +1083,30 @@ nf.SummaryTable = (function () {
}, outputPortsData);
});
+ // configure a click listener
+ outputPortsGrid.onClick.subscribe(function (e, args) {
+ var target = $(e.target);
+
+ // get the node at this row
+ var item = outputPortsData.getItem(args.row);
+
+ // determine the desired action
+ if (outputPortsGrid.getColumns()[args.cell].id === 'actions') {
+ if (target.hasClass('go-to')) {
+ goTo(item.groupId, item.id);
+ } else if (target.hasClass('show-cluster-output-port-summary')) {
+ // load the cluster processor summary
+ loadClusterOutputPortSummary(item.id);
+
+ // hide the summary loading indicator
+ $('#summary-loading-container').hide();
+
+ // show the dialog
+ $('#cluster-output-port-summary-dialog').modal('show');
+ }
+ }
+ });
+
// wire up the dataview to the grid
outputPortsData.onRowCountChanged.subscribe(function (e, args) {
outputPortsGrid.updateRowCount();
@@ -1050,6 +1177,11 @@ nf.SummaryTable = (function () {
}
}
});
+
+ // cluster output port refresh
+ nf.Common.addHoverEffect('#cluster-output-port-refresh-button', 'button-refresh', 'button-refresh-hover').click(function () {
+ loadClusterOutputPortSummary($('#cluster-output-port-id').text());
+ });
// initialize the cluster output port column model
var clusterOutputPortsColumnModel = [
@@ -1152,26 +1284,26 @@ nf.SummaryTable = (function () {
var markup = '';
if (isInShell) {
- markup += ' ';
+ markup += ' ';
}
if (nf.Common.SUPPORTS_SVG) {
if (isClustered) {
- markup += ' ';
+ markup += ' ';
} else {
- markup += ' ';
+ markup += ' ';
}
}
if (isClustered) {
- markup += ' ';
+ markup += ' ';
}
return markup;
};
// define the action column for clusters and within the shell
- remoteProcessGroupsColumnModel.push({id: 'action', name: ' ', formatter: remoteProcessGroupActionFormatter, resizable: false, sortable: false, width: 75, maxWidth: 75});
+ remoteProcessGroupsColumnModel.push({id: 'actions', name: ' ', formatter: remoteProcessGroupActionFormatter, resizable: false, sortable: false, width: 75, maxWidth: 75});
}
// initialize the remote process groups table
@@ -1213,6 +1345,34 @@ nf.SummaryTable = (function () {
}, remoteProcessGroupsData);
});
+ // configure a click listener
+ remoteProcessGroupsGrid.onClick.subscribe(function (e, args) {
+ var target = $(e.target);
+
+ // get the node at this row
+ var item = remoteProcessGroupsData.getItem(args.row);
+
+ // determine the desired action
+ if (remoteProcessGroupsGrid.getColumns()[args.cell].id === 'actions') {
+ if (target.hasClass('go-to')) {
+ goTo(item.groupId, item.id);
+ } else if (target.hasClass('show-cluster-remote-process-group-status-history')) {
+ nf.StatusHistory.showClusterRemoteProcessGroupChart(item.groupId, item.id);
+ } else if (target.hasClass('show-remote-process-group-status-history')) {
+ nf.StatusHistory.showStandaloneRemoteProcessGroupChart(item.groupId, item.id);
+ } else if (target.hasClass('show-cluster-remote-process-group-summary')) {
+ // load the cluster processor summary
+ loadClusterRemoteProcessGroupSummary(item.id);
+
+ // hide the summary loading indicator
+ $('#summary-loading-container').hide();
+
+ // show the dialog
+ $('#cluster-remote-process-group-summary-dialog').modal('show');
+ }
+ }
+ });
+
// wire up the dataview to the grid
remoteProcessGroupsData.onRowCountChanged.subscribe(function (e, args) {
remoteProcessGroupsGrid.updateRowCount();
@@ -1283,6 +1443,11 @@ nf.SummaryTable = (function () {
}
}
});
+
+ // cluster remote process group refresh
+ nf.Common.addHoverEffect('#cluster-remote-process-group-refresh-button', 'button-refresh', 'button-refresh-hover').click(function () {
+ loadClusterRemoteProcessGroupSummary($('#cluster-remote-process-group-id').text());
+ });
// initialize the cluster remote process group column model
var clusterRemoteProcessGroupsColumnModel = [
@@ -1749,7 +1914,6 @@ nf.SummaryTable = (function () {
// populate the processor details
$('#cluster-processor-name').text(clusterProcessorStatus.processorName).ellipsis();
- ;
$('#cluster-processor-id').text(clusterProcessorStatus.processorId);
// update the stats last refreshed timestamp
@@ -1801,7 +1965,6 @@ nf.SummaryTable = (function () {
// populate the processor details
$('#cluster-connection-name').text(clusterConnectionStatus.connectionName).ellipsis();
- ;
$('#cluster-connection-id').text(clusterConnectionStatus.connectionId);
// update the stats last refreshed timestamp
@@ -1959,18 +2122,16 @@ nf.SummaryTable = (function () {
}
}).fail(nf.Common.handleAjaxError);
};
-
+
return {
/**
* URL for loading system diagnostics.
*/
systemDiagnosticsUrl: null,
-
/**
* URL for loading the summary.
*/
url: null,
-
/**
* Initializes the status table.
*
@@ -1994,7 +2155,6 @@ nf.SummaryTable = (function () {
});
}).promise();
},
-
/**
* Update the size of the grid based on its container's current size.
*/
@@ -2024,7 +2184,6 @@ nf.SummaryTable = (function () {
remoteProcessGroupGrid.resizeCanvas();
}
},
-
/**
* Load the processor status table.
*/
@@ -2043,7 +2202,7 @@ nf.SummaryTable = (function () {
// remove any tooltips from the processor table
var processorsGridElement = $('#processor-summary-table');
nf.Common.cleanUpTooltips(processorsGridElement, 'img.has-bulletins');
-
+
// get the processor grid/data
var processorsGrid = processorsGridElement.data('gridInstance');
var processorsData = processorsGrid.getData();
@@ -2129,308 +2288,6 @@ nf.SummaryTable = (function () {
$('#total-items').text('0');
}
}).fail(nf.Common.handleAjaxError);
- },
-
- // processor actions
-
- /**
- * Shows the details for the processor at the specified row.
- *
- * @param {type} row row index
- */
- showProcessorDetails: function (row) {
- var grid = $('#processor-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
- nf.ProcessorDetails.showDetails(item.groupId, item.id);
- }
- },
-
- /**
- * Goes to the specified processor.
- *
- * @param {type} row
- */
- goToProcessor: function (row) {
- var grid = $('#processor-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
- goTo(item.groupId, item.id);
- }
- },
-
- /**
- * Shows the processor status history for a cluster.
- *
- * @param {type} row
- */
- showClusterProcessorStatusHistory: function (row) {
- var grid = $('#processor-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
- nf.StatusHistory.showClusterProcessorChart(item.groupId, item.id);
- }
- },
-
- /**
- * Shows the processor status history.
- *
- * @param {type} row
- */
- showProcessorStatusHistory: function (row) {
- var grid = $('#processor-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
- nf.StatusHistory.showStandaloneProcessorChart(item.groupId, item.id);
- }
- },
-
- /**
- * Shows the cluster processor details dialog for the specified processor.
- *
- * @argument {string} row The row
- */
- showClusterProcessorSummary: function (row) {
- var grid = $('#processor-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- // load the cluster processor summary
- loadClusterProcessorSummary(item.id);
-
- // hide the summary loading indicator
- $('#summary-loading-container').hide();
-
- // show the dialog
- $('#cluster-processor-summary-dialog').modal('show');
- }
- },
-
- // connection actions
-
- /**
- * Shows the details for the connection at the specified row.
- *
- * @param {type} row row index
- */
- showConnectionDetails: function (row) {
- var grid = $('#connection-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
- nf.ConnectionDetails.showDetails(item.groupId, item.id);
- }
- },
-
- /**
- * Goes to the specified connection.
- *
- * @param {type} row
- */
- goToConnection: function (row) {
- var grid = $('#connection-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
- goTo(item.groupId, item.id);
- }
- },
-
- /**
- * Shows the connection status history for a cluster.
- *
- * @param {type} row
- */
- showClusterConnectionStatusHistory: function (row) {
- var grid = $('#connection-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
- nf.StatusHistory.showClusterConnectionChart(item.groupId, item.id);
- }
- },
-
- /**
- * Shows the connection status history.
- *
- * @param {type} row
- */
- showConnectionStatusHistory: function (row) {
- var grid = $('#connection-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
- nf.StatusHistory.showStandaloneConnectionChart(item.groupId, item.id);
- }
- },
-
- /**
- * Shows the cluster connection details dialog for the specified connection.
- *
- * @argument {string} row The row
- */
- showClusterConnectionSummary: function (row) {
- var grid = $('#connection-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- // load the cluster processor summary
- loadClusterConnectionSummary(item.id);
-
- // hide the summary loading indicator
- $('#summary-loading-container').hide();
-
- // show the dialog
- $('#cluster-connection-summary-dialog').modal('show');
- }
- },
-
- // input actions
-
- /**
- * Goes to the specified input port.
- *
- * @param {type} row
- */
- goToInputPort: function (row) {
- var grid = $('#input-port-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
- goTo(item.groupId, item.id);
- }
- },
-
- /**
- * Shows the cluster input port details dialog for the specified connection.
- *
- * @argument {string} row The row
- */
- showClusterInputPortSummary: function (row) {
- var grid = $('#input-port-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- // load the cluster processor summary
- loadClusterInputPortSummary(item.id);
-
- // hide the summary loading indicator
- $('#summary-loading-container').hide();
-
- // show the dialog
- $('#cluster-input-port-summary-dialog').modal('show');
- }
- },
-
- // output actions
-
- /**
- * Goes to the specified output port.
- *
- * @param {type} row
- */
- goToOutputPort: function (row) {
- var grid = $('#output-port-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
- goTo(item.groupId, item.id);
- }
- },
-
- /**
- * Shows the cluster output port details dialog for the specified connection.
- *
- * @argument {string} row The row
- */
- showClusterOutputPortSummary: function (row) {
- var grid = $('#output-port-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- // load the cluster processor summary
- loadClusterOutputPortSummary(item.id);
-
- // hide the summary loading indicator
- $('#summary-loading-container').hide();
-
- // show the dialog
- $('#cluster-output-port-summary-dialog').modal('show');
- }
- },
-
- // remote process group actions
-
- /**
- * Goes to the specified remote process group.
- *
- * @param {type} row
- */
- goToRemoteProcessGroup: function (row) {
- var grid = $('#remote-process-group-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
- goTo(item.groupId, item.id);
- }
- },
-
- /**
- * Shows the remote process group status history for a cluster.
- *
- * @param {type} row
- */
- showClusterRemoteProcessGroupStatusHistory: function (row) {
- var grid = $('#remote-process-group-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
- nf.StatusHistory.showClusterRemoteProcessGroupChart(item.groupId, item.id);
- }
- },
-
- /**
- * Shows the remote process group status history.
- *
- * @param {type} row
- */
- showRemoteProcessGroupStatusHistory: function (row) {
- var grid = $('#remote-process-group-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
- nf.StatusHistory.showStandaloneRemoteProcessGroupChart(item.groupId, item.id);
- }
- },
-
- /**
- * Shows the cluster remote process group details dialog for the specified connection.
- *
- * @argument {string} row The row
- */
- showClusterRemoteProcessGroupSummary: function (row) {
- var grid = $('#remote-process-group-summary-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- // load the cluster processor summary
- loadClusterRemoteProcessGroupSummary(item.id);
-
- // hide the summary loading indicator
- $('#summary-loading-container').hide();
-
- // show the dialog
- $('#cluster-remote-process-group-summary-dialog').modal('show');
- }
}
};
}());
\ No newline at end of file
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary.js b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary.js
index 7b90a0f5e9..4f80241ee3 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary.js
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/summary/nf-summary.js
@@ -69,12 +69,6 @@ nf.Summary = (function () {
nf.Common.addHoverEffect('#refresh-button', 'button-refresh', 'button-refresh-hover').click(function () {
nf.SummaryTable.loadProcessorSummaryTable();
});
- nf.Common.addHoverEffect('#cluster-processor-refresh-button', 'button-refresh', 'button-refresh-hover').click(function () {
- nf.SummaryTable.loadClusterProcessorSummary($('#cluster-processor-id').text());
- });
- nf.Common.addHoverEffect('#cluster-connection-refresh-button', 'button-refresh', 'button-refresh-hover').click(function () {
- nf.SummaryTable.loadClusterConnectionSummary($('#cluster-connection-id').text());
- });
// return a deferred for page initialization
return $.Deferred(function (deferred) {
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates-table.js b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates-table.js
index 175620746c..ec8f49ec46 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates-table.js
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/templates/nf-templates-table.js
@@ -53,6 +53,22 @@ nf.TemplatesTable = (function () {
data.sort(comparer, sortDetails.sortAsc);
};
+ /**
+ * Prompts the user before attempting to delete the specified template.
+ *
+ * @argument {object} template The template
+ */
+ var promptToDeleteTemplate = function (template) {
+ // prompt for deletion
+ nf.Dialog.showYesNoDialog({
+ dialogContent: 'Delete template \'' + nf.Common.escapeHtml(template.name) + '\'?',
+ overlayBackground: false,
+ yesHandler: function () {
+ deleteTemplate(template.id);
+ }
+ });
+ };
+
/**
* Deletes the template with the specified id.
*
@@ -177,11 +193,11 @@ nf.TemplatesTable = (function () {
// function for formatting the actions column
var actionFormatter = function (row, cell, value, columnDef, dataContext) {
- var markup = '';
+ var markup = '';
// all DFMs to remove templates
if (nf.Common.isDFM()) {
- markup += ' ';
+ markup += ' ';
}
return markup;
};
@@ -230,6 +246,23 @@ nf.TemplatesTable = (function () {
}, templatesData);
});
+ // configure a click listener
+ templatesGrid.onClick.subscribe(function (e, args) {
+ var target = $(e.target);
+
+ // get the node at this row
+ var item = templatesData.getItem(args.row);
+
+ // determine the desired action
+ if (templatesGrid.getColumns()[args.cell].id === 'actions') {
+ if (target.hasClass('export-template')) {
+ window.open(config.urls.templates + '/' + encodeURIComponent(item.id));
+ } else if (target.hasClass('prompt-to-delete-template')) {
+ promptToDeleteTemplate(item);
+ }
+ }
+ });
+
// wire up the dataview to the grid
templatesData.onRowCountChanged.subscribe(function (e, args) {
templatesGrid.updateRowCount();
@@ -260,42 +293,6 @@ nf.TemplatesTable = (function () {
}
},
- /**
- * Exports the specified template.
- *
- * @argument {string} row The row
- */
- exportTemplate: function (row) {
- var grid = $('#templates-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
- window.open(config.urls.templates + '/' + encodeURIComponent(item.id));
- }
- },
-
- /**
- * Prompts the user before attempting to delete the specified template.
- *
- * @argument {string} row The row
- */
- promptToDeleteTemplate: function (row) {
- var grid = $('#templates-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var template = data.getItem(row);
-
- // prompt for deletion
- nf.Dialog.showYesNoDialog({
- dialogContent: 'Delete template \'' + nf.Common.escapeHtml(template.name) + '\'?',
- overlayBackground: false,
- yesHandler: function () {
- deleteTemplate(template.id);
- }
- });
- }
- },
-
/**
* Load the processor templates table.
*/
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users-table.js b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users-table.js
index 996544f142..88ea225fc2 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users-table.js
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/users/nf-users-table.js
@@ -483,7 +483,7 @@ nf.UsersTable = (function () {
// define a custom formatter for the more details column
var moreDetailsFormatter = function (row, cell, value, columnDef, dataContext) {
- return '';
+ return '';
};
// function for formatting the last accessed time
@@ -566,20 +566,20 @@ nf.UsersTable = (function () {
// if this represents a grouped row
if (nf.Common.isDefinedAndNotNull(dataContext.userGroup) && grouped) {
- var actions = ' ';
+ var actions = ' ';
} else {
// return the appropriate markup for an individual user
- var actions = '';
+ var actions = '';
if (dataContext.status === 'ACTIVE') {
- actions += ' ';
+ actions += ' ';
// add an ungroup active if appropriate
if (nf.Common.isDefinedAndNotNull(dataContext.userGroup)) {
- actions += ' ';
+ actions += ' ';
}
} else {
- actions += ' ';
+ actions += ' ';
}
}
@@ -632,6 +632,37 @@ nf.UsersTable = (function () {
sortAsc: args.sortAsc
}, usersData);
});
+
+ // configure a click listener
+ usersGrid.onClick.subscribe(function (e, args) {
+ var target = $(e.target);
+
+ // get the node at this row
+ var item = usersData.getItem(args.row);
+
+ // determine the desired action
+ if (usersGrid.getColumns()[args.cell].id === 'actions') {
+ if (target.hasClass('update-group-access')) {
+ updateGroupAccess(item);
+ } else if (target.hasClass('revoke-group-access')) {
+ revokeGroupAccess(item);
+ } else if (target.hasClass('ungroup')) {
+ ungroup(item);
+ } else if (target.hasClass('update-user-access')) {
+ updateUserAccess(item);
+ } else if (target.hasClass('revoke-user-access')) {
+ revokeUserAccess(item);
+ } else if (target.hasClass('ungroup-user')) {
+ ungroupUser(item);
+ } else if (target.hasClass('delete-user-account')) {
+ deleteUserAccount(item);
+ }
+ } else if (usersGrid.getColumns()[args.cell].id === 'moreDetails') {
+ if (target.hasClass('show-user-details')) {
+ showUserDetails(item);
+ }
+ }
+ });
// wire up the dataview to the grid
usersData.onRowCountChanged.subscribe(function (e, args) {
@@ -804,6 +835,182 @@ nf.UsersTable = (function () {
}
};
+ /**
+ * Shows details for the specified user.
+ *
+ * @param {object} user
+ */
+ var showUserDetails = function (user) {
+ var grouped = $('#group-collaspe-checkbox').hasClass('checkbox-checked');
+
+ // update the dialog fields
+ $('#user-name-details-dialog').text(user.userName);
+ $('#user-dn-details-dialog').text(user.dn);
+
+ // handle fields that could vary for groups
+ if (nf.Common.isDefinedAndNotNull(user.creation)) {
+ $('#user-created-details-dialog').text(user.creation);
+ } else if (grouped && nf.Common.isDefinedAndNotNull(user.userGroup)) {
+ $('#user-created-details-dialog').html('Multiple users with different creation timestamps.');
+ } else {
+ $('#user-created-details-dialog').html('No creation timestamp set');
+ }
+
+ if (nf.Common.isDefinedAndNotNull(user.lastVerified)) {
+ $('#user-verified-details-dialog').text(user.lastVerified);
+ } else if (grouped && nf.Common.isDefinedAndNotNull(user.userGroup)) {
+ $('#user-verified-details-dialog').html('Multiple users with different last verified timestamps.');
+ } else {
+ $('#user-verified-details-dialog').html('No last verified timestamp set.');
+ }
+
+ if (nf.Common.isDefinedAndNotNull(user.justification)) {
+ $('#user-justification-details-dialog').text(user.justification);
+ } else if (grouped && nf.Common.isDefinedAndNotNull(user.userGroup)) {
+ $('#user-justification-details-dialog').html('Multiple users with different justifications.');
+ } else {
+ $('#user-justification-details-dialog').html('No justification set.');
+ }
+
+ // show the dialog
+ $('#user-details-dialog').modal('show');
+ };
+
+ /**
+ * Updates the specified groups level of access.
+ *
+ * @argument {object} item The user item
+ */
+ var updateGroupAccess = function (item) {
+ // record the current group
+ $('#group-name-roles-dialog').text(item.userGroup);
+
+ // show the dialog
+ $('#group-roles-dialog').modal('show');
+ };
+
+ /**
+ * Disables the specified group's account.
+ *
+ * @argument {object} item The user item
+ */
+ var revokeGroupAccess = function (item) {
+ // record the current group
+ $('#group-name-revoke-dialog').text(item.userGroup);
+
+ // show the dialog
+ $('#group-revoke-dialog').modal('show');
+ };
+
+ /**
+ * Ungroups the specified group.
+ *
+ * @argument {object} item The user item
+ */
+ var ungroup = function (item) {
+ // prompt for ungroup
+ nf.Dialog.showYesNoDialog({
+ dialogContent: 'Remove all users from group \'' + nf.Common.escapeHtml(item.userGroup) + '\'?',
+ overlayBackground: false,
+ yesHandler: function () {
+ $.ajax({
+ type: 'DELETE',
+ url: config.urls.userGroups + '/' + encodeURIComponent(item.userGroup),
+ dataType: 'json'
+ }).done(function (response) {
+ nf.UsersTable.loadUsersTable();
+ }).fail(nf.Common.handleAjaxError);
+ }
+ });
+ };
+
+ /**
+ * Updates the specified users's level of access.
+ *
+ * @argument {object} item The user item
+ */
+ var updateUserAccess = function (item) {
+ // populate the user info
+ $('#user-id-roles-dialog').val(item.id);
+ $('#user-name-roles-dialog').attr('title', item.dn).text(item.userName);
+ $('#user-justification-roles-dialog').html(nf.Common.formatValue(item.justification));
+
+ // function for checking a checkbox
+ var check = function (domId) {
+ $('#' + domId).removeClass('checkbox-unchecked').addClass('checkbox-checked');
+ };
+
+ // go through each user role
+ $.each(item.authorities, function (i, authority) {
+ if (authority === 'ROLE_ADMIN') {
+ check('role-admin-checkbox');
+ } else if (authority === 'ROLE_DFM') {
+ check('role-dfm-checkbox');
+ } else if (authority === 'ROLE_PROVENANCE') {
+ check('role-provenance-checkbox');
+ } else if (authority === 'ROLE_MONITOR') {
+ check('role-monitor-checkbox');
+ } else if (authority === 'ROLE_NIFI') {
+ check('role-nifi-checkbox');
+ } else if (authority === 'ROLE_PROXY') {
+ check('role-proxy-checkbox');
+ }
+ });
+
+ // show the dialog
+ $('#user-roles-dialog').modal('show');
+ };
+
+ /**
+ * Disables the specified user's account.
+ *
+ * @argument {object} item The user item
+ */
+ var revokeUserAccess = function (item) {
+ // populate the users info
+ $('#user-id-revoke-dialog').val(item.id);
+ $('#user-name-revoke-dialog').text(item.userName);
+
+ // show the dialog
+ $('#user-revoke-dialog').modal('show');
+ };
+
+ /**
+ * Prompts to verify group removal.
+ *
+ * @argument {object} item The user item
+ */
+ var ungroupUser = function (item) {
+ // prompt for ungroup
+ nf.Dialog.showYesNoDialog({
+ dialogContent: 'Remove user \'' + nf.Common.escapeHtml(item.userName) + '\' from group \'' + nf.Common.escapeHtml(item.userGroup) + '\'?',
+ overlayBackground: false,
+ yesHandler: function () {
+ $.ajax({
+ type: 'DELETE',
+ url: config.urls.userGroups + '/' + encodeURIComponent(item.userGroup) + '/users/' + encodeURIComponent(item.id),
+ dataType: 'json'
+ }).done(function (response) {
+ nf.UsersTable.loadUsersTable();
+ }).fail(nf.Common.handleAjaxError);
+ }
+ });
+ };
+
+ /**
+ * Delete's the specified user's account.
+ *
+ * @argument {object} item The user item
+ */
+ var deleteUserAccount = function (item) {
+ // populate the users info
+ $('#user-id-delete-dialog').val(item.id);
+ $('#user-name-delete-dialog').text(item.userName);
+
+ // show the dialog
+ $('#user-delete-dialog').modal('show');
+ };
+
return {
init: function () {
initUserDetailsDialog();
@@ -816,183 +1023,6 @@ nf.UsersTable = (function () {
initUsersTable();
},
- /**
- * Disables the specified user's account.
- *
- * @argument {string} row The row
- */
- revokeUserAccess: function (row) {
- var grid = $('#users-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- // populate the users info
- $('#user-id-revoke-dialog').val(item.id);
- $('#user-name-revoke-dialog').text(item.userName);
-
- // show the dialog
- $('#user-revoke-dialog').modal('show');
- }
- },
-
- /**
- * Delete's the specified user's account.
- *
- * @argument {string} row The row
- */
- deleteUserAccount: function (row) {
- var grid = $('#users-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- // populate the users info
- $('#user-id-delete-dialog').val(item.id);
- $('#user-name-delete-dialog').text(item.userName);
-
- // show the dialog
- $('#user-delete-dialog').modal('show');
- }
- },
-
- /**
- * Disables the specified group's account.
- *
- * @argument {string} row The row
- */
- revokeGroupAccess: function (row) {
- var grid = $('#users-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- // record the current group
- $('#group-name-revoke-dialog').text(item.userGroup);
-
- // show the dialog
- $('#group-revoke-dialog').modal('show');
- }
- },
-
- /**
- * Updates the specified users's level of access.
- *
- * @argument {string} row The row
- */
- updateUserAccess: function (row) {
- var grid = $('#users-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- // populate the user info
- $('#user-id-roles-dialog').val(item.id);
- $('#user-name-roles-dialog').attr('title', item.dn).text(item.userName);
- $('#user-justification-roles-dialog').html(nf.Common.formatValue(item.justification));
-
- // function for checking a checkbox
- var check = function (domId) {
- $('#' + domId).removeClass('checkbox-unchecked').addClass('checkbox-checked');
- };
-
- // go through each user role
- $.each(item.authorities, function (i, authority) {
- if (authority === 'ROLE_ADMIN') {
- check('role-admin-checkbox');
- } else if (authority === 'ROLE_DFM') {
- check('role-dfm-checkbox');
- } else if (authority === 'ROLE_PROVENANCE') {
- check('role-provenance-checkbox');
- } else if (authority === 'ROLE_MONITOR') {
- check('role-monitor-checkbox');
- } else if (authority === 'ROLE_NIFI') {
- check('role-nifi-checkbox');
- } else if (authority === 'ROLE_PROXY') {
- check('role-proxy-checkbox');
- }
- });
-
- // show the dialog
- $('#user-roles-dialog').modal('show');
- }
- },
-
- /**
- * Updates the specified groups level of access.
- *
- * @argument {string} row The row
- */
- updateGroupAccess: function (row) {
- var grid = $('#users-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- // record the current group
- $('#group-name-roles-dialog').text(item.userGroup);
-
- // show the dialog
- $('#group-roles-dialog').modal('show');
- }
- },
-
- /**
- * Prompts to verify group removal.
- *
- * @argument {string} row The row
- */
- ungroupUser: function (row) {
- var grid = $('#users-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- // prompt for ungroup
- nf.Dialog.showYesNoDialog({
- dialogContent: 'Remove user \'' + nf.Common.escapeHtml(item.userName) + '\' from group \'' + nf.Common.escapeHtml(item.userGroup) + '\'?',
- overlayBackground: false,
- yesHandler: function () {
- $.ajax({
- type: 'DELETE',
- url: config.urls.userGroups + '/' + encodeURIComponent(item.userGroup) + '/users/' + encodeURIComponent(item.id),
- dataType: 'json'
- }).done(function (response) {
- nf.UsersTable.loadUsersTable();
- }).fail(nf.Common.handleAjaxError);
- }
- });
- }
- },
-
- /**
- * Ungroups the specified group.
- *
- * @argument {string} row The row
- */
- ungroup: function (row) {
- var grid = $('#users-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(grid)) {
- var data = grid.getData();
- var item = data.getItem(row);
-
- // prompt for ungroup
- nf.Dialog.showYesNoDialog({
- dialogContent: 'Remove all users from group \'' + nf.Common.escapeHtml(item.userGroup) + '\'?',
- overlayBackground: false,
- yesHandler: function () {
- $.ajax({
- type: 'DELETE',
- url: config.urls.userGroups + '/' + encodeURIComponent(item.userGroup),
- dataType: 'json'
- }).done(function (response) {
- nf.UsersTable.loadUsersTable();
- }).fail(nf.Common.handleAjaxError);
- }
- });
- }
- },
-
/**
* Update the size of the grid based on its container's current size.
*/
@@ -1037,54 +1067,6 @@ nf.UsersTable = (function () {
$('#total-users').text('0');
}
}).fail(nf.Common.handleAjaxError);
- },
-
- /**
- * Shows details for the specified user.
- *
- * @param {string} row
- */
- showUserDetails: function (row) {
- var usersGrid = $('#users-table').data('gridInstance');
- if (nf.Common.isDefinedAndNotNull(usersGrid)) {
- var usersData = usersGrid.getData();
-
- // get the user
- var user = usersData.getItem(row);
- var grouped = $('#group-collaspe-checkbox').hasClass('checkbox-checked');
-
- // update the dialog fields
- $('#user-name-details-dialog').text(user.userName);
- $('#user-dn-details-dialog').text(user.dn);
-
- // handle fields that could vary for groups
- if (nf.Common.isDefinedAndNotNull(user.creation)) {
- $('#user-created-details-dialog').text(user.creation);
- } else if (grouped && nf.Common.isDefinedAndNotNull(user.userGroup)) {
- $('#user-created-details-dialog').html('Multiple users with different creation timestamps.');
- } else {
- $('#user-created-details-dialog').html('No creation timestamp set');
- }
-
- if (nf.Common.isDefinedAndNotNull(user.lastVerified)) {
- $('#user-verified-details-dialog').text(user.lastVerified);
- } else if (grouped && nf.Common.isDefinedAndNotNull(user.userGroup)) {
- $('#user-verified-details-dialog').html('Multiple users with different last verified timestamps.');
- } else {
- $('#user-verified-details-dialog').html('No last verified timestamp set.');
- }
-
- if (nf.Common.isDefinedAndNotNull(user.justification)) {
- $('#user-justification-details-dialog').text(user.justification);
- } else if (grouped && nf.Common.isDefinedAndNotNull(user.userGroup)) {
- $('#user-justification-details-dialog').html('Multiple users with different justifications.');
- } else {
- $('#user-justification-details-dialog').html('No justification set.');
- }
-
- // show the dialog
- $('#user-details-dialog').modal('show');
- }
}
};
}());
\ No newline at end of file
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/pom.xml b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/pom.xml
index cbe6f233e2..b776086986 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/pom.xml
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/pom.xml
@@ -18,7 +18,7 @@
org.apache.nifi
nifi-framework
- 0.0.1-incubating-SNAPSHOT
+ 0.0.2-incubating-SNAPSHOT
nifi-web
pom
@@ -38,25 +38,25 @@
org.apache.nifi
nifi-web-api
war
- 0.0.1-incubating-SNAPSHOT
+ 0.0.2-incubating-SNAPSHOT