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

ababiichuk pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
     new b337817  AMBARI-23826 Save button is inactive for changed filtered 
property after configs comparing - addendum (ababiichuk)
b337817 is described below

commit b337817798dadc4b516b71c04775174fbdbf9b9a
Author: ababiichuk <ababiic...@hortonworks.com>
AuthorDate: Wed May 30 19:21:46 2018 +0300

    AMBARI-23826 Save button is inactive for changed filtered property after 
configs comparing - addendum (ababiichuk)
---
 .../app/controllers/main/service/info/configs.js   | 12 +--
 .../app/controllers/wizard/step7_controller.js     |  5 ++
 .../app/mixins/common/configs/enhanced_configs.js  | 94 ++++++++++++++++++++++
 .../common/configs/widgets/config_widget_view.js   | 87 +-------------------
 4 files changed, 109 insertions(+), 89 deletions(-)

diff --git a/ambari-web/app/controllers/main/service/info/configs.js 
b/ambari-web/app/controllers/main/service/info/configs.js
index f1fb4f7..564758f 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -403,12 +403,12 @@ App.MainServiceInfoConfigsController = 
Em.Controller.extend(App.AddSecurityConfi
   },
 
   parseConfigData: function(data) {
-    var self = this;
-    this.loadKerberosIdentitiesConfigs().done(function(identityConfigs) {
-      self.prepareConfigObjects(data, identityConfigs);
-      self.loadCompareVersionConfigs(self.get('allConfigs')).done(function() {
-        self.addOverrides(data, self.get('allConfigs'));
-        self.onLoadOverrides(self.get('allConfigs'));
+    this.loadKerberosIdentitiesConfigs().done(identityConfigs => {
+      this.prepareConfigObjects(data, identityConfigs);
+      this.loadCompareVersionConfigs(this.get('allConfigs')).done(() => {
+        this.addOverrides(data, this.get('allConfigs'));
+        this.onLoadOverrides(this.get('allConfigs'));
+        this.updateAttributesFromTheme(this.get('content.serviceName'));
       });
     });
   },
diff --git a/ambari-web/app/controllers/wizard/step7_controller.js 
b/ambari-web/app/controllers/wizard/step7_controller.js
index c408e7c..70c8c03 100644
--- a/ambari-web/app/controllers/wizard/step7_controller.js
+++ b/ambari-web/app/controllers/wizard/step7_controller.js
@@ -596,6 +596,7 @@ App.WizardStep7Controller = 
Em.Controller.extend(App.ServerValidatorMixin, App.E
     }
     this.set('stepConfigs', serviceConfigs);
     this.set('stepConfigsCreated', true);
+    this.updateConfigAttributesFromThemes();
     this.checkHostOverrideInstaller();
     this.selectProperService();
     var isInstallerWizard = (this.get("content.controllerName") === 
'installerController');
@@ -2112,6 +2113,10 @@ App.WizardStep7Controller = 
Em.Controller.extend(App.ServerValidatorMixin, App.E
     } else {
       App.router.send('back');
     }
+  },
+
+  updateConfigAttributesFromThemes: function () {
+    this.get('allSelectedServiceNames').forEach(serviceName => 
this.updateAttributesFromTheme(serviceName));
   }
 
 });
diff --git a/ambari-web/app/mixins/common/configs/enhanced_configs.js 
b/ambari-web/app/mixins/common/configs/enhanced_configs.js
index 78902e8..26ab7db 100644
--- a/ambari-web/app/mixins/common/configs/enhanced_configs.js
+++ b/ambari-web/app/mixins/common/configs/enhanced_configs.js
@@ -608,5 +608,99 @@ App.EnhancedConfigsMixin = 
Em.Mixin.create(App.ConfigWithOverrideRecommendationP
   removeCurrentFromDependentList: function (config, saveRecommended) {
     var recommendation = this.getRecommendation(config.get('name'), 
config.get('filename'), config.get('group.name'));
     if (recommendation) this.saveRecommendation(recommendation, 
saveRecommended);
+  },
+
+  updateAttributesFromTheme: function (serviceName) {
+    const serviceConfigs = this.get('stepConfigs').findProperty('serviceName', 
serviceName).get('configs'),
+      configConditions = App.ThemeCondition.find().filter(condition => {
+        const dependentConfigName = condition.get('configName'),
+          dependentConfigFileName = condition.get('fileName'),
+          configsToDependOn = condition.getWithDefault('configs', []);
+        return serviceConfigs.some(serviceConfig => {
+          const serviceConfigName = Em.get(serviceConfig, 'name'),
+            serviceConfigFileName = Em.get(serviceConfig, 'filename');
+          return (serviceConfigName === dependentConfigName && 
serviceConfigFileName === dependentConfigFileName)
+            || configsToDependOn.some(config => {
+              const {configName, fileName} = config;
+              return serviceConfigName === configName && serviceConfigFileName 
=== fileName;
+            });
+        });
+      });
+    this.updateAttributesFromConditions(configConditions, serviceConfigs, 
serviceName);
+  },
+
+  updateAttributesFromConditions: function (configConditions, serviceConfigs, 
serviceName) {
+    let isConditionTrue;
+    configConditions.forEach(configCondition => {
+      const ifStatement = configCondition.get('if');
+      if (configCondition.get('resource') === 'config') {
+        isConditionTrue = 
App.configTheme.calculateConfigCondition(ifStatement, serviceConfigs);
+        if (configCondition.get('type') === 'subsection' || 
configCondition.get('type') === 'subsectionTab') {
+          this.changeSubsectionAttribute(configCondition, isConditionTrue);
+        } else {
+          this.changeConfigAttribute(configCondition, isConditionTrue, 
serviceName);
+        }
+      } else if (configCondition.get('resource') === 'service') {
+        const service = App.Service.find().findProperty('serviceName', 
ifStatement);
+        if (service) {
+          isConditionTrue = true;
+        } else if (!service && this.get('allSelectedServiceNames') && 
this.get('allSelectedServiceNames').length) {
+          isConditionTrue = 
this.get('allSelectedServiceNames').contains(ifStatement);
+        } else {
+          isConditionTrue = false;
+        }
+        this.changeConfigAttribute(configCondition, isConditionTrue, 
serviceName);
+      }
+    });
+  },
+
+  /**
+   *
+   * @param configCondition {App.ThemeCondition}
+   * @param isConditionTrue {boolean}
+   */
+  changeConfigAttribute: function (configCondition, isConditionTrue, 
serviceName) {
+    const conditionalConfigName = configCondition.get('configName'),
+      conditionalConfigFileName = configCondition.get('fileName'),
+      serviceConfigs = this.get('stepConfigs').findProperty('serviceName', 
serviceName).get('configs'),
+      action = isConditionTrue ? configCondition.get('then') : 
configCondition.get('else'),
+      valueAttributes = action.property_value_attributes;
+    this.set('isChangingConfigAttributes', true);
+    for (let key in valueAttributes) {
+      if (valueAttributes.hasOwnProperty(key)) {
+        const valueAttribute = App.StackConfigValAttributesMap[key] || key,
+          conditionalConfig = serviceConfigs.filterProperty('filename', 
conditionalConfigFileName).findProperty('name', conditionalConfigName);
+        if (conditionalConfig) {
+          if (key === 'visible') {
+            conditionalConfig.set('hiddenBySection', !valueAttributes[key]);
+          }
+          conditionalConfig.set(valueAttribute, valueAttributes[key]);
+        }
+      }
+    }
+    this.set('isChangingConfigAttributes', false);
+  },
+  /**
+   *
+   * @param subsectionCondition {App.ThemeCondition}
+   * @param isConditionTrue {boolean}
+   */
+  changeSubsectionAttribute: function (subsectionCondition, isConditionTrue) {
+    var subsectionConditionName = subsectionCondition.get('name');
+    var action = isConditionTrue ? subsectionCondition.get('then') : 
subsectionCondition.get('else');
+    if (subsectionCondition.get('id')) {
+      const valueAttributes = action.property_value_attributes;
+      if (valueAttributes && !Em.none(valueAttributes.visible)) {
+        let themeResource;
+        if (subsectionCondition.get('type') === 'subsection') {
+          themeResource = App.SubSection.find().findProperty('name', 
subsectionConditionName);
+        } else if (subsectionCondition.get('type') === 'subsectionTab') {
+          themeResource = App.SubSectionTab.find().findProperty('name', 
subsectionConditionName);
+        }
+        themeResource.set('isHiddenByConfig', !valueAttributes.visible);
+        themeResource.get('configs').setEach('hiddenBySection', 
!valueAttributes.visible);
+        themeResource.get('configs').setEach('hiddenBySubSection', 
!valueAttributes.visible);
+      }
+    }
   }
 });
diff --git a/ambari-web/app/views/common/configs/widgets/config_widget_view.js 
b/ambari-web/app/views/common/configs/widgets/config_widget_view.js
index f9b39f1..76e6741 100644
--- a/ambari-web/app/views/common/configs/widgets/config_widget_view.js
+++ b/ambari-web/app/views/common/configs/widgets/config_widget_view.js
@@ -383,8 +383,6 @@ App.ConfigWidgetView = 
Em.View.extend(App.SupportsDependentConfigs, App.WidgetPo
     }
 
     if (configConditions && configConditions.length) {
-      this.configValueObserverForAttributes();
-
       //Add Observer to configCondition that depends on another config value
       var isConditionConfigDependent = 
configConditions.filterProperty('resource', 'config').length;
       if (isConditionConfigDependent) {
@@ -413,32 +411,10 @@ App.ConfigWidgetView = 
Em.View.extend(App.SupportsDependentConfigs, App.WidgetPo
   },
 
   configValueObserverForAttributes: function() {
-    var configConditions = this.get('config.configConditions');
-    var serviceName = this.get('config.serviceName');
-    var serviceConfigs = 
this.get('controller.stepConfigs').findProperty('serviceName',serviceName).get('configs');
-    var isConditionTrue;
-    configConditions.forEach(function(configCondition){
-      var ifStatement = configCondition.get("if");
-      if (configCondition.get("resource") === 'config') {
-        isConditionTrue = 
App.configTheme.calculateConfigCondition(ifStatement, serviceConfigs);
-        if (configCondition.get("type") === 'subsection' || 
configCondition.get("type") === 'subsectionTab') {
-          this.changeSubsectionAttribute(configCondition, isConditionTrue);
-        } else {
-          this.changeConfigAttribute(configCondition, isConditionTrue);
-        }
-      } else if (configCondition.get("resource") === 'service') {
-        var service = App.Service.find().findProperty('serviceName', 
ifStatement);
-        var serviceName;
-        if (service) {
-          isConditionTrue = true;
-        } else if (!service && this.get('controller.allSelectedServiceNames') 
&& this.get('controller.allSelectedServiceNames').length) {
-          isConditionTrue = 
this.get('controller.allSelectedServiceNames').contains(ifStatement);
-        } else {
-          isConditionTrue = false;
-        }
-        this.changeConfigAttribute(configCondition, isConditionTrue);
-      }
-    }, this);
+    const configConditions = this.get('config.configConditions'),
+      serviceName = this.get('config.serviceName'),
+      serviceConfigs = 
this.get('controller.stepConfigs').findProperty('serviceName',serviceName).get('configs');
+    this.get('controller').updateAttributesFromConditions(configConditions, 
serviceConfigs, serviceName);
   },
 
   /**
@@ -519,61 +495,6 @@ App.ConfigWidgetView = 
Em.View.extend(App.SupportsDependentConfigs, App.WidgetPo
     });
   },
 
-
-  /**
-   *
-   * @param configCondition {App.ThemeCondition}
-   * @param isConditionTrue {boolean}
-   */
-  changeConfigAttribute: function(configCondition, isConditionTrue) {
-    var conditionalConfigName = configCondition.get("configName");
-    var conditionalConfigFileName = configCondition.get("fileName");
-    var serviceName = this.get('config.serviceName');
-    var serviceConfigs = 
this.get('controller.stepConfigs').findProperty('serviceName',serviceName).get('configs');
-    var action = isConditionTrue ? configCondition.get("then") : 
configCondition.get("else");
-    var valueAttributes = action.property_value_attributes;
-    this.set('controller.isChangingConfigAttributes', true);
-    for (var key in valueAttributes) {
-      if (valueAttributes.hasOwnProperty(key)) {
-        var valueAttribute = App.StackConfigValAttributesMap[key] || key;
-        var conditionalConfig = 
serviceConfigs.filterProperty('filename',conditionalConfigFileName).findProperty('name',
 conditionalConfigName);
-        if (conditionalConfig) {
-          if (key === 'visible') {
-            conditionalConfig.set('hiddenBySection', !valueAttributes[key]);
-          }
-          conditionalConfig.set(valueAttribute, valueAttributes[key]);
-        }
-      }
-    }
-    this.set('controller.isChangingConfigAttributes', false);
-  },
-
-  /**
-   *
-   * @param subsectionCondition {App.ThemeCondition}
-   * @param isConditionTrue {boolean}
-   */
-  changeSubsectionAttribute: function(subsectionCondition, isConditionTrue) {
-    var subsectionConditionName = subsectionCondition.get('name');
-    var action = isConditionTrue ? subsectionCondition.get("then") : 
subsectionCondition.get("else");
-    if (subsectionCondition.get('id')) {
-      var valueAttributes = action.property_value_attributes;
-      if (valueAttributes && !Em.none(valueAttributes.visible)) {
-        var themeResource;
-        if (subsectionCondition.get('type') === 'subsection') {
-          themeResource = App.SubSection.find().findProperty('name', 
subsectionConditionName);
-        } else if (subsectionCondition.get('type') === 'subsectionTab') {
-          themeResource = App.SubSectionTab.find().findProperty('name', 
subsectionConditionName);
-        }
-        themeResource.set('isHiddenByConfig', !valueAttributes.visible);
-        themeResource.get('configs').setEach('hiddenBySection', 
!valueAttributes.visible);
-        themeResource.get('configs').setEach('hiddenBySubSection', 
!valueAttributes.visible);
-      }
-    }
-  },
-
-
-
   /**
    * set widget value same as config value
    * useful for widgets that work with intermediate config value, not original

-- 
To stop receiving notification emails like this one, please contact
ababiic...@apache.org.

Reply via email to