You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ab...@apache.org on 2018/05/30 20:54:27 UTC
[ambari] branch trunk updated: AMBARI-23826 Save button is inactive
for changed filtered property after configs comparing - addendum
(ababiichuk)
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 <ab...@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
ababiichuk@apache.org.