This is an automated email from the ASF dual-hosted git repository. scottyaslan pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nifi.git
commit 70af2acc06157245d8d8bf2bb8600c2e782e12fd Author: Rob Fellows <[email protected]> AuthorDate: Fri Sep 6 15:45:19 2019 -0400 NIFI-6641 - support read only mode for parameter context dialog --- .../canvas/new-parameter-context-dialog.jsp | 10 ++- .../webapp/css/new-parameter-context-dialog.css | 13 ++++ .../webapp/js/nf/canvas/nf-parameter-contexts.js | 89 +++++++++++++++++++--- 3 files changed, 98 insertions(+), 14 deletions(-) diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp index dd531838..cba63e0 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/WEB-INF/partials/canvas/new-parameter-context-dialog.jsp @@ -15,7 +15,7 @@ limitations under the License. --%> <%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %> -<div id="parameter-context-dialog" layout="column" class="hidden"> +<div id="parameter-context-dialog" layout="column" class="hidden read-only"> <div id="parameter-context-status-bar"></div> <div class="parameter-context-tab-container dialog-content"> <div id="parameter-context-tabs" class="tab-container"></div> @@ -31,13 +31,15 @@ <div class="setting"> <div class="setting-name">Name</div> <div id="parameter-context-name-container" class="setting-field"> - <input type="text" id="parameter-context-name" name="parameter-context-name"/> + <input type="text" id="parameter-context-name" class="edit-mode" name="parameter-context-name"/> + <div id="parameter-context-name-read-only" class="read-only"></div> </div> </div> <div class="setting"> <div class="setting-name">Description</div> <div class="setting-field parameter-context-description-container"> - <textarea id="parameter-context-description-field" rows="6"></textarea> + <textarea id="parameter-context-description-field" class="edit-mode" rows="6"></textarea> + <div id="parameter-context-description-read-only" class="read-only"></div> </div> <div class="clear"></div> </div> @@ -48,7 +50,7 @@ </div> <div id="parameter-context-parameters-tab-content" class="configuration-tab"> <div class="settings-left"> - <div> + <div class="edit-mode"> <div id="add-parameter"><button class="button fa fa-plus"></button></div> <div class="clear"></div> </div> diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-context-dialog.css b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-context-dialog.css index 8c7501b..17daf4d 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-context-dialog.css +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/css/new-parameter-context-dialog.css @@ -24,6 +24,14 @@ height: 575px; } +#parameter-context-dialog.edit-mode .read-only { + display: none; +} + +#parameter-context-dialog.read-only .edit-mode { + display: none; +} + #parameter-context-dialog div.settings-left { float: left; width: 65%; @@ -70,6 +78,11 @@ height: 85px; } +#parameter-context-description-read-only { + max-height: 250px; + overflow-y: auto; +} + #parameter-referencing-components-container { position: absolute; bottom: 10px; diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js index a4561cf..eee4146 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js @@ -190,7 +190,11 @@ */ var resetDialog = function () { $('#parameter-context-name').val(''); + $('#parameter-context-name-read-only').text(''); + $('#parameter-context-description-field').val(''); + $('#parameter-context-description-read-only').text(''); + $('#parameter-table, #add-parameter').show(); $('#parameter-context-tabs').show(); $('#parameter-context-tabs').find('.tab')[0].click(); @@ -1337,8 +1341,9 @@ * * @param {object} parameterContext * @param {string} parameterToSelect to select + * @param {boolean} if the parameters should be displayed in a read-only state regardless of permissions */ - var loadParameters = function (parameterContext, parameterToSelect) { + var loadParameters = function (parameterContext, parameterToSelect, readOnly) { if (nfCommon.isDefinedAndNotNull(parameterContext)) { var parameterGrid = $('#parameter-table').data('gridInstance'); @@ -1362,7 +1367,7 @@ description: parameterEntity.parameter.description, previousValue: parameterEntity.parameter.value, previousDescription: parameterEntity.parameter.description, - isEditable: parameterEntity.canWrite, + isEditable: _.defaultTo(readOnly, false) ? false : parameterEntity.canWrite, referencingComponents: parameterEntity.parameter.referencingComponents }; @@ -2034,9 +2039,30 @@ return nfCommon.escapeHtml(dataContext.component.description); }; + var parameterContextInfoFormatter = function (row, cell, value, columnDef, dataContext) { + var markup = ''; + + var canRead = dataContext.permissions.canRead; + + if (canRead) { + markup += '<div title="View Details" class="pointer view-parameter-context fa fa-info-circle"></div>'; + } + + return markup; + }; + // define the column model for the parameter contexts table var parameterContextsColumnModel = [ { + id: 'info', + name: ' ', + resizable: false, + formatter: parameterContextInfoFormatter, + sortable: false, + width: 30, + maxWidth: 30 + }, + { id: 'name', name: 'Name', sortable: true, @@ -2107,6 +2133,10 @@ // close the settings dialog $('#shell-close-button').click(); } + } else if (parameterContextsGrid.getColumns()[args.cell].id === 'info') { + if (target.hasClass('view-parameter-context')) { + nfParameterContexts.showParameterContext(parameterContextEntity.id, true); + } } }); @@ -2303,9 +2333,10 @@ /** * Shows the dialog for the specified parameter context. * - * @argument id The parameter context id + * @param id The parameter context id + * @param readOnly Optional, boolean to open in read only mode even if the user has permission to write. */ - showParameterContext: function (id) { + showParameterContext: function (id, readOnly) { parameterCount = 0; // reload the parameter context in case the parameters have changed @@ -2317,9 +2348,25 @@ // once everything is loaded, show the dialog reloadContext.done(function (parameterContextEntity) { + var canWrite = _.get(parameterContextEntity, 'permissions.canWrite', false); + + // if specifically asked to open in read only mode, set canWrite to false to trigger that behavior + if (_.defaultTo(readOnly, false)) { + canWrite = false; + } + currentParameterContextEntity = parameterContextEntity; - $('#parameter-context-name').val(parameterContextEntity.component.name); - $('#parameter-context-description-field').val(parameterContextEntity.component.description); + if (canWrite) { + $('#parameter-context-dialog').removeClass('read-only'); + $('#parameter-context-dialog').addClass('edit-mode'); + $('#parameter-context-name').val(parameterContextEntity.component.name); + $('#parameter-context-description-field').val(parameterContextEntity.component.description); + } else { + $('#parameter-context-dialog').removeClass('edit-mode'); + $('#parameter-context-dialog').addClass('read-only'); + $('#parameter-context-name-read-only').text(parameterContextEntity.component.name); + $('#parameter-context-description-read-only').text(parameterContextEntity.component.description); + } // show the parameter context id if ($('#parameter-context-id-setting').hasClass('hidden')) { @@ -2327,10 +2374,9 @@ } $('#parameter-context-id-field').text(parameterContextEntity.id); - loadParameters(parameterContextEntity); + loadParameters(parameterContextEntity, null, readOnly); - // show the context - $('#parameter-context-dialog').modal('setHeaderText', 'Update Parameter Context').modal('setButtonModel', [{ + var editModeButtonModel = [{ buttonText: 'Apply', color: { base: '#728E9B', @@ -2360,7 +2406,30 @@ $(this).modal('hide'); } } - }]).modal('show'); + }]; + + var readOnlyButtonModel = [{ + buttonText: 'Ok', + color: { + base: '#728E9B', + hover: '#004849', + text: '#ffffff' + }, + disabled: function () { + return false; + }, + handler: { + click: function () { + $(this).modal('hide'); + } + } + }]; + + // show the context + $('#parameter-context-dialog') + .modal('setHeaderText', canWrite ? 'Update Parameter Context' : 'View Parameter Context') + .modal('setButtonModel', canWrite ? editModeButtonModel : readOnlyButtonModel) + .modal('show'); // select the parameters tab $('#parameter-context-tabs').find('li:last').click();
