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: '&nbsp;',
+                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();

Reply via email to