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