You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by sc...@apache.org on 2019/09/05 18:07:20 UTC
[nifi] branch master updated (78d9f13 -> fa8a446)
This is an automated email from the ASF dual-hosted git repository.
scottyaslan pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git.
from 78d9f13 NIFI-6416: This closes #3654. Removing swap locations on SWAP_IN
new eddc562 NIFI-6506 - Add ability to convert properties to parameters * open existing add param dialog from property table * convert prop to param, update param context * keep add parameter dialog open until update of the context completes when converting property to param * Updating parameter context while converting property to parameter. * Disable the Apply button while updating * When Cancel is pressed and there is an update in progress, issue the DELETE request to cancel the [...]
new f3a0452 NIFI-6506 - Fix syntax/style issues. Apply same logic for disabled state when converting prop to param.
new aa07378 NIFI-6505 - Addressing review feedback: reuse single method for getting parameter field values.
new 10b4f6f NIFI-6506 - review feedback * fixed issues converting sensitive props to parameters * only include parameter value if it has changed (even for non-sensitive params) * do not allow null parameter values when editing parameters.
new 385c067 NIFI-6505 - fixing issues uncovered in code review.
new 5936fe3 NIFI-6506 - navigate to process group when selecting to go to controller service from referencing components on parameter context dialog.
new 93d9982 NIFI-6506 - more review fixes
new 183ece1 NIFI-6506 - update parameter context list after successful update.
new a52d176 NIFI-6506 - review feedback
new 5cbade7 NIFI-6505 - fix for editing parameter value. simplify logic in edit dialog for disabled state of the apply button.
new 3c918e2 NIFI-6506 - better empty-string/null handling for edit parameters
new fa8a446 NIFI-6506 - don't show 'Sensitive value set' for null, sensitive params'
The 12 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../canvas/new-parameter-context-dialog.jsp | 4 +
.../nifi-web-ui/src/main/webapp/css/dialog.css | 1 +
.../webapp/css/new-parameter-context-dialog.css | 20 +
.../jquery/propertytable/jquery.propertytable.js | 63 +-
.../webapp/js/nf/canvas/nf-controller-service.js | 10 +
.../webapp/js/nf/canvas/nf-parameter-contexts.js | 652 ++++++++++++++-------
.../js/nf/canvas/nf-processor-configuration.js | 6 +-
7 files changed, 540 insertions(+), 216 deletions(-)
[nifi] 07/12: NIFI-6506 - more review fixes
Posted by sc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
scottyaslan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit 93d99820b775b48905ad670ad5bcda7b7535186f
Author: Rob Fellows <ro...@gmail.com>
AuthorDate: Wed Sep 4 10:45:52 2019 -0400
NIFI-6506 - more review fixes
---
.../canvas/new-parameter-context-dialog.jsp | 2 +-
.../nifi-web-ui/src/main/webapp/css/dialog.css | 20 +---------------
.../webapp/css/new-parameter-context-dialog.css | 20 ++++++++++++++++
.../webapp/js/nf/canvas/nf-parameter-contexts.js | 28 ++++++++++++++--------
4 files changed, 40 insertions(+), 30 deletions(-)
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp
index 3735355..cf1f56b 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp
@@ -119,7 +119,7 @@
</div>
<div id="parameter-context-updating-status">
<div class='parameter-context-step ajax-loading'></div>
- <div class='status-message'>Updating parameter context</div>
+ <div class='status-message ellipsis'>Updating parameter context</div>
</div>
</div>
<div id="referencing-components-template" class="referencing-components-template hidden clear">
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css
index 0503100..ffad338 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css
@@ -379,27 +379,9 @@ div.variable-step {
}
div.parameter-context-step {
+ min-width: 16px;
width: 16px;
height: 16px;
background-color: transparent;
float: right;
}
-
-#parameter-context-updating-status {
- display: none;
- position: absolute;
- left: 12px;
- bottom: 0;
- height: 32px;
-}
-
-#parameter-context-updating-status.show-status {
- display: flex;
- flex-direction: row;
- align-items: center;
-}
-
-#parameter-context-updating-status .status-message {
- white-space: nowrap;
- margin-left: 6px;
-}
\ No newline at end of file
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-context-dialog.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-context-dialog.css
index 2ccb910..8c7501b 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-context-dialog.css
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-context-dialog.css
@@ -101,3 +101,23 @@ span.parameter-context-referencing-component-name {
margin-right: 5px;
max-width: calc(100% - 10px);
}
+
+#parameter-context-updating-status {
+ display: none;
+ position: absolute;
+ left: 12px;
+ bottom: 0;
+ height: 32px;
+ max-width: calc(100% - 230px);
+}
+
+#parameter-context-updating-status.show-status {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+}
+
+#parameter-context-updating-status .status-message {
+ white-space: nowrap;
+ margin-left: 6px;
+}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
index fdafdfb..d9aadf0 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
@@ -217,6 +217,21 @@
};
/**
+ * Resets all of the fields in the add/edit parameter dialog
+ */
+ var resetParameterDialog = function () {
+ $('#parameter-name').val('');
+ $('#parameter-value-field').val('');
+ $('#parameter-description-field').val('');
+ $('#parameter-sensitive-radio-button').prop('checked', false);
+ $('#parameter-not-sensitive-radio-button').prop('checked', false);
+ $('#parameter-name').prop('disabled', false);
+ $('#parameter-sensitive-radio-button').prop('disabled', false);
+ $('#parameter-not-sensitive-radio-button').prop('disabled', false);
+ $('#parameter-set-empty-string-field').removeClass('checkbox-checked').addClass('checkbox-unchecked');
+ };
+
+ /**
* Marshals the parameters in the table.
*/
var marshalParameters = function () {
@@ -1600,7 +1615,7 @@
},
disabled: function () {
var param = serializeParameter(parameter);
- if (_.isEmpty(param.value) && !param.isEmptyStringSet) {
+ if (_.isEmpty(param.value) && !param.isEmptyStringSet && !param.sensitive) {
// must have a value when editing
return true;
} else {
@@ -1766,15 +1781,7 @@
$('#add-parameter').on('click', function () {
var closeHandler = function () {
- $('#parameter-name').val('');
- $('#parameter-value-field').val('');
- $('#parameter-description-field').val('');
- $('#parameter-sensitive-radio-button').prop('checked', false);
- $('#parameter-not-sensitive-radio-button').prop('checked', false);
- $('#parameter-name').prop('disabled', false);
- $('#parameter-sensitive-radio-button').prop('disabled', false);
- $('#parameter-not-sensitive-radio-button').prop('disabled', false);
- $('#parameter-set-empty-string-field').removeClass('checkbox-checked').addClass('checkbox-unchecked');
+ resetParameterDialog();
};
var openHandler = function () {
@@ -2480,6 +2487,7 @@
clearTimeout(updateTimeoutReference);
}
}
+ resetParameterDialog();
// hide the dialog
$(this).modal('hide');
[nifi] 09/12: NIFI-6506 - review feedback
Posted by sc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
scottyaslan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit a52d17628a0ebfab6ca749abf546a9e5e0875eff
Author: Rob Fellows <ro...@gmail.com>
AuthorDate: Wed Sep 4 13:43:13 2019 -0400
NIFI-6506 - review feedback
---
.../webapp/js/nf/canvas/nf-parameter-contexts.js | 25 +++++++++-------------
1 file changed, 10 insertions(+), 15 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-contexts.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
index d7429f7..7764410 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
@@ -888,14 +888,6 @@
// validate the parameter is not a duplicate
var matchingParameter = _.find(existingParameters, { name: parameter.name });
- // If in edit mode, the value can not be null
- if (editMode === true && _.isNil(parameter.value)) {
- nfDialog.showOkDialog({
- headerText: 'Configuration Error',
- dialogContent: 'The value of the parameter must be specified.'
- });
- }
-
// Valid if no duplicate is found or it is edit mode and a matching parameter was found
if (_.isNil(matchingParameter) || (editMode === true && !_.isNil(matchingParameter))) {
return true;
@@ -1183,7 +1175,7 @@
component: updateRequestEntity.request.parameterContext
});
- var item = parameterContextData.getItemById(parameterContextEntity.component.id);
+ var item = parameterContextData.getItemById(parameterContextEntity.id);
if (nfCommon.isDefinedAndNotNull(item)) {
parameterContextData.updateItem(parameterContextEntity.id, parameterContextEntity);
}
@@ -1615,11 +1607,14 @@
},
disabled: function () {
var param = serializeParameter(parameter);
- if (_.isEmpty(param.value) && !param.isEmptyStringSet && !param.sensitive) {
- // must have a value when editing
- return true;
+ if (param.hasValueChanged) {
+ if (_.isEmpty(param.value) && !param.isEmptyStringSet) {
+ // must have a value when editing
+ return true;
+ }
+ return false;
} else {
- return !param.hasValueChanged && !param.hasDescriptionChanged;
+ return !param.hasDescriptionChanged;
}
},
handler: {
@@ -1825,8 +1820,8 @@
$(this).modal('hide');
}
}
- }]).modal('show');
- $('#parameter-dialog').modal('show');
+ }])
+ .modal('show');
});
$('#parameter-context-name').on('keyup', function (evt) {
[nifi] 05/12: NIFI-6505 - fixing issues uncovered in code review.
Posted by sc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
scottyaslan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit 385c06750705c280f0768f214d3c5bfb63b4b4ef
Author: Rob Fellows <ro...@gmail.com>
AuthorDate: Wed Sep 4 08:41:53 2019 -0400
NIFI-6505 - fixing issues uncovered in code review.
---
.../webapp/js/nf/canvas/nf-parameter-contexts.js | 31 +++++++++++++---------
1 file changed, 18 insertions(+), 13 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-contexts.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
index 3fdc7f0..083138e 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
@@ -810,7 +810,7 @@
* Builds a parameter object from the user-entered parameter inputs
*
* @param originalParameter Optional parameter to compare value against to determine if it has changed
- * @return {{isEmptyStringSet: *, name: *, description: *, sensitive: *, value: *}}
+ * @return {{isEmptyStringSet: *, name: *, description: *, sensitive: *, value: *, hasValueChanged: *, hasDescriptionChanged: *}}
*/
var serializeParameter = function (originalParameter) {
var name = $.trim($('#parameter-name').val());
@@ -821,8 +821,8 @@
var parameter = {
name: name,
- value: value,
- description: description,
+ value: null,
+ description: null,
sensitive: isSensitive,
isEmptyStringSet: isEmptyStringSet,
previousValue: null,
@@ -837,7 +837,8 @@
description: description,
sensitive: isSensitive,
isEmptyStringSet: isEmptyStringSet,
- hasValueChanged: serializedValue.hasChanged
+ hasValueChanged: serializedValue.hasChanged,
+ hasDescriptionChanged: description !== _.get(originalParameter, 'description', '')
}
};
@@ -904,9 +905,10 @@
var serializeValue = function (input, parameter, isChecked) {
var serializedValue;
- var hasChanged = parameter.value !== parameter.previousValue;
var value = input.val();
+ var hasChanged = parameter.value !== value;
+
if (!nfCommon.isBlank(value)) {
// if the value is sensitive and the user has not made a change
if (!_.isEmpty(parameter) && parameter.sensitive === true && input.hasClass('sensitive') && parameter.isNew === false) {
@@ -957,7 +959,8 @@
isEmptyStringSet: serializedParam.isEmptyStringSet,
isNew: originalParameter.isNew,
hasValueChanged: serializedParam.hasValueChanged,
- isModified: serializedParam.hasValueChanged || serializedParam.description !== originalParameter.description
+ hasDescriptionChanged: serializedParam.hasDescriptionChanged,
+ isModified: serializedParam.hasValueChanged || serializedParam.hasDescriptionChanged
});
// update row for the parameter
@@ -1032,11 +1035,10 @@
text: '#ffffff'
},
disabled: function () {
- var param = serializeParameter();
- if (_.isEmpty(param.name) || (_.isNil(param.value) && !param.isEmptyStringSet)) {
- return true;
+ if ($('#parameter-context-name').val() !== '') {
+ return false;
}
- return false;
+ return true;
},
handler: {
click: function () {
@@ -1596,7 +1598,12 @@
},
disabled: function () {
var param = serializeParameter(parameter);
- return !param.hasValueChanged && param.description === parameter.description;
+ if (_.isEmpty(param.value) && !param.isEmptyStringSet) {
+ // must have a value when editing
+ return true;
+ } else {
+ return !param.hasValueChanged && !param.hasDescriptionChanged;
+ }
},
handler: {
click: function () {
@@ -1889,8 +1896,6 @@
}
}])
.modal('show');
-
- $('#parameter-dialog').modal('show');
};
/**
[nifi] 10/12: NIFI-6505 - fix for editing parameter value. simplify
logic in edit dialog for disabled state of the apply button.
Posted by sc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
scottyaslan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit 5cbade7b1d6ab3fe19827d393b4066db677ed309
Author: Rob Fellows <ro...@gmail.com>
AuthorDate: Wed Sep 4 14:36:57 2019 -0400
NIFI-6505 - fix for editing parameter value. simplify logic in edit dialog for disabled state of the apply button.
---
.../webapp/js/nf/canvas/nf-parameter-contexts.js | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 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-contexts.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
index 7764410..99a2e70 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
@@ -836,6 +836,16 @@
var description = $('#parameter-description-field').val();
var isSensitive = $('#parameter-dialog').find('input[name="sensitive"]:checked').val() === 'sensitive' ? true : false;
+ var validateValue = function () {
+ // updates to a parameter cannot have a null value
+ if (!this.isNew) {
+ if (_.isEmpty(this.value) && !this.isEmptyStringSet) {
+ return false;
+ }
+ }
+ return true;
+ };
+
var parameter = {
name: name,
value: null,
@@ -855,7 +865,8 @@
sensitive: isSensitive,
isEmptyStringSet: isEmptyStringSet,
hasValueChanged: serializedValue.hasChanged,
- hasDescriptionChanged: description !== _.get(originalParameter, 'description', '')
+ hasDescriptionChanged: description !== _.get(originalParameter, 'description', ''),
+ isValueValid: validateValue
}
};
@@ -969,6 +980,7 @@
isNew: originalParameter.isNew,
hasValueChanged: serializedParam.hasValueChanged,
hasDescriptionChanged: serializedParam.hasDescriptionChanged,
+ value: serializedParam.value,
isModified: serializedParam.hasValueChanged || serializedParam.hasDescriptionChanged
});
@@ -1608,11 +1620,7 @@
disabled: function () {
var param = serializeParameter(parameter);
if (param.hasValueChanged) {
- if (_.isEmpty(param.value) && !param.isEmptyStringSet) {
- // must have a value when editing
- return true;
- }
- return false;
+ return !param.isValueValid();
} else {
return !param.hasDescriptionChanged;
}
[nifi] 01/12: NIFI-6506 - Add ability to convert properties to
parameters * open existing add param dialog from property table * convert
prop to param,
update param context * keep add parameter dialog open until update of the
context completes when converting property to param * Updating parameter
context while converting property to parameter. * Disable the Apply button
while updating * When Cancel is pressed and there is an update in progress,
issue the DELETE request to cancel the update. * Show some [...]
Posted by sc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
scottyaslan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit eddc5624d8b4da4707d790c563c929dfd1af4bf1
Author: Rob Fellows <ro...@gmail.com>
AuthorDate: Tue Aug 13 14:36:13 2019 -0400
NIFI-6506 - Add ability to convert properties to parameters
* open existing add param dialog from property table
* convert prop to param, update param context
* keep add parameter dialog open until update of the context completes when converting property to param
* Updating parameter context while converting property to parameter.
* Disable the Apply button while updating
* When Cancel is pressed and there is an update in progress, issue the DELETE request to cancel the update.
* Show some status in the Add Parameter dialog when parameter context is updating following a property conversion.
* enforce character restrictions on property names.
* Add convert property to parameter to controller service config.
* Properly set sensitive setting when converting sensitive properties
* Allow converting of properties from controller services configuration into parameters
* Refactor addNewParameter method to be able to share common parts with convertPropertyToParameter
---
.../canvas/new-parameter-context-dialog.jsp | 4 +
.../nifi-web-ui/src/main/webapp/css/dialog.css | 19 +
.../jquery/propertytable/jquery.propertytable.js | 62 ++-
.../webapp/js/nf/canvas/nf-controller-service.js | 10 +
.../webapp/js/nf/canvas/nf-parameter-contexts.js | 444 +++++++++++++++------
.../js/nf/canvas/nf-processor-configuration.js | 6 +-
6 files changed, 418 insertions(+), 127 deletions(-)
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp
index bc264bd..3735355 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp
@@ -117,6 +117,10 @@
<div class="clear"></div>
</div>
</div>
+ <div id="parameter-context-updating-status">
+ <div class='parameter-context-step ajax-loading'></div>
+ <div class='status-message'>Updating parameter context</div>
+ </div>
</div>
<div id="referencing-components-template" class="referencing-components-template hidden clear">
<div class="setting">
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css
index eb71a9e..0503100 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/dialog.css
@@ -384,3 +384,22 @@ div.parameter-context-step {
background-color: transparent;
float: right;
}
+
+#parameter-context-updating-status {
+ display: none;
+ position: absolute;
+ left: 12px;
+ bottom: 0;
+ height: 32px;
+}
+
+#parameter-context-updating-status.show-status {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+}
+
+#parameter-context-updating-status .status-message {
+ white-space: nowrap;
+ margin-left: 6px;
+}
\ No newline at end of file
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
index 39334ac..7709824 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
@@ -30,7 +30,9 @@
'nf.Client',
'nf.ErrorHandler',
'nf.ProcessGroupConfiguration',
- 'nf.Settings'],
+ 'nf.Settings',
+ 'nf.ParameterContexts',
+ 'lodash-core'],
function ($,
Slick,
nfCommon,
@@ -40,7 +42,9 @@
nfClient,
nfErrorHandler,
nfProcessGroupConfiguration,
- nfSettings) {
+ nfSettings,
+ nfParameterContexts,
+ _) {
factory($,
Slick,
nfCommon,
@@ -50,7 +54,9 @@
nfClient,
nfErrorHandler,
nfProcessGroupConfiguration,
- nfSettings);
+ nfSettings,
+ nfParameterContexts,
+ _);
});
} else if (typeof exports === 'object' && typeof module === 'object') {
factory(require('jquery'),
@@ -62,7 +68,9 @@
require('nf.Client'),
require('nf.ErrorHandler'),
require('nf.ProcessGroupConfiguration'),
- require('nf.Settings'));
+ require('nf.Settings'),
+ recuire('nf.ParameterContexts'),
+ require('lodash-core'));
} else {
factory(root.$,
root.Slick,
@@ -73,7 +81,9 @@
root.nf.Client,
root.nf.ErrorHandler,
root.nf.ProcessGroupConfiguration,
- root.nf.Settings);
+ root.nf.Settings,
+ root.nf.ParameterContexts,
+ root._);
}
}(this, function ($,
Slick,
@@ -84,7 +94,9 @@
nfClient,
nfErrorHandler,
nfProcessGroupConfiguration,
- nfSettings) {
+ nfSettings,
+ nfParameterContexts,
+ _) {
var groupId = null;
var COMBO_MIN_WIDTH = 212;
@@ -1350,9 +1362,22 @@
});
}
- // allow user defined properties to be removed
- if (options.readOnly !== true && dataContext.type === 'userDefined') {
- markup += '<div title="Delete" class="delete-property pointer fa fa-trash"></div>';
+ if (options.readOnly !== true) {
+ var canModifyParamContexts = nfCommon.canModifyParameterContexts();
+ var paramContextIsSet = false;
+ if (_.isFunction(options.getParameterContextId)) {
+ paramContextIsSet = !_.isNil(options.getParameterContextId(groupId));
+ }
+ var referencesParam = referencesParameter(dataContext.value);
+
+ if (canModifyParamContexts && paramContextIsSet && !referencesParam && !identifiesControllerService) {
+ markup += '<div title="Convert to parameter" class="convert-to-parameter pointer fa fa-level-up"></div>';
+ }
+
+ // allow user defined properties to be removed
+ if (dataContext.type === 'userDefined') {
+ markup += '<div title="Delete" class="delete-property pointer fa fa-trash"></div>';
+ }
}
return markup;
@@ -1545,6 +1570,25 @@
});
}
}
+ } else if (target.hasClass('convert-to-parameter')) {
+ var parameterContextId;
+ if (_.isFunction(options.getParameterContextId)) {
+ parameterContextId = options.getParameterContextId(groupId);
+ }
+
+ if (options.readOnly !== true && !_.isNil(parameterContextId)) {
+ var descriptors = table.data('descriptors');
+ var propertyDescriptor = descriptors[property.displayName];
+
+ nfParameterContexts.convertPropertyToParameter(property, propertyDescriptor, parameterContextId)
+ .done(function (parameter) {
+ // set the property value to the reference the parameter that was created
+ propertyData.updateItem(property.id, $.extend(property, {
+ previousValue: property.value,
+ value: '#{' + parameter.name + '}'
+ }));
+ });
+ }
}
}
});
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
index 6814edc..c80d8c5 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
@@ -1875,6 +1875,16 @@
},
goToServiceDeferred: function () {
return goToServiceFromProperty(serviceTable);
+ },
+ getParameterContextId: function (groupId) {
+ // attempt to identify the parameter context id, conditional based on whether
+ // the user is configuring the current process group
+ if (_.isNil(groupId) || groupId === nfCanvasUtils.getGroupId()) {
+ return nfCanvasUtils.getParameterContextId();
+ } else {
+ var parentProcessGroup = nfCanvasUtils.getComponentByType('ProcessGroup').get(groupId);
+ return parentProcessGroup.parameterContextId;
+ }
}
});
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
index 336d7de..ec617aa 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
@@ -36,9 +36,10 @@
'nf.PolicyManagement',
'nf.Processor',
'nf.ProcessGroup',
- 'nf.ProcessGroupConfiguration'],
- function ($, Slick, d3, nfClient, nfDialog, nfStorage, nfCommon, nfCanvasUtils, nfNgBridge, nfErrorHandler, nfFilteredDialogCommon, nfShell, nfComponentState, nfComponentVersion, nfPolicyManagement, nfProcessor, nfProcessGroup, nfProcessGroupConfiguration) {
- return (nf.ParameterContexts = factory($, Slick, d3, nfClient, nfDialog, nfStorage, nfCommon, nfCanvasUtils, nfNgBridge, nfErrorHandler, nfFilteredDialogCommon, nfShell, nfComponentState, nfComponentVersion, nfPolicyManagement, nfProcessor, nfProcessGroup, nfProcessGroupConfiguration));
+ 'nf.ProcessGroupConfiguration',
+ 'lodash-core'],
+ function ($, Slick, d3, nfClient, nfDialog, nfStorage, nfCommon, nfCanvasUtils, nfNgBridge, nfErrorHandler, nfFilteredDialogCommon, nfShell, nfComponentState, nfComponentVersion, nfPolicyManagement, nfProcessor, nfProcessGroup, nfProcessGroupConfiguration, _) {
+ return (nf.ParameterContexts = factory($, Slick, d3, nfClient, nfDialog, nfStorage, nfCommon, nfCanvasUtils, nfNgBridge, nfErrorHandler, nfFilteredDialogCommon, nfShell, nfComponentState, nfComponentVersion, nfPolicyManagement, nfProcessor, nfProcessGroup, nfProcessGroupConfiguration, _));
});
} else if (typeof exports === 'object' && typeof module === 'object') {
module.exports = (nf.ParameterContexts =
@@ -59,7 +60,8 @@
require('nf.PolicyManagement'),
require('nf.Processor'),
require('nf.ProcessGroup'),
- require('nf.ProcessGroupConfiguration')));
+ require('nf.ProcessGroupConfiguration'),
+ require('lodash-core')));
} else {
nf.ParameterContexts = factory(root.$,
root.Slick,
@@ -78,9 +80,10 @@
root.nf.PolicyManagement,
root.nf.Processor,
root.nf.ProcessGroup,
- root.nf.ProcessGroupConfiguration);
+ root.nf.ProcessGroupConfiguration,
+ root._);
}
-}(this, function ($, Slick, d3, nfClient, nfDialog, nfStorage, nfCommon, nfCanvasUtils, nfNgBridge, nfErrorHandler, nfFilteredDialogCommon, nfShell, nfComponentState, nfComponentVersion, nfPolicyManagement, nfProcessor, nfProcessGroup, nfProcessGroupConfiguration) {
+}(this, function ($, Slick, d3, nfClient, nfDialog, nfStorage, nfCommon, nfCanvasUtils, nfNgBridge, nfErrorHandler, nfFilteredDialogCommon, nfShell, nfComponentState, nfComponentVersion, nfPolicyManagement, nfProcessor, nfProcessGroup, nfProcessGroupConfiguration, _) {
'use strict';
var config = {
@@ -139,8 +142,10 @@
// defines a function for sorting
var comparer = function (a, b) {
if (a.permissions.canRead && b.permissions.canRead) {
- var aString = nfCommon.isDefinedAndNotNull(a.component[sortDetails.columnId]) ? a.component[sortDetails.columnId] : '';
- var bString = nfCommon.isDefinedAndNotNull(b.component[sortDetails.columnId]) ? b.component[sortDetails.columnId] : '';
+
+ // use _.get to try to access the piece of the object you want, but provide a default value it it is not there
+ var aString = _.get(a, 'component[' + sortDetails.columnId + ']', '');
+ var bString = _.get(b, 'component[' + sortDetails.columnId + ']', '');
return aString === bString ? 0 : aString > bString ? 1 : -1;
} else {
if (!a.permissions.canRead && !b.permissions.canRead) {
@@ -170,8 +175,8 @@
// defines a function for sorting
var comparer = function (a, b) {
if (sortDetails.columnId === 'name') {
- var aString = nfCommon.isDefinedAndNotNull(a[sortDetails.columnId]) ? a[sortDetails.columnId] : '';
- var bString = nfCommon.isDefinedAndNotNull(b[sortDetails.columnId]) ? b[sortDetails.columnId] : '';
+ var aString = _.get(a, '[' + sortDetails.columnId + ']', '');
+ var bString = _.get(b, '[' + sortDetails.columnId + ']', '');
return aString === bString ? 0 : aString > bString ? 1 : -1;
}
};
@@ -752,139 +757,128 @@
return a.component.name.localeCompare(b.component.name);
};
- var parameterKeyRegex = /^[a-zA-Z0-9-_. ]+$/;
-
/**
* Adds a new parameter.
*/
var addNewParameter = function () {
- var parameterName = $.trim($('#parameter-name').val());
+ var param = getParameterFromFieldValues();
- // ensure the parameter name is specified
- if (parameterName !== '' && parameterKeyRegex.test(parameterName)) {
- var parameterGrid = $('#parameter-table').data('gridInstance');
- var parameterData = parameterGrid.getData();
+ var parameterGrid = $('#parameter-table').data('gridInstance');
+ var parameterData = parameterGrid.getData();
- // ensure the parameter name is unique
- var matchingParameter = null;
- $.each(parameterData.getItems(), function (_, item) {
- if (parameterName === item.name) {
- matchingParameter = item;
- return false;
- }
- });
+ var isValid = validateParameter(param, parameterData.getItems());
- var isSensitive = $('#parameter-dialog').find('input[name="sensitive"]:checked').val() === "sensitive" ? true : false;
- var isChecked = $('#parameter-set-empty-string-field').hasClass('checkbox-checked');
+ if (isValid) {
- if (matchingParameter === null) {
- var parameter = {
- id: parameterCount,
- hidden: false,
- type: 'Parameter',
- sensitive: isSensitive,
- name: parameterName,
- description: $('#parameter-description-field').val(),
- previousValue: null,
- previousDescription: null,
- isEditable: true,
- isEmptyStringSet: isChecked,
- isModified: true,
- hasValueChanged: false,
- isNew: true
- };
-
- var value = $('#parameter-value-field').val();
- if (!nfCommon.isBlank(value)) {
- parameter.value = value;
- } else {
- if (isChecked) {
- parameter.value = '';
- } else {
- parameter.value = null;
- }
- }
+ var parameter = _.extend({}, param, {
+ id: _.defaultTo(param.id, parameterCount),
+ hidden: false,
+ type: 'Parameter',
+ previousValue: null,
+ previousDescription: null,
+ isEditable: true,
+ isModified: true,
+ hasValueChanged: false,
+ isNew: true,
+ });
+ if (_.isNil(param.id)) {
// add a row for the new parameter
parameterData.addItem(parameter);
-
- // sort the data
- parameterData.reSort();
-
- // select the new parameter row
- var row = parameterData.getRowById(parameterCount);
- parameterGrid.setActiveCell(row, parameterGrid.getColumnIndex('value'));
- parameterCount++;
} else {
- // if this row is currently hidden, make sure the sensitivity is equivalent before we allow recreate
- if (matchingParameter.hidden === true && matchingParameter.sensitive !== isSensitive) {
- nfDialog.showOkDialog({
- headerText: 'Parameter Exists',
- dialogContent: 'A parameter with this name has been marked for deletion. Please apply this change to delete this parameter from the parameter context before recreating it with a different sensitivity.'
- });
- } else if (matchingParameter.hidden === true && matchingParameter.sensitive === isSensitive) {
- var parameter = $.extend(matchingParameter, {
- hidden: false,
- sensitive: isSensitive,
- previousValue: null,
- description: $('#parameter-description-field').val(),
- previousDescription: null,
- isEditable: true,
- isEmptyStringSet: isChecked,
- isModified: true,
- hasValueChanged: false,
- isNew: true
- });
+ parameterData.updateItem(param.id, parameter);
+ }
- var value = $('#parameter-value-field').val();
- if (!nfCommon.isBlank(value)) {
- parameter.value = value;
- } else {
- if (isChecked) {
- parameter.value = '';
- } else {
- parameter.value = null;
- }
- }
+ // sort the data
+ parameterData.reSort();
- parameterData.updateItem(matchingParameter.id, parameter);
+ // select the new parameter row
+ var row = parameterData.getRowById(parameterCount);
+ parameterGrid.setActiveCell(row, parameterGrid.getColumnIndex('value'));
+ parameterCount++;
- // sort the data
- parameterData.reSort();
+ // close the new parameter dialog
+ $('#parameter-dialog').modal('hide');
- // select the new parameter row
- var row = parameterData.getRowById(matchingParameter.id);
- parameterGrid.setActiveCell(row, parameterGrid.getColumnIndex('value'));
- parameterCount++;
- } else {
- nfDialog.showOkDialog({
- headerText: 'Parameter Exists',
- dialogContent: 'A parameter with this name already exists.'
- });
+ }
- // select the existing properties row
- var matchingRow = parameterData.getRowById(matchingParameter.id);
- parameterGrid.setSelectedRows([matchingRow]);
- parameterGrid.scrollRowIntoView(matchingRow);
- }
- }
+ // update the buttons to possibly trigger the disabled state
+ $('#parameter-context-dialog').modal('refreshButtons');
+ };
- // close the new parameter dialog
- $('#parameter-dialog').modal('hide');
+ /**
+ * Builds a parameter object from the user-entered parameter inputs
+ *
+ * @return {{isEmptyStringSet: *, name: *, description: *, sensitive: *, value: *}}
+ */
+ var getParameterFromFieldValues = function () {
+ var name = $.trim($('#parameter-name').val());
+ var value = $('#parameter-value-field').val();
+ var description = $('#parameter-description-field').val();
+ var isSensitive = $('#parameter-dialog').find('input[name="sensitive"]:checked').val() === 'sensitive' ? true : false;
+ var isEmptyStringSet = $('#parameter-set-empty-string-field').hasClass('checkbox-checked');
+
+ if (_.isEmpty(value)) {
+ value = isEmptyStringSet ? '' : null;
+ }
- // update the buttons to possibly trigger the disabled state
- $('#parameter-context-dialog').modal('refreshButtons');
+ return {
+ name,
+ value,
+ description,
+ sensitive: isSensitive,
+ isEmptyStringSet
+ }
+ };
- } else if (!parameterKeyRegex.test(parameterName)) {
+ /**
+ * Checks the validity of a parameter
+ * @param parameter Parameter to validate
+ * @param existingParameters Existing parameters to verify there are no duplicates
+ * @return {boolean}
+ */
+ var validateParameter = function (parameter, existingParameters) {
+ if (parameter.name === '') {
nfDialog.showOkDialog({
headerText: 'Configuration Error',
- dialogContent: 'This parameter appears to have an invalid character or characters. Only alpha-numeric characters (a-z, A-Z, 0-9), hyphens (-), underscores (_), periods (.), and spaces ( ) are accepted.'
+ dialogContent: 'The name of the parameter must be specified.'
});
- } else {
+ return false;
+ }
+
+ // make sure the parameter name does not use any unsupported characters
+ var parameterNameRegex = /^[a-zA-Z0-9-_. ]+$/;
+ if (!parameterNameRegex.test(parameter.name)) {
nfDialog.showOkDialog({
headerText: 'Configuration Error',
- dialogContent: 'The name of the parameter must be specified.'
+ dialogContent: 'The name of the parameter appears to have an invalid character or characters. Only alpha-numeric characters (a-z, A-Z, 0-9), hyphens (-), underscores (_), periods (.), and spaces ( ) are accepted.'
});
+ return false;
+ }
+
+ // validate the parameter is not a duplicate
+ var matchingParameter = _.find(existingParameters, { name: parameter.name });
+
+ if (_.isNil(matchingParameter)) {
+ return true;
+ } else {
+ var matchingParamIsHidden = _.get(matchingParameter, 'hidden', false);
+ if (matchingParamIsHidden && matchingParameter.sensitive !== parameter.sensitive) {
+ nfDialog.showOkDialog({
+ headerText: 'Parameter Exists',
+ dialogContent: 'A parameter with this name has been marked for deletion. Please apply this change to delete this parameter from the parameter context before recreating it with a different sensitivity.'
+ });
+ } else if (matchingParamIsHidden && matchingParameter.sensitive === parameter.sensitive) {
+ // set the id of the parameter that was found. It could be used to update it.
+ parameter.id = matchingParameter.id;
+ return true;
+ } else {
+ nfDialog.showOkDialog({
+ headerText: 'Parameter Exists',
+ dialogContent: 'A parameter with this name already exists.'
+ });
+ }
+ return false;
}
};
@@ -1856,6 +1850,50 @@
initParameterTable();
};
+ var openAddParameterDialog = function ({ onApply, onCancel }) {
+ $('#parameter-dialog')
+ .modal('setHeaderText', 'Add Parameter')
+ .modal('setButtonModel', [{
+ buttonText: 'Apply',
+ color: {
+ base: '#728E9B',
+ hover: '#004849',
+ text: '#ffffff'
+ },
+ disabled: function () {
+ var parameterName = $('#parameter-name').val();
+ var parameterValue = $('#parameter-value-field').val();
+ var isEmptyString = $('#parameter-dialog').find('.nf-checkbox').hasClass('checkbox-checked');
+ var isUpdatingParameterContext = $('#parameter-context-updating-status').hasClass('show-status');
+
+ if (isUpdatingParameterContext) {
+ return true;
+ }
+
+ if ((parameterName !== '' && parameterValue !== '') || (parameterName !== '' && isEmptyString)) {
+ return false;
+ }
+ return true;
+ },
+ handler: {
+ click: onApply
+ }
+ }, {
+ buttonText: 'Cancel',
+ color: {
+ base: '#E3E8EB',
+ hover: '#C7D2D7',
+ text: '#004849'
+ },
+ handler: {
+ click: onCancel
+ }
+ }])
+ .modal('show');
+
+ $('#parameter-dialog').modal('show');
+ };
+
/**
* Loads the parameter contexts.
*/
@@ -2298,6 +2336,178 @@
var parameterContextData = parameterContextGrid.getData();
parameterContextData.deleteItem(parameterContextEntity.id);
}).fail(nfErrorHandler.handleAjaxError);
+ },
+
+ /**
+ * Converts a property in to a parameter and adds the parameter to the current parameter context.
+ * @param property property to convert
+ * @param propertyDescriptor property descriptor for the property bering converted
+ * @param parameterContextId id of the current parameter context
+ * @return Promise A Promise that resolves with the added parameter
+ */
+ convertPropertyToParameter: function (property, propertyDescriptor, parameterContextId) {
+ return $.Deferred(function (deferred) {
+
+ if (_.isNil(parameterContextId)) {
+ nfDialog.showOkDialog({
+ headerText: 'Unable to Convert Property',
+ dialogContent: 'There is no parameter context set for the current process group.'
+ });
+
+ deferred.reject();
+ }
+
+ var getContext = $.ajax({
+ type: 'GET',
+ url: config.urls.parameterContexts + '/' + encodeURIComponent(parameterContextId),
+ dataType: 'json'
+ });
+
+ // get the parameter context, show the dialog
+ getContext
+ .done(function (parameterContextEntity) {
+ var showUpdateStatus = function (isOn) {
+ if (isOn) {
+ // show the status message
+ $('#parameter-context-updating-status').addClass('show-status');
+
+ // disable the apply button
+ $('#parameter-dialog').modal('refreshButtons');
+ } else {
+ $('#parameter-context-updating-status').removeClass('show-status');
+
+ // possibly re-enable the apply button
+ $('#parameter-dialog').modal('refreshButtons');
+ }
+ };
+
+ var requestId;
+ var updateTimeoutReference;
+
+ openAddParameterDialog({
+ onApply: function () {
+ showUpdateStatus(true);
+
+ var existingParameters = parameterContextEntity.component.parameters.map(function(p) { return p.parameter });
+ var parameter = getParameterFromFieldValues();
+
+ var isValid = validateParameter(parameter, existingParameters);
+
+ if (!isValid) {
+ // Do not resolve or reject here. Give the user the chance to fix the issue.
+ showUpdateStatus(false);
+ return;
+ }
+
+ // only adding a new parameter, just put the new one in the list for the update
+ parameterContextEntity.component.parameters = [{
+ parameter: {
+ name: parameter.name,
+ value: parameter.value,
+ sensitive: parameter.sensitive,
+ description: parameter.description
+ }}];
+
+ requestId = null;
+
+ // initiate the parameter context update with the new parameter
+ submitUpdateRequest(parameterContextEntity)
+ .done(function(response) {
+ var pollUpdateRequest = function (updateRequestEntity) {
+ var updateRequest = updateRequestEntity.request;
+ var errored = !_.isEmpty(updateRequest.failureReason);
+
+ // get the request id
+ requestId = updateRequest.requestId;
+
+ if (updateRequest.complete === true) {
+ showUpdateStatus(false);
+
+ if (errored) {
+ nfDialog.showOkDialog({
+ headerText: 'Parameter Context Update Error',
+ dialogContent: 'Unable to complete parameter context update request: ' + nfCommon.escapeHtml(updateRequest.failureReason)
+ });
+ // update failed, therefore converting failed. reject the promise for the caller
+ deferred.reject();
+ } else {
+ // resolve the promise for the caller if the update was successful
+ deferred.resolve(parameter);
+ }
+
+ // delete the update request
+ deleteUpdateRequest(parameterContextEntity.id, requestId);
+
+ // hide the param dialog
+ $('#parameter-dialog').modal('hide');
+
+ } else {
+ // wait to get an updated status
+ updateTimeoutReference = setTimeout(function () {
+ getUpdateRequest(parameterContextEntity.id, requestId)
+ .done(function (getResponse) {
+ pollUpdateRequest(getResponse);
+ })
+ .fail(function (e) {
+ if (!_.isNil(parameterContextEntity.id) && !_.isNil(requestId)) {
+ deleteUpdateRequest(parameterContextEntity.id, requestId);
+ }
+ deferred.reject(e)
+ });
+ }, 1000);
+ }
+ };
+
+ pollUpdateRequest(response);
+ })
+ .fail(function (e) {
+ deferred.reject(e)
+ });
+ },
+ onCancel: function() {
+ showUpdateStatus(false);
+
+ if (!_.isNil(parameterContextEntity.id) && !_.isNil(requestId)) {
+ deleteUpdateRequest(parameterContextEntity.id, requestId);
+ requestId = null;
+ if (!_.isNil(updateTimeoutReference)) {
+ clearTimeout(updateTimeoutReference);
+ }
+ }
+
+ // hide the dialog
+ $(this).modal('hide');
+ }
+ });
+
+ // set the values of the form from the passed in property
+ $('#parameter-name').val(property.displayName);
+ $('#parameter-name').prop('disabled', false);
+ $('#parameter-sensitive-radio-button').prop('disabled', true);
+ $('#parameter-not-sensitive-radio-button').prop('disabled', true);
+ if (property.value === '') {
+ $('#parameter-dialog').find('.nf-checkbox').removeClass('checkbox-unchecked').addClass('checkbox-checked');
+ } else {
+ $('#parameter-dialog').find('.nf-checkbox').removeClass('checkbox-checked').addClass('checkbox-unchecked');
+ }
+
+ if (nfCommon.isSensitiveProperty(propertyDescriptor)) {
+ $('#parameter-sensitive-radio-button').prop('checked', true);
+ $('#parameter-not-sensitive-radio-button').prop('checked', false);
+ } else {
+ $('#parameter-sensitive-radio-button').prop('checked', false);
+ $('#parameter-not-sensitive-radio-button').prop('checked', true);
+ $('#parameter-value-field').val(property.value);
+ }
+ $('#parameter-description-field').val(property.description);
+
+ // update the buttons to possibly trigger the disabled state
+ $('#parameter-dialog').modal('refreshButtons');
+ })
+ .fail(function(e) {
+ deferred.reject(e);
+ });
+ }).promise();
}
};
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor-configuration.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor-configuration.js
index aaa45f4..90cd05f 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor-configuration.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-processor-configuration.js
@@ -659,7 +659,11 @@
}
}).promise();
},
- goToServiceDeferred: goToServiceFromProperty
+ goToServiceDeferred: goToServiceFromProperty,
+ getParameterContextId: function (groupId) {
+ // processors being configured must be in the current group
+ return nfCanvasUtils.getParameterContextId();
+ }
});
},
[nifi] 11/12: NIFI-6506 - better empty-string/null handling for
edit parameters
Posted by sc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
scottyaslan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit 3c918e25bd08d9dea4dc3c92e7a410839045ed92
Author: Rob Fellows <ro...@gmail.com>
AuthorDate: Wed Sep 4 15:11:24 2019 -0400
NIFI-6506 - better empty-string/null handling for edit parameters
---
.../nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
index 99a2e70..63f3da8 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
@@ -927,6 +927,10 @@
var serializedValue;
var value = input.val();
+ if (!isChecked && _.isEmpty(value)) {
+ value = null;
+ }
+
var hasChanged = parameter.value !== value;
if (!nfCommon.isBlank(value)) {
[nifi] 02/12: NIFI-6506 - Fix syntax/style issues. Apply same logic
for disabled state when converting prop to param.
Posted by sc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
scottyaslan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit f3a04521c2cb37c1bc03a0c458e90889b43a9878
Author: Rob Fellows <ro...@gmail.com>
AuthorDate: Tue Sep 3 08:54:29 2019 -0400
NIFI-6506 - Fix syntax/style issues. Apply same logic for disabled state when converting prop to param.
---
.../webapp/js/nf/canvas/nf-parameter-contexts.js | 32 +++++++++++++++-------
1 file changed, 22 insertions(+), 10 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-contexts.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
index ec617aa..e3eac2c 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
@@ -823,11 +823,11 @@
}
return {
- name,
- value,
- description,
+ name: name,
+ value: value,
+ description: description,
sensitive: isSensitive,
- isEmptyStringSet
+ isEmptyStringSet: isEmptyStringSet
}
};
@@ -1850,7 +1850,21 @@
initParameterTable();
};
- var openAddParameterDialog = function ({ onApply, onCancel }) {
+ /**
+ * Opens the Add Parameter Dialog.
+ * @param {Object} callbacks object with callbacks for handling the cancel and apply button functionality:
+ *
+ * @example
+ * openAddParameterDialog({
+ * onApply: function () {
+ * // handle the apply button being clicked
+ * },
+ * onCancel: function() {
+ * // handle the cancel button being clicked
+ * }
+ * });
+ */
+ var openAddParameterDialog = function (callbacks) {
$('#parameter-dialog')
.modal('setHeaderText', 'Add Parameter')
.modal('setButtonModel', [{
@@ -1862,21 +1876,19 @@
},
disabled: function () {
var parameterName = $('#parameter-name').val();
- var parameterValue = $('#parameter-value-field').val();
- var isEmptyString = $('#parameter-dialog').find('.nf-checkbox').hasClass('checkbox-checked');
var isUpdatingParameterContext = $('#parameter-context-updating-status').hasClass('show-status');
if (isUpdatingParameterContext) {
return true;
}
- if ((parameterName !== '' && parameterValue !== '') || (parameterName !== '' && isEmptyString)) {
+ if (parameterName !== '') {
return false;
}
return true;
},
handler: {
- click: onApply
+ click: callbacks.onApply
}
}, {
buttonText: 'Cancel',
@@ -1886,7 +1898,7 @@
text: '#004849'
},
handler: {
- click: onCancel
+ click: callbacks.onCancel
}
}])
.modal('show');
[nifi] 06/12: NIFI-6506 - navigate to process group when selecting
to go to controller service from referencing components on parameter
context dialog.
Posted by sc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
scottyaslan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit 5936fe34877ca1a5730b7f7fe5fda6cd16ff9213
Author: Rob Fellows <ro...@gmail.com>
AuthorDate: Wed Sep 4 09:34:41 2019 -0400
NIFI-6506 - navigate to process group when selecting to go to controller service from referencing components on parameter context dialog.
---
.../nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
index 083138e..fdafdfb 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
@@ -439,6 +439,8 @@
// close the shell
$('#shell-dialog').modal('hide');
+ nfProcessGroup.enterGroup(referencingControllerService.processGroupId);
+
// show the component in question
nfProcessGroupConfiguration.showConfiguration(referencingControllerService.processGroupId).done(function () {
nfProcessGroupConfiguration.selectControllerService(referencingControllerService.id);
[nifi] 04/12: NIFI-6506 - review feedback * fixed issues converting
sensitive props to parameters * only include parameter value if it has
changed (even for non-sensitive params) * do not allow null parameter
values when editing parameters.
Posted by sc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
scottyaslan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit 10b4f6fd89cfb7f996a9ab1258eee7c8e00f6a8a
Author: Rob Fellows <ro...@gmail.com>
AuthorDate: Tue Sep 3 16:57:47 2019 -0400
NIFI-6506 - review feedback
* fixed issues converting sensitive props to parameters
* only include parameter value if it has changed (even for non-sensitive params)
* do not allow null parameter values when editing parameters.
---
.../jquery/propertytable/jquery.propertytable.js | 9 +++--
.../webapp/js/nf/canvas/nf-parameter-contexts.js | 47 +++++++++++++++-------
2 files changed, 37 insertions(+), 19 deletions(-)
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
index 7709824..c4050d6 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
@@ -1578,15 +1578,16 @@
if (options.readOnly !== true && !_.isNil(parameterContextId)) {
var descriptors = table.data('descriptors');
- var propertyDescriptor = descriptors[property.displayName];
+ var propertyDescriptor = descriptors[property.property];
nfParameterContexts.convertPropertyToParameter(property, propertyDescriptor, parameterContextId)
.done(function (parameter) {
- // set the property value to the reference the parameter that was created
- propertyData.updateItem(property.id, $.extend(property, {
+ var updatedItem = _.extend({}, property, {
previousValue: property.value,
value: '#{' + parameter.name + '}'
- }));
+ });
+ // set the property value to the reference the parameter that was created
+ propertyData.updateItem(property.id, updatedItem);
});
}
}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
index 49aa47e..3fdc7f0 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
@@ -814,12 +814,23 @@
*/
var serializeParameter = function (originalParameter) {
var name = $.trim($('#parameter-name').val());
+ var value = $('#parameter-value-field').val();
var isEmptyStringSet = $('#parameter-set-empty-string-field').hasClass('checkbox-checked');
-
- var serializedValue = serializeValue($('#parameter-value-field'), originalParameter, isEmptyStringSet);
var description = $('#parameter-description-field').val();
var isSensitive = $('#parameter-dialog').find('input[name="sensitive"]:checked').val() === 'sensitive' ? true : false;
+ var parameter = {
+ name: name,
+ value: value,
+ description: description,
+ sensitive: isSensitive,
+ isEmptyStringSet: isEmptyStringSet,
+ previousValue: null,
+ isNew: true
+ };
+
+ var serializedValue = serializeValue($('#parameter-value-field'), _.isNil(originalParameter) ? parameter : originalParameter, isEmptyStringSet);
+
return {
name: name,
value: serializedValue.value,
@@ -859,6 +870,14 @@
// validate the parameter is not a duplicate
var matchingParameter = _.find(existingParameters, { name: parameter.name });
+ // If in edit mode, the value can not be null
+ if (editMode === true && _.isNil(parameter.value)) {
+ nfDialog.showOkDialog({
+ headerText: 'Configuration Error',
+ dialogContent: 'The value of the parameter must be specified.'
+ });
+ }
+
// Valid if no duplicate is found or it is edit mode and a matching parameter was found
if (_.isNil(matchingParameter) || (editMode === true && !_.isNil(matchingParameter))) {
return true;
@@ -885,7 +904,7 @@
var serializeValue = function (input, parameter, isChecked) {
var serializedValue;
- var hasChanged = true;
+ var hasChanged = parameter.value !== parameter.previousValue;
var value = input.val();
if (!nfCommon.isBlank(value)) {
@@ -938,7 +957,7 @@
isEmptyStringSet: serializedParam.isEmptyStringSet,
isNew: originalParameter.isNew,
hasValueChanged: serializedParam.hasValueChanged,
- isModified: serializedParam.value !== originalParameter.value || serializedParam.description !== originalParameter.description
+ isModified: serializedParam.hasValueChanged || serializedParam.description !== originalParameter.description
});
// update row for the parameter
@@ -1013,10 +1032,11 @@
text: '#ffffff'
},
disabled: function () {
- if ($('#parameter-context-name').val() !== '') {
- return false;
+ var param = serializeParameter();
+ if (_.isEmpty(param.name) || (_.isNil(param.value) && !param.isEmptyStringSet)) {
+ return true;
}
- return true;
+ return false;
},
handler: {
click: function () {
@@ -1400,7 +1420,7 @@
return '<span class="table-cell sensitive">Sensitive value set</span>';
} else if (value === '') {
return '<span class="table-cell blank">Empty string set</span>';
- } else if (nfCommon.isNull(value)) {
+ } else if (_.isNil(value)) {
return '<span class="unset">No value set</span>';
} else {
return nfCommon.escapeHtml(value);
@@ -1576,7 +1596,7 @@
},
disabled: function () {
var param = serializeParameter(parameter);
- return param.value === parameter.value && param.description === parameter.description;
+ return !param.hasValueChanged && param.description === parameter.description;
},
handler: {
click: function () {
@@ -1849,14 +1869,10 @@
var param = serializeParameter();
var isUpdatingParameterContext = $('#parameter-context-updating-status').hasClass('show-status');
- if (isUpdatingParameterContext) {
+ if (isUpdatingParameterContext || _.isEmpty(param.name)) {
return true;
}
-
- if (param.name !== '') {
- return false;
- }
- return true;
+ return false;
},
handler: {
click: callbacks.onApply
@@ -2477,6 +2493,7 @@
if (nfCommon.isSensitiveProperty(propertyDescriptor)) {
$('#parameter-sensitive-radio-button').prop('checked', true);
$('#parameter-not-sensitive-radio-button').prop('checked', false);
+ $('#parameter-value-field').val(null);
} else {
$('#parameter-sensitive-radio-button').prop('checked', false);
$('#parameter-not-sensitive-radio-button').prop('checked', true);
[nifi] 03/12: NIFI-6505 - Addressing review feedback: reuse single
method for getting parameter field values.
Posted by sc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
scottyaslan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit aa07378a0322ca314524154066dc552739adbae5
Author: Rob Fellows <ro...@gmail.com>
AuthorDate: Tue Sep 3 12:31:03 2019 -0400
NIFI-6505 - Addressing review feedback: reuse single method for getting parameter field values.
---
.../webapp/js/nf/canvas/nf-parameter-contexts.js | 141 ++++++++-------------
1 file changed, 56 insertions(+), 85 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-contexts.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
index e3eac2c..49aa47e 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
@@ -761,7 +761,7 @@
* Adds a new parameter.
*/
var addNewParameter = function () {
- var param = getParameterFromFieldValues();
+ var param = serializeParameter();
var parameterGrid = $('#parameter-table').data('gridInstance');
var parameterData = parameterGrid.getData();
@@ -809,25 +809,24 @@
/**
* Builds a parameter object from the user-entered parameter inputs
*
+ * @param originalParameter Optional parameter to compare value against to determine if it has changed
* @return {{isEmptyStringSet: *, name: *, description: *, sensitive: *, value: *}}
*/
- var getParameterFromFieldValues = function () {
+ var serializeParameter = function (originalParameter) {
var name = $.trim($('#parameter-name').val());
- var value = $('#parameter-value-field').val();
- var description = $('#parameter-description-field').val();
- var isSensitive = $('#parameter-dialog').find('input[name="sensitive"]:checked').val() === 'sensitive' ? true : false;
var isEmptyStringSet = $('#parameter-set-empty-string-field').hasClass('checkbox-checked');
- if (_.isEmpty(value)) {
- value = isEmptyStringSet ? '' : null;
- }
+ var serializedValue = serializeValue($('#parameter-value-field'), originalParameter, isEmptyStringSet);
+ var description = $('#parameter-description-field').val();
+ var isSensitive = $('#parameter-dialog').find('input[name="sensitive"]:checked').val() === 'sensitive' ? true : false;
return {
name: name,
- value: value,
+ value: serializedValue.value,
description: description,
sensitive: isSensitive,
- isEmptyStringSet: isEmptyStringSet
+ isEmptyStringSet: isEmptyStringSet,
+ hasValueChanged: serializedValue.hasChanged
}
};
@@ -835,9 +834,10 @@
* Checks the validity of a parameter
* @param parameter Parameter to validate
* @param existingParameters Existing parameters to verify there are no duplicates
+ * @param editMode boolean indicating if validation should account for editing an existing parameter
* @return {boolean}
*/
- var validateParameter = function (parameter, existingParameters) {
+ var validateParameter = function (parameter, existingParameters, editMode) {
if (parameter.name === '') {
nfDialog.showOkDialog({
headerText: 'Configuration Error',
@@ -859,7 +859,8 @@
// validate the parameter is not a duplicate
var matchingParameter = _.find(existingParameters, { name: parameter.name });
- if (_.isNil(matchingParameter)) {
+ // Valid if no duplicate is found or it is edit mode and a matching parameter was found
+ if (_.isNil(matchingParameter) || (editMode === true && !_.isNil(matchingParameter))) {
return true;
} else {
var matchingParamIsHidden = _.get(matchingParameter, 'hidden', false);
@@ -889,7 +890,7 @@
var value = input.val();
if (!nfCommon.isBlank(value)) {
// if the value is sensitive and the user has not made a change
- if (parameter.sensitive === true && input.hasClass('sensitive') && parameter.isNew === false) {
+ if (!_.isEmpty(parameter) && parameter.sensitive === true && input.hasClass('sensitive') && parameter.isNew === false) {
serializedValue = parameter.previousValue;
hasChanged = false;
} else {
@@ -912,77 +913,53 @@
/**
* Update a parameter.
+ *
+ * @param originalParameter that is being edited
*/
- var updateParameter = function () {
- var parameterName = $('#parameter-name').val();
+ var updateParameter = function (originalParameter) {
+ var serializedParam = serializeParameter(originalParameter);
+ var parameterGrid = $('#parameter-table').data('gridInstance');
+ var parameterData = parameterGrid.getData();
- // ensure the parameter name is specified
- if (parameterName !== '') {
- var parameterGrid = $('#parameter-table').data('gridInstance');
- var parameterData = parameterGrid.getData();
+ var isValid = validateParameter(serializedParam, parameterData.getItems(), true);
- // ensure the parameter name is unique
- var matchingParameter = null;
- $.each(parameterData.getItems(), function (_, item) {
- if (parameterName === item.name) {
- matchingParameter = item;
- return false;
- }
+ if (isValid) {
+ var parameter = _.extend({}, originalParameter, {
+ id: originalParameter.id,
+ hidden: false,
+ type: 'Parameter',
+ sensitive: originalParameter.sensitive,
+ name: originalParameter.name,
+ description: serializedParam.description,
+ referencingComponents: originalParameter.referencingComponents,
+ previousValue: originalParameter.value,
+ previousDescription: originalParameter.description,
+ isEditable: originalParameter.isEditable,
+ isEmptyStringSet: serializedParam.isEmptyStringSet,
+ isNew: originalParameter.isNew,
+ hasValueChanged: serializedParam.hasValueChanged,
+ isModified: serializedParam.value !== originalParameter.value || serializedParam.description !== originalParameter.description
});
- if (matchingParameter !== null) {
- var isChecked = $('#parameter-set-empty-string-field').hasClass('checkbox-checked');
-
- var parameter = {
- id: matchingParameter.id,
- hidden: false,
- type: 'Parameter',
- sensitive: matchingParameter.sensitive,
- name: parameterName,
- description: $('#parameter-description-field').val(),
- referencingComponents: matchingParameter.referencingComponents,
- previousValue: matchingParameter.value,
- previousDescription: matchingParameter.description,
- isEditable: matchingParameter.isEditable,
- isEmptyStringSet: isChecked,
- isNew: matchingParameter.isNew
- };
-
- var input = $('#parameter-value-field');
- var serializedValue = serializeValue(input, parameter, isChecked);
- parameter.value = serializedValue.value;
- parameter.isModified = serializedValue.hasChanged || parameter.description !== parameter.previousDescription;
- parameter.hasValueChanged = serializedValue.hasChanged;
-
- // update row for the parameter
- parameterData.updateItem(matchingParameter.id, parameter);
+ // update row for the parameter
+ parameterData.updateItem(originalParameter.id, parameter);
- // sort the data
- parameterData.reSort();
+ // sort the data
+ parameterData.reSort();
- // select the parameter row
- var row = parameterData.getRowById(matchingParameter.id);
- parameterGrid.setActiveCell(row, parameterGrid.getColumnIndex('value'));
- } else {
- nfDialog.showOkDialog({
- headerText: 'Parameter Does Not Exists',
- dialogContent: 'A parameter with this name does not exist.'
- });
- }
+ // select the parameter row
+ var row = parameterData.getRowById(originalParameter.id);
+ parameterGrid.setActiveCell(row, parameterGrid.getColumnIndex('value'));
// close the new parameter dialog
$('#parameter-dialog').modal('hide');
-
- // update the buttons to possibly trigger the disabled state
- $('#parameter-context-dialog').modal('refreshButtons');
- } else {
- nfDialog.showOkDialog({
- headerText: 'Create Parameter Error',
- dialogContent: 'The name of the parameter must be specified.'
- });
}
+
+ // update the buttons to possibly trigger the disabled state
+ $('#parameter-context-dialog').modal('refreshButtons');
};
+
/**
* Updates parameter contexts by issuing an update request and polling until it's completion.
*
@@ -1598,19 +1575,12 @@
text: '#ffffff'
},
disabled: function () {
- var input = $('#parameter-value-field');
- var isChecked = $('#parameter-set-empty-string-field').hasClass('checkbox-checked');
- var serializedValue = serializeValue(input, parameter, isChecked);
-
- var description = $('#parameter-description-field').val();
-
- var hasChanged = serializedValue.hasChanged || description !== parameter.previousDescription;
-
- return !hasChanged;
+ var param = serializeParameter(parameter);
+ return param.value === parameter.value && param.description === parameter.description;
},
handler: {
click: function () {
- updateParameter();
+ updateParameter(parameter);
}
}
}, {
@@ -1796,7 +1766,8 @@
text: '#ffffff'
},
disabled: function () {
- if ($('#parameter-name').val() !== '') {
+ var param = serializeParameter();
+ if (param.name !== '') {
return false;
}
return true;
@@ -1875,14 +1846,14 @@
text: '#ffffff'
},
disabled: function () {
- var parameterName = $('#parameter-name').val();
+ var param = serializeParameter();
var isUpdatingParameterContext = $('#parameter-context-updating-status').hasClass('show-status');
if (isUpdatingParameterContext) {
return true;
}
- if (parameterName !== '') {
+ if (param.name !== '') {
return false;
}
return true;
@@ -2401,7 +2372,7 @@
showUpdateStatus(true);
var existingParameters = parameterContextEntity.component.parameters.map(function(p) { return p.parameter });
- var parameter = getParameterFromFieldValues();
+ var parameter = serializeParameter();
var isValid = validateParameter(parameter, existingParameters);
[nifi] 12/12: NIFI-6506 - don't show 'Sensitive value set' for null,
sensitive params'
Posted by sc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
scottyaslan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit fa8a4462e73a7ef417b23644edb9629f2955c0b0
Author: Rob Fellows <ro...@gmail.com>
AuthorDate: Thu Sep 5 10:33:39 2019 -0400
NIFI-6506 - don't show 'Sensitive value set' for null, sensitive params'
This closes #3683
Signed-off-by: Scott Aslan <sc...@gmail.com>
---
.../webapp/js/nf/canvas/nf-parameter-contexts.js | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 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-contexts.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
index 63f3da8..f2a73c4 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
@@ -1443,7 +1443,7 @@
};
var valueFormatter = function (row, cell, value, columnDef, dataContext) {
- if (dataContext.sensitive === true) {
+ if (dataContext.sensitive === true && !_.isNil(value)) {
return '<span class="table-cell sensitive">Sensitive value set</span>';
} else if (value === '') {
return '<span class="table-cell blank">Empty string set</span>';
@@ -1532,10 +1532,16 @@
// determine the desired action
if (target.hasClass('delete-parameter')) {
- // mark the property in question for removal and refresh the table
- parameterData.updateItem(parameter.id, $.extend(parameter, {
- hidden: true
- }));
+ if (!parameter.isNew) {
+ // mark the parameter in question for removal and refresh the table
+ parameterData.updateItem(parameter.id, $.extend(parameter, {
+ hidden: true
+ }));
+ } else {
+ // remove the parameter from the table
+ parameterData.deleteItem(parameter.id);
+ }
+
// reset the selection if necessary
var selectedRows = parametersGrid.getSelectedRows();
@@ -1598,7 +1604,9 @@
if (parameter.sensitive) {
$('#parameter-sensitive-radio-button').prop('checked', true);
$('#parameter-not-sensitive-radio-button').prop('checked', false);
- $('#parameter-value-field').addClass('sensitive').val(nfCommon.config.sensitiveText).select();
+ if (!_.isNil(parameter.value)) {
+ $('#parameter-value-field').addClass('sensitive').val(nfCommon.config.sensitiveText).select();
+ }
} else {
$('#parameter-sensitive-radio-button').prop('checked', false);
$('#parameter-not-sensitive-radio-button').prop('checked', true);
[nifi] 08/12: NIFI-6506 - update parameter context list after
successful update.
Posted by sc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
scottyaslan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit 183ece194e1ca6957981f8521a5d6813f1310f4e
Author: Rob Fellows <ro...@gmail.com>
AuthorDate: Wed Sep 4 11:03:58 2019 -0400
NIFI-6506 - update parameter context list after successful update.
---
.../nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
index d9aadf0..d7429f7 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
@@ -1183,7 +1183,7 @@
component: updateRequestEntity.request.parameterContext
});
- var item = parameterContextData.getItem(parameterContextEntity.id);
+ var item = parameterContextData.getItemById(parameterContextEntity.component.id);
if (nfCommon.isDefinedAndNotNull(item)) {
parameterContextData.updateItem(parameterContextEntity.id, parameterContextEntity);
}