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 2015/04/07 15:42:17 UTC

incubator-nifi git commit: NIFI-475: - Prompting the user to save changes before navigating to the controller service definition.

Repository: incubator-nifi
Updated Branches:
  refs/heads/NIFI-475 31ec55c38 -> 3ac6f30ec


NIFI-475:
- Prompting the user to save changes before navigating to the controller service definition.

Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/3ac6f30e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/3ac6f30e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/3ac6f30e

Branch: refs/heads/NIFI-475
Commit: 3ac6f30ecc2a8028c8f64c24f41d12a22ee1a932
Parents: 31ec55c
Author: Matt Gilman <ma...@gmail.com>
Authored: Tue Apr 7 09:41:39 2015 -0400
Committer: Matt Gilman <ma...@gmail.com>
Committed: Tue Apr 7 09:41:39 2015 -0400

----------------------------------------------------------------------
 .../propertytable/jquery.propertytable.js       |  74 +++++---
 .../js/nf/canvas/nf-controller-service.js       | 174 ++++++++++---------
 2 files changed, 141 insertions(+), 107 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/3ac6f30e/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 dee3e27..c2b947d 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
@@ -23,7 +23,17 @@
  *
  * {
  *   readOnly: true,
- *   dialogContainer: 'body'
+ *   dialogContainer: 'body',
+ *   descriptorDeferred: function () {
+ *      return $.Deferred(function (deferred) {
+ *          deferred.resolve();
+ *      }).promise;
+ *   },
+ *   goToServiceDeferred: function () {
+ *      return $.Deferred(function (deferred) {
+ *          deferred.resolve();
+ *      }).promise;
+ *   }
  * }
  */
 
@@ -1084,6 +1094,39 @@
                 }
             }
         };
+        
+        var goToControllerService = function (property) {
+            // close the dialog
+            var dialog = table.closest('.dialog');
+            if (dialog.hasClass('modal')) {
+                dialog.modal('hide');
+            } else {
+                dialog.hide();
+            }
+
+            $.Deferred(function (deferred) {
+                if ($('#settings').is(':visible')) {
+                    deferred.resolve();
+                } else {
+                    // reload the settings and show
+                    nf.Settings.loadSettings().done(function () {
+                        nf.Settings.showSettings();
+                        deferred.resolve();
+                    });
+                }
+            }).done(function () {
+                var controllerServiceGrid = $('#controller-services-table').data('gridInstance');
+                var controllerServiceData = controllerServiceGrid.getData();
+
+                // select the desired service
+                var row = controllerServiceData.getRowById(property.value);
+                controllerServiceGrid.setSelectedRows([row]);
+                controllerServiceGrid.scrollRowIntoView(row);
+
+                // select the controller services tab
+                $('#settings-tabs').find('li:eq(1)').click();
+            });
+        };
 
         // initialize the grid
         var propertyGrid = new Slick.Grid(table, propertyData, propertyColumns, propertyConfigurationOptions);
@@ -1114,29 +1157,16 @@
                     // prevents standard edit logic
                     e.stopImmediatePropagation();
                 } else if (target.hasClass('go-to-service')) {
-                    // close the dialog
-                    var dialog = table.closest('.dialog');
-                    if (dialog.hasClass('modal')) {
-                        dialog.modal('hide');
+                    if (options.readOnly === true) {
+                        goToControllerService(property);
                     } else {
-                        dialog.hide();
+                        // load the property descriptor if possible
+                        if (typeof options.goToServiceDeferred === 'function') {
+                            options.goToServiceDeferred().done(function() {
+                                goToControllerService(property);
+                            });
+                        }
                     }
-                    
-                    // reload the settings and show
-                    nf.Settings.loadSettings().done(function () {
-                        nf.Settings.showSettings();
-                        
-                        var controllerServiceGrid = $('#controller-services-table').data('gridInstance');
-                        var controllerServiceData = controllerServiceGrid.getData();
-
-                        // select the selected row
-                        var row = controllerServiceData.getRowById(property.value);
-                        controllerServiceGrid.setSelectedRows([row]);
-                        controllerServiceGrid.scrollRowIntoView(row);
-                        
-                        // select the controller services tab
-                        $('#settings-tabs').find('li:eq(1)').click();
-                    });
                 }
             }
         });

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/3ac6f30e/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
----------------------------------------------------------------------
diff --git a/nifi/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/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
index 29c7710..2584bc2 100644
--- a/nifi/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/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-controller-service.js
@@ -1072,6 +1072,79 @@ nf.ControllerService = (function () {
     };
     
     /**
+     * Goes to a service configuration from the property table.
+     */
+    var goToServiceFromProperty = function () {
+        return $.Deferred(function (deferred) {
+            // close all fields currently being edited
+            $('#controller-service-properties').propertytable('saveRow');
+
+            // determine if changes have been made
+            if (isSaveRequired()) {
+                // see if those changes should be saved
+                nf.Dialog.showYesNoDialog({
+                    dialogContent: 'Save changes before going to this Controller Service?',
+                    overlayBackground: false,
+                    noHandler: function () {
+                        deferred.resolve();
+                    },
+                    yesHandler: function () {
+                        var controllerService = $('#controller-service-configuration').data('controllerServiceDetails');
+                        saveControllerService(controllerService).done(function () {
+                            deferred.resolve();
+                        }).fail(function () {
+                            deferred.reject();
+                        });
+                    }
+                });
+            } else {
+                deferred.resolve();
+            }
+        }).promise();
+    };
+    
+    var saveControllerService = function (controllerService) {
+        // marshal the settings and properties and update the controller service
+        var updatedControllerService = marshalDetails();
+
+        // ensure details are valid as far as we can tell
+        if (validateDetails(updatedControllerService)) {
+            var previouslyReferencedServiceIds = [];
+            $.each(identifyReferencedServiceDescriptors(controllerService), function (_, descriptor) {
+                var modifyingService = !nf.Common.isUndefined(updatedControllerService.controllerService.properties) && !nf.Common.isUndefined(updatedControllerService.controllerService.properties[descriptor.name]);
+                var isCurrentlyConfigured = nf.Common.isDefinedAndNotNull(controllerService.properties[descriptor.name]);
+
+                // if we are attempting to update a controller service reference
+                if (modifyingService && isCurrentlyConfigured) {
+
+                    // record the current value if set
+                    previouslyReferencedServiceIds.push(controllerService.properties[descriptor.name]);
+                }
+            });
+
+            // update the selected component
+            return $.ajax({
+                type: 'PUT',
+                data: JSON.stringify(updatedControllerService),
+                url: controllerService.uri,
+                dataType: 'json',
+                processData: false,
+                contentType: 'application/json'
+            }).done(function (response) {
+                if (nf.Common.isDefinedAndNotNull(response.controllerService)) {
+                    // update the revision
+                    nf.Client.setRevision(response.revision);
+
+                    // reload all previously referenced controller services
+                    $.each(previouslyReferencedServiceIds, function(_, oldServiceReferenceId) {
+                        reloadControllerService(oldServiceReferenceId);
+                    });
+                }
+            }).fail(handleControllerServiceConfigurationError);
+        }
+    };
+    
+    /**
      * Identifies the descriptors that identify controller services.
      * 
      * @param {object} component
@@ -1183,7 +1256,8 @@ nf.ControllerService = (function () {
             $('#controller-service-properties').propertytable({
                 readOnly: false,
                 dialogContainer: '#new-controller-service-property-container',
-                descriptorDeferred: getControllerServicePropertyDescriptor
+                descriptorDeferred: getControllerServicePropertyDescriptor,
+                goToServiceDeferred: goToServiceFromProperty
             });
             
             // initialize the disable service dialog
@@ -1327,7 +1401,8 @@ nf.ControllerService = (function () {
                 $('#controller-service-properties').propertytable('destroy').propertytable({
                     readOnly: false,
                     dialogContainer: '#new-controller-service-property-container',
-                    descriptorDeferred: getControllerServicePropertyDescriptor
+                    descriptorDeferred: getControllerServicePropertyDescriptor,
+                    goToServiceDeferred: goToServiceFromProperty
                 });
                 
                 // update the mode
@@ -1394,49 +1469,15 @@ nf.ControllerService = (function () {
                                 // close all fields currently being edited
                                 $('#controller-service-properties').propertytable('saveRow');
 
-                                // marshal the settings and properties and update the controller service
-                                var updatedControllerService = marshalDetails();
-
-                                // ensure details are valid as far as we can tell
-                                if (validateDetails(updatedControllerService)) {
-                                    var previouslyReferencedServiceIds = [];
-                                    $.each(identifyReferencedServiceDescriptors(controllerService), function (_, descriptor) {
-                                        var modifyingService = !nf.Common.isUndefined(updatedControllerService.controllerService.properties) && !nf.Common.isUndefined(updatedControllerService.controllerService.properties[descriptor.name]);
-                                        var isCurrentlyConfigured = nf.Common.isDefinedAndNotNull(controllerService.properties[descriptor.name]);
-                                        
-                                        // if we are attempting to update a controller service reference
-                                        if (modifyingService && isCurrentlyConfigured) {
-                                            // record the current value if set
-                                            previouslyReferencedServiceIds.push(controllerService.properties[descriptor.name]);
-                                        }
-                                    });
+                                // save the controller service
+                                saveControllerService(controllerService).done(function (response) {
+                                    // reload the controller service
+                                    renderControllerService(response.controllerService);
+                                    reloadControllerServiceReferences(response.controllerService);
                                     
-                                    // update the selected component
-                                    $.ajax({
-                                        type: 'PUT',
-                                        data: JSON.stringify(updatedControllerService),
-                                        url: controllerService.uri,
-                                        dataType: 'json',
-                                        processData: false,
-                                        contentType: 'application/json'
-                                    }).done(function (response) {
-                                        if (nf.Common.isDefinedAndNotNull(response.controllerService)) {
-                                            nf.Client.setRevision(response.revision);
-
-                                            // reload the controller service
-                                            renderControllerService(response.controllerService);
-                                            reloadControllerServiceReferences(response.controllerService);
-                                            
-                                            // reload all previously referenced controller services
-                                            $.each(previouslyReferencedServiceIds, function(_, oldServiceReferenceId) {
-                                                reloadControllerService(oldServiceReferenceId);
-                                            });
-
-                                            // close the details panel
-                                            controllerServiceDialog.modal('hide');
-                                        }
-                                    }).fail(handleControllerServiceConfigurationError);
-                                }
+                                    // close the details panel
+                                    controllerServiceDialog.modal('hide');
+                                });
                             }
                         }
                     }, {
@@ -1482,47 +1523,10 @@ nf.ControllerService = (function () {
                                         overlayBackground: false,
                                         noHandler: openCustomUi,
                                         yesHandler: function () {
-                                            // marshal the settings and properties and update the controller service
-                                            var updatedControllerService = marshalDetails();
-
-                                            // ensure details are valid as far as we can tell
-                                            if (validateDetails(updatedControllerService)) {
-                                                var previouslyReferencedServiceIds = [];
-                                                $.each(identifyReferencedServiceDescriptors(controllerService), function (_, descriptor) {
-                                                    var modifyingService = !nf.Common.isUndefined(updatedControllerService.controllerService.properties) && !nf.Common.isUndefined(updatedControllerService.controllerService.properties[descriptor.name]);
-                                                    var isCurrentlyConfigured = nf.Common.isDefinedAndNotNull(controllerService.properties[descriptor.name]);
-
-                                                    // if we are attempting to update a controller service reference
-                                                    if (modifyingService && isCurrentlyConfigured) {
-                                                        
-                                                        // record the current value if set
-                                                        previouslyReferencedServiceIds.push(controllerService.properties[descriptor.name]);
-                                                    }
-                                                });
-
-                                                // update the selected component
-                                                $.ajax({
-                                                    type: 'PUT',
-                                                    data: JSON.stringify(updatedControllerService),
-                                                    url: controllerService.uri,
-                                                    dataType: 'json',
-                                                    processData: false,
-                                                    contentType: 'application/json'
-                                                }).done(function (response) {
-                                                    if (nf.Common.isDefinedAndNotNull(response.controllerService)) {
-                                                        // update the revision
-                                                        nf.Client.setRevision(response.revision);
-
-                                                        // reload all previously referenced controller services
-                                                        $.each(previouslyReferencedServiceIds, function(_, oldServiceReferenceId) {
-                                                            reloadControllerService(oldServiceReferenceId);
-                                                        });
-
-                                                        // open the custom ui
-                                                        openCustomUi();
-                                                    }
-                                                }).fail(handleControllerServiceConfigurationError);
-                                            }
+                                            saveControllerService(controllerService).done(function () {
+                                                // open the custom ui
+                                                openCustomUi();
+                                            });
                                         }
                                     });
                                 } else {