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.