NIFI-497: - Requiring new property names to be unique. Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/9299355a Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/9299355a Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/9299355a
Branch: refs/heads/NIFI-271 Commit: 9299355ae9fe31d47824acab21aa02fc92c5d897 Parents: 322be25 Author: Matt Gilman <[email protected]> Authored: Fri Apr 10 11:30:54 2015 -0400 Committer: Matt Gilman <[email protected]> Committed: Fri Apr 10 11:30:54 2015 -0400 ---------------------------------------------------------------------- .../propertytable/jquery.propertytable.js | 74 +++++++++++++------- 1 file changed, 48 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9299355a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js index b5f56b0..7ffaa3f 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js @@ -1375,37 +1375,59 @@ var add = function () { var propertyName = $.trim(newPropertyNameField.val()); - // ensure the property name and value is specified + // ensure the property name is specified if (propertyName !== '') { - // load the descriptor and add the property - options.descriptorDeferred(propertyName).done(function(response) { - var descriptor = response.propertyDescriptor; - - // store the descriptor for use later - var descriptors = table.data('descriptors'); - if (!nf.Common.isUndefined(descriptors)) { - descriptors[descriptor.name] = descriptor; + var propertyGrid = table.data('gridInstance'); + var propertyData = propertyGrid.getData(); + + // ensure the property name is unique + var existingPropertyId = null; + $.each(propertyData.getItems(), function (_, item) { + if (propertyName === item.property) { + existingPropertyId = item.id; + return false; } - - // add a row for the new property - var propertyGrid = table.data('gridInstance'); - var propertyData = propertyGrid.getData(); - var id = propertyData.getLength(); - propertyData.addItem({ - id: id, - hidden: false, - property: propertyName, - displayName: propertyName, - previousValue: null, - value: null, - type: 'userDefined' + }); + + if (existingPropertyId === null) { + // load the descriptor and add the property + options.descriptorDeferred(propertyName).done(function(response) { + var descriptor = response.propertyDescriptor; + + // store the descriptor for use later + var descriptors = table.data('descriptors'); + if (!nf.Common.isUndefined(descriptors)) { + descriptors[descriptor.name] = descriptor; + } + + // add a row for the new property + var id = propertyData.getLength(); + propertyData.addItem({ + id: id, + hidden: false, + property: propertyName, + displayName: propertyName, + previousValue: null, + value: null, + type: 'userDefined' + }); + + // select the new properties row + var row = propertyData.getRowById(id); + propertyGrid.setSelectedRows([row]); + propertyGrid.scrollRowIntoView(row); }); - - // select the new properties row - var row = propertyData.getRowById(id); + } else { + nf.Dialog.showOkDialog({ + dialogContent: 'A property with this name already exists.', + overlayBackground: false + }); + + // select the existing properties row + var row = propertyData.getRowById(existingPropertyId); propertyGrid.setSelectedRows([row]); propertyGrid.scrollRowIntoView(row); - }); + } } else { nf.Dialog.showOkDialog({ dialogContent: 'Property name must be specified.',
