You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by mc...@apache.org on 2022/09/26 23:32:08 UTC
[nifi] branch main updated: NIFI-10542: set sensitivity for new parameters in a synced parameter context (#6446)
This is an automated email from the ASF dual-hosted git repository.
mcgilman pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new 34084d083a NIFI-10542: set sensitivity for new parameters in a synced parameter context (#6446)
34084d083a is described below
commit 34084d083acac205076840a41a859849a3d71471
Author: M Tien <56...@users.noreply.github.com>
AuthorDate: Mon Sep 26 16:32:00 2022 -0700
NIFI-10542: set sensitivity for new parameters in a synced parameter context (#6446)
* NIFI-10542: set sensitivity for new parameters in a synced parameter context
* show removed or missing but referenced parameters with tooltip in the selectable parameters table
- remove default parameter value
* address review feedback
- fix showing a referencing icon for a missing but removed parameter
* fix discovering new parameters
This closes #6446
---
.../webapp/js/nf/canvas/nf-parameter-provider.js | 121 ++++++++++++++++-----
1 file changed, 94 insertions(+), 27 deletions(-)
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-provider.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-provider.js
index 6e4ff661e2..0d324d420d 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-provider.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-provider.js
@@ -834,16 +834,16 @@
}
}
- // check for changed parameter values
+ // check if a parameter is new, removed, missing but referenced, or has a changed value
if (updatedParameterProviderEntity.component.parameterStatus) {
- var isChanged = function (parameterStatus) {
- return parameterStatus.status === 'CHANGED';
+ var isStatusChanged = function (parameterStatus) {
+ return parameterStatus.status !== 'UNCHANGED';
}
- var isAnyParameterValueChanged = updatedParameterProviderEntity.component.parameterStatus.some(isChanged);
+ var isAnyParameterChanged = updatedParameterProviderEntity.component.parameterStatus.some(isStatusChanged);
- if (isAnyParameterValueChanged) {
- // a fetched parameter value has changed... do not disable the Apply button
+ if (isAnyParameterChanged) {
+ // a fetched parameter is new, removed, missing but referenced, or has a changed value... do not disable the Apply button
return false;
}
}
@@ -911,6 +911,18 @@
groupsData.endUpdate();
groupsData.reSort();
+ // if there is a new parameter, update its sensitivity
+ if (!_.isEmpty(parameterProviderGroupEntity.component.parameterStatus)) {
+ $.each(parameterProviderGroupEntity.component.parameterStatus, function (i, status) {
+ if (status.status !== 'UNCHANGED') {
+ var group = groupsData.getItems().find(function (group) { return group.name === status.parameter.parameter.parameterContext.component.name });
+
+ loadSelectableParameters(group.parameterSensitivities, group, true);
+ $('#fetch-parameters-dialog').modal('refreshButtons');
+ }
+ })
+ }
+
// select the first row
groupsGrid.setSelectedRows([0]);
}
@@ -937,15 +949,18 @@
/**
* Loads the selectable parameters for a specified parameter group.
*
- * @param groupId
- * @param {object} parametersEntity
+ * @param {object} parameterSensitivitiesEntity
* @param {object} updatedGroup
+ * @param {boolean} saveToGroup
*/
- var loadSelectableParameters = function (groupId, parametersEntity, updatedGroup) {
- if (nfCommon.isDefinedAndNotNull(parametersEntity)) {
+ var loadSelectableParameters = function (parameterSensitivitiesEntity, updatedGroup, saveToGroup) {
+ if (nfCommon.isDefinedAndNotNull(parameterSensitivitiesEntity)) {
var selectableParametersGrid = $('#selectable-parameters-table').data('gridInstance');
var parametersData = selectableParametersGrid.getData();
+ var groupsData = $('#parameter-groups-table').data('gridInstance').getData();
+ var currentGroup = groupsData.getItem([updatedGroup.id]);
+
// clear the rows
selectableParametersGrid.setSelectedRows([]);
parametersData.setItems([]);
@@ -966,40 +981,76 @@
return isAffectedParameter;
}
- var getParameterStatus = function (parameterStatus, param) {
+ var getParameterStatusEntity = function (parameterStatus, param) {
return nfCommon.isDefinedAndNotNull(parameterStatus.find(function (status) { return status.parameter.parameter.name === param }))
? parameterStatus.find(function (status) { return status.parameter.parameter.name === param })
: [];
}
+ var getStatus = function (paramStatus, param) {
+ var status = getParameterStatusEntity(paramStatus, param);
+ return !_.isEmpty(status) && status.status;
+ }
+
var isReferencedParameter = function (paramStatus, param) {
- var status = getParameterStatus(paramStatus, param);
+ var status = getParameterStatusEntity(paramStatus, param);
return !_.isEmpty(status) && !_.isEmpty(status.parameter.parameter.referencingComponents);
}
var idx = 0;
- var referencingParameters = 0;
+ var referencingParametersCount = 0;
var parameterCount = 0;
- for (var param in parametersEntity) {
+ for (var param in parameterSensitivitiesEntity) {
var parameter = {
id: idx++,
- groupId: groupId,
+ groupId: updatedGroup.id,
name: param,
- sensitivity: parametersEntity[param] ? parametersEntity[param] : SENSITIVE,
+ sensitivity: parameterSensitivitiesEntity[param] ? parameterSensitivitiesEntity[param] : SENSITIVE,
isAffectedParameter: currentParameterProviderEntity.component.affectedComponents ? isAffectedParameter(currentParameterProviderEntity, param) : false,
isReferencingParameter: !_.isEmpty(updatedGroup.parameterStatus) ? isReferencedParameter(updatedGroup.parameterStatus, param) : false,
- parameterStatus: !_.isEmpty(updatedGroup.parameterStatus) ? getParameterStatus(updatedGroup.parameterStatus, param) : []
+ parameterStatus: !_.isEmpty(updatedGroup.parameterStatus) ? getParameterStatusEntity(updatedGroup.parameterStatus, param) : [],
+ status: !_.isEmpty(updatedGroup.parameterStatus) ? getStatus(updatedGroup.parameterStatus, param) : null
}
- parametersData.addItem(parameter);
-
parameterCount++;
if (parameter.isReferencingParameter === true) {
- referencingParameters++;
+ referencingParametersCount++;
+ }
+
+ parametersData.addItem(parameter);
+
+ // save to its group
+ if (saveToGroup) {
+ currentGroup.parameterSensitivities[param] = parameterSensitivitiesEntity[param] ? parameterSensitivitiesEntity[param] : SENSITIVE;
+ groupsData.updateItem(updatedGroup.id, currentGroup);
}
}
+ // add a parameter if the status has been REMOVED or MISSING_BUT_REFERENCED
+ if (!_.isEmpty(updatedGroup.parameterStatus)) {
+
+ $.each(updatedGroup.parameterStatus, function (i, status) {
+ if (currentGroup.name === status.parameter.parameter.parameterContext.component.name &&
+ (status.status === 'REMOVED' || status.status === 'MISSING_BUT_REFERENCED')) {
+
+ // add the parameter
+ var parameter = {
+ id: idx++,
+ groupId: updatedGroup.id,
+ name: status.parameter.parameter.name,
+ sensitivity: NON_SENSITIVE,
+ parameterStatus: status,
+ isReferencingParameter: status.status === 'MISSING_BUT_REFERENCED',
+ status: status.status
+ }
+
+ parametersData.addItem(parameter);
+ parameterCount++;
+ }
+ })
+ }
+
// complete the update
parametersData.endUpdate();
parametersData.reSort();
@@ -1669,7 +1720,7 @@
// show the appropriate parameters table when dialog first opens
if (isParameterContext) {
// get the active group's parameters to populate the selectable parameters container
- loadSelectableParameters(updatedGroup.id, updatedGroup.parameterSensitivities, updatedGroup);
+ loadSelectableParameters(updatedGroup.parameterSensitivities, updatedGroup, false);
$('#parameters-container').show();
$('#selectable-parameters-container').show();
@@ -1704,7 +1755,7 @@
// select checkbox
$('<div id="create-parameter-context-field" class="nf-checkbox checkbox-checked"></div>').appendTo(checkboxMarkup);
- loadSelectableParameters(updatedGroup.id, updatedGroup.parameterSensitivities, updatedGroup);
+ loadSelectableParameters(updatedGroup.parameterSensitivities, updatedGroup, false);
$('#parameters-container').show();
$('#selectable-parameters-container').show();
@@ -1795,7 +1846,7 @@
if (args.isChecked) {
updatedGroup.createNewParameterContext = true;
- loadSelectableParameters(updatedGroup.id, updatedGroup.parameterSensitivities, updatedGroup);
+ loadSelectableParameters(updatedGroup.parameterSensitivities, updatedGroup, false);
$('#fetched-parameters-container').hide();
$('#create-parameter-context-container').show();
@@ -1805,7 +1856,7 @@
// if unchecked, then hide the input and only show the parameters listing
updatedGroup.createNewParameterContext = false;
- loadSelectableParameters(updatedGroup.id, updatedGroup.parameterSensitivities, updatedGroup);
+ loadSelectableParameters(updatedGroup.parameterSensitivities, updatedGroup, false);
$('#create-parameter-context-container').hide();
$('#selectable-parameters-container').hide();
@@ -2354,9 +2405,10 @@
formattedValue.addClass('required');
}
- if (dataContext.isAffectedParameter || dataContext.parameterStatus.status === 'CHANGED') {
+ if (dataContext.isAffectedParameter || (nfCommon.isDefinedAndNotNull(dataContext.parameterStatus.status) && dataContext.parameterStatus.status !== 'UNCHANGED')) {
valueWidthOffset += 30;
- $('<div class="fa fa-asterisk" alt="Info" style="float: right;"></div>').appendTo(cellContent);
+ var status = nfCommon.escapeHtml(dataContext.parameterStatus.status.toLowerCase());
+ $('<div class="fa fa-asterisk ' + status + '" alt="Info" style="float: right;"></div>').appendTo(cellContent);
}
if (dataContext.isReferencingParameter) {
@@ -2373,6 +2425,11 @@
var checkboxSelectionFormatter = function (row, cell, value, columnDef, dataContext) {
if (dataContext) {
+ if (dataContext.status === 'REMOVED' || dataContext.status === 'MISSING_BUT_REFERENCED') {
+ // disable checkboxes
+ return "<input type='checkbox' class='disabled unchecked-input-disabled' disabled><label for='selector'></label>";
+ }
+
if (_.isEmpty(dataContext.parameterStatus) || _.isEmpty(dataContext.parameterStatus.parameter.parameter.referencingComponents)) {
if (dataContext.sensitivity === SENSITIVE) {
return "<input type='checkbox' checked='checked' class='checked-input-enabled'><label for='selector'></label>";
@@ -2542,7 +2599,17 @@
// hold onto an instance of the grid and create an affected component tooltip
selectableParametersTable.data('gridInstance', selectableParametersGrid).on('mouseenter', 'div.slick-cell', function (e) {
var asteriskIconElement = $(this).find('div.fa-asterisk');
- var asteriskTooltipContent = nfCommon.escapeHtml('Value has changed.');
+
+ var asteriskTooltipContent = '';
+ if (asteriskIconElement.hasClass('new')) {
+ asteriskTooltipContent = nfCommon.escapeHtml('Newly discovered parameter.');
+ } else if (asteriskIconElement.hasClass('changed')) {
+ asteriskTooltipContent = nfCommon.escapeHtml('Value has changed.');
+ } else if (asteriskIconElement.hasClass('removed')) {
+ asteriskTooltipContent = nfCommon.escapeHtml('Parameter has been removed from its source. Apply to remove from the synced parameter context.');
+ } else if (asteriskIconElement.hasClass('missing_but_referenced')) {
+ asteriskTooltipContent = nfCommon.escapeHtml('Parameter has been removed from its source and is still being referenced in a component. To remove the parameter from the parameter context, first un-reference the parameter, then re-fetch and apply.');
+ }
// initialize tooltip
asteriskIconElement.qtip($.extend({},