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.',

Reply via email to