You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by sc...@apache.org on 2023/12/13 18:56:03 UTC

(nifi) branch support/nifi-1.x updated: This closes #7810

This is an automated email from the ASF dual-hosted git repository.

scottyaslan pushed a commit to branch support/nifi-1.x
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/support/nifi-1.x by this push:
     new d8ac6bf8f9 This closes #7810
d8ac6bf8f9 is described below

commit d8ac6bf8f9f5286e6eec8c1f4fd184ef2544c12e
Author: Shane Ardell <sh...@gmail.com>
AuthorDate: Thu Sep 28 12:43:38 2023 -0400

    This closes #7810
    
    NIFI-12088: recalculate hidden property fields when new service is created
    
    Signed-off-by: Scott Aslan <sc...@gmail.com>
---
 .../jquery/propertytable/jquery.propertytable.js   | 182 +++++++++++----------
 1 file changed, 95 insertions(+), 87 deletions(-)

diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
index 013cbeb2eb..5fa3b224b4 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
@@ -1036,6 +1036,7 @@
 
             var controllerServiceLookup = new Map();
             var options = [];
+        
             $.each(response.controllerServiceTypes, function (i, controllerServiceType) {
                 controllerServiceLookup.set(i, controllerServiceType);
                 options.push({
@@ -1237,6 +1238,8 @@
                         if (typeof configurationOptions.controllerServiceCreatedDeferred === 'function') {
                             configurationOptions.controllerServiceCreatedDeferred(response);
                         }
+                        
+                        toggleHiddenDependentProperties(gridContainer);
                     }).fail(nfErrorHandler.handleAjaxError);
                 };
 
@@ -1686,93 +1689,7 @@
                 nfCommon.cleanUpTooltips(table, 'div.fa-question-circle, div.fa-info');
             });
             propertyGrid.onBeforeCellEditorDestroy.subscribe(function (e, args) {
-                setTimeout(function() {
-                    var propertyData = propertyGrid.getData();
-
-                    // Get the default properties object
-                    var descriptors = table.data('descriptors');
-
-                    // Get the rows from the table
-                    var items = propertyData.getItems();
-
-                    // Loop over each row
-                    $.each(items, function (id, item) {
-                        // Get the property descriptor object
-                        var descriptor = descriptors[item.property];
-                        var dependent = false;
-
-                        // Check if descriptor is a dynamic property
-                        if (!descriptor.dynamic) {
-                            var hidden = false;
-
-                            // Check for dependencies
-                            if (descriptor.dependencies.length > 0) {
-                                // Loop over each dependency
-                                $.each(descriptor.dependencies, function (i, dependency) {
-                                    // It is sufficient to have found a single instance of not meeting the
-                                    // requirement for a dependent value in order to hide a property
-                                    if (hidden) {
-                                        return false;
-                                    }
-                                    // Check the row's dependent values against all other row's current values to determine hidden state
-                                    $.each(items, function (k, property) {
-                                        if (property.property === dependency.propertyName) {
-                                            dependent = true;
-                                            if (property.hidden === false) {
-                                                // Get the current property value to compare with the dependent value
-                                                var propertyValue = property.value;
-
-                                                // check if the property references a parameter
-                                                if (!_.isEmpty(currentParameters)) {
-                                                    const paramReference = getExistingParametersReferenced(propertyValue);
-                                                    // if parameter references exist, loop through all and interpolate the value in the propertyValue string
-                                                    if (paramReference.length > 0) {
-                                                        paramReference.forEach(function (param) {
-                                                            // handle null values by replacing with an empty string instead
-                                                            propertyValue = propertyValue.replace('#{' + param.name + '}', nfCommon.isDefinedAndNotNull(param.value) ? param.value : '');
-                                                        });
-                                                    }
-                                                }
-
-                                                // Test the dependentValues array against the current value of the property
-                                                if (propertyValue) {
-                                                    if (dependency.dependentValues) {
-                                                        hidden = !dependency.dependentValues.includes(propertyValue);
-                                                    } else {
-                                                        hidden = false;
-                                                    }
-                                                } else {
-                                                    hidden = true;
-                                                }
-                                            } else {
-                                                hidden = true;
-                                            }
-                                            if (hidden) {
-                                                // It is sufficient to have found a single instance of not meeting the
-                                                // requirement for a dependent value in order to hide a property
-                                                return false;
-                                            }
-                                        }
-                                    });
-                                });
-                            }
-                        } else {
-                            hidden = item.hidden;
-                        }
-
-                        propertyData.beginUpdate();
-                        propertyData.updateItem(id, $.extend(item, {
-                            hidden: hidden,
-                            dependent: dependent
-                        }));
-                        propertyData.endUpdate();
-
-                        // Reset hidden property
-                        hidden = false;
-                    });
-
-                    propertyGrid.resizeCanvas();
-                }, 50);
+                toggleHiddenDependentProperties(table);
             });
         }
 
@@ -1828,6 +1745,97 @@
         });
     };
 
+    var toggleHiddenDependentProperties = function (gridContainer) {
+        setTimeout(function() {
+            var propertyGrid = gridContainer.data('gridInstance');
+            var propertyData = propertyGrid.getData();
+
+            // Get the default properties object
+            var descriptors = gridContainer.data('descriptors');
+
+            // Get the rows from the table
+            var items = propertyData.getItems();
+
+            // Loop over each row
+            $.each(items, function (id, item) {
+                // Get the property descriptor object
+                var descriptor = descriptors[item.property];
+                var dependent = false;
+
+                // Check if descriptor is a dynamic property
+                if (!descriptor.dynamic) {
+                    var hidden = false;
+
+                    // Check for dependencies
+                    if (descriptor.dependencies.length > 0) {
+                        // Loop over each dependency
+                        $.each(descriptor.dependencies, function (i, dependency) {
+                            // It is sufficient to have found a single instance of not meeting the
+                            // requirement for a dependent value in order to hide a property
+                            if (hidden) {
+                                return false;
+                            }
+                            // Check the row's dependent values against all other row's current values to determine hidden state
+                            $.each(items, function (k, property) {
+                                if (property.property === dependency.propertyName) {
+                                    dependent = true;
+                                    if (property.hidden === false) {
+                                        // Get the current property value to compare with the dependent value
+                                        var propertyValue = property.value;
+
+                                        // check if the property references a parameter
+                                        if (!_.isEmpty(currentParameters)) {
+                                            const paramReference = getExistingParametersReferenced(propertyValue);
+                                            // if parameter references exist, loop through all and interpolate the value in the propertyValue string
+                                            if (paramReference.length > 0) {
+                                                paramReference.forEach(function (param) {
+                                                    // handle null values by replacing with an empty string instead
+                                                    propertyValue = propertyValue.replace('#{' + param.name + '}', nfCommon.isDefinedAndNotNull(param.value) ? param.value : '');
+                                                });
+                                            }
+                                        }
+
+                                        // Test the dependentValues array against the current value of the property
+                                        if (propertyValue) {
+                                            if (dependency.dependentValues) {
+                                                hidden = !dependency.dependentValues.includes(propertyValue);
+                                            } else {
+                                                hidden = false;
+                                            }
+                                        } else {
+                                            hidden = true;
+                                        }
+                                    } else {
+                                        hidden = true;
+                                    }
+                                    if (hidden) {
+                                        // It is sufficient to have found a single instance of not meeting the
+                                        // requirement for a dependent value in order to hide a property
+                                        return false;
+                                    }
+                                }
+                            });
+                        });
+                    }
+                } else {
+                    hidden = item.hidden;
+                }
+
+                propertyData.beginUpdate();
+                propertyData.updateItem(id, $.extend(item, {
+                    hidden: hidden,
+                    dependent: dependent
+                }));
+                propertyData.endUpdate();
+
+                // Reset hidden property
+                hidden = false;
+            });
+
+            propertyGrid.resizeCanvas();
+        }, 50);
+    }
+
     var saveRow = function (table) {
         // get the property grid to commit the current edit
         var propertyGrid = table.data('gridInstance');