From 1f1269c817a32b32fd19f32f942dc92cbf1e4a8d Mon Sep 17 00:00:00 2001 From: yuri1969 <1969yuri1969@gmail.com> Date: Tue, 12 Sep 2017 19:51:10 +0200 Subject: [PATCH] NIFI-3369 - Disable "Add" button on new... ...connection dialog if no relationships selected Disabled confirmation button for both Create and Configure Connection dialogs when no relationship was selected. Signed-off-by: Scott Aslan This closes #2152 --- .../nf/canvas/nf-connection-configuration.js | 63 +++++++++---------- .../src/main/webapp/js/nf/nf-common.js | 2 + 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection-configuration.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection-configuration.js index 9f0013fb5c..4425e3c460 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection-configuration.js +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-connection-configuration.js @@ -73,6 +73,16 @@ d3.select('path.connector').remove(); }; + /** + * Activates dialog's button model refresh on a connection relationships change. + */ + var addDialogRelationshipsChangeListener = function() { + // refresh button model when a relationship selection changes + $('div.available-relationship').bind('change', function() { + $('#connection-configuration').modal('refreshButtons'); + }); + } + /** * Initializes the source in the new connection dialog. * @@ -89,6 +99,8 @@ $.each(processor.relationships, function (i, relationship) { createRelationshipOption(relationship.name); }); + + addDialogRelationshipsChangeListener(); // if there is a single relationship auto select var relationships = $('#relationship-names').children('div'); @@ -104,21 +116,13 @@ hover: '#004849', text: '#ffffff' }, + disabled: function () { + // ensure some relationships were selected + return getSelectedRelationships().length === 0; + }, handler: { click: function () { - // get the selected relationships - var selectedRelationships = getSelectedRelationships(); - - // ensure some relationships were selected - if (selectedRelationships.length > 0) { - addConnection(selectedRelationships); - } else { - // inform users that no relationships were selected - nfDialog.showOkDialog({ - headerText: 'Connection Configuration', - dialogContent: 'The connection must have at least one relationship selected.' - }); - } + addConnection(getSelectedRelationships()); // close the dialog $('#connection-configuration').modal('hide'); @@ -1331,6 +1335,8 @@ createRelationshipOption(name); }); + addDialogRelationshipsChangeListener(); + // ensure all selected relationships are present // (may be undefined) and selected $.each(selectedRelationships, function (i, name) { @@ -1395,30 +1401,23 @@ hover: '#004849', text: '#ffffff' }, + disabled: function () { + // ensure some relationships were selected with a processor as the source + if (nfCanvasUtils.isProcessor(source)) { + return getSelectedRelationships().length === 0; + } + return false; + }, handler: { click: function () { - // get the selected relationships - var selectedRelationships = getSelectedRelationships(); - // see if we're working with a processor as the source if (nfCanvasUtils.isProcessor(source)) { - if (selectedRelationships.length > 0) { - // if there are relationships selected update - updateConnection(selectedRelationships).done(function () { - deferred.resolve(); - }).fail(function () { - deferred.reject(); - }); - } else { - // inform users that no relationships were selected and the source is a processor - nfDialog.showOkDialog({ - headerText: 'Connection Configuration', - dialogContent: 'The connection must have at least one relationship selected.' - }); - - // reject the deferred + // update the selected relationships + updateConnection(getSelectedRelationships()).done(function () { + deferred.resolve(); + }).fail(function () { deferred.reject(); - } + }); } else { // there are no relationships, but the source wasn't a processor, so update anyway updateConnection(undefined).done(function () { diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js index 646967eea4..0d55b27162 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/nf-common.js @@ -61,6 +61,8 @@ } else { checkbox.removeClass('checkbox-checked').addClass('checkbox-unchecked'); } + // emit a state change event + checkbox.trigger('change'); }); // setup click areas for custom checkboxes