浏览代码

AMBARI-9927 UI doesn't send PUT request if last config is removed from "slider-client". (ababiichuk)

aBabiichuk 10 年之前
父节点
当前提交
be855bedf1

+ 24 - 1
ambari-web/app/controllers/main/service/info/configs.js

@@ -910,6 +910,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
 
     serviceConfig = App.config.createServiceConfig(this.get('content.serviceName'));
     this.loadConfigs(this.get('allConfigs'), serviceConfig);
+    this.setVisibilityForRangerProperties(serviceConfig);
     this.checkOverrideProperty(serviceConfig);
     this.checkDatabaseProperties(serviceConfig);
     this.get('stepConfigs').pushObject(serviceConfig);
@@ -1013,6 +1014,28 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
     return serviceConfigProperty;
   },
 
+  /**
+   * hide properties from Advanced ranger category that match pattern
+   * if property with dependentConfigPattern is false otherwise don't hide
+   * @param serviceConfig
+   * @method setVisibilityForRangerProperties
+   */
+  setVisibilityForRangerProperties: function(serviceConfig) {
+    var category = "Advanced ranger-{0}-plugin-properties".format(this.get('content.serviceName').toLowerCase());
+    if (serviceConfig.configCategories.findProperty('name', category)) {
+      var patternConfig = serviceConfig.configs.findProperty('dependentConfigPattern');
+      if (patternConfig) {
+        var value = patternConfig.get('value') === true || ["yes", "true"].contains(patternConfig.get('value').toLowerCase());
+
+        serviceConfig.configs.filter(function(c) {
+          if (c.get('category') === category && c.get('name').match(patternConfig.get('dependentConfigPattern')) && c.get('name') != patternConfig.get('name'))
+            c.set('isVisible', value);
+        });
+      }
+    }
+  },
+  /**
+
   /**
    * trigger addOverrideProperty
    * @param {Object} componentConfig
@@ -1914,7 +1937,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
       var oldAttributes = oldConfig["properties_attributes"] || {};
       var newProperties = configSite.properties || {};
       var newAttributes = configSite["properties_attributes"] || {};
-      if (this.isAttributesChanged(oldAttributes, newAttributes) || this.isConfigChanged(oldProperties, newProperties)) {
+      if (this.isAttributesChanged(oldAttributes, newAttributes) || this.isConfigChanged(oldProperties, newProperties) || this.get('modifiedFileNames').contains(App.config.getOriginalFileName(configSite.type))) {
         changedConfigs.push(configSite);
       }
     }, this);

+ 2 - 7
ambari-web/app/views/common/controls_view.js

@@ -280,22 +280,17 @@ App.ServiceConfigCheckbox = Ember.Checkbox.extend(App.ServiceConfigPopoverSuppor
  */
 App.ServiceConfigCheckboxWithDependencies = App.ServiceConfigCheckbox.extend({
 
-  didInsertElement: function() {
-    this._super();
-    this.toggleDependentConfigs();
-  },
-
   toggleDependentConfigs: function() {
     if (this.get('serviceConfig.dependentConfigPattern')) {
       if (this.get('serviceConfig.dependentConfigPattern') === "CATEGORY") {
-        this.disableEnableCategoryCongis();
+        this.disableEnableCategoryConfigs();
       } else {
         this.showHideDependentConfigs();
       }
     }
   }.observes('checked'),
 
-  disableEnableCategoryCongis: function () {
+  disableEnableCategoryConfigs: function () {
     this.get('categoryConfigsAll').setEach('isEditable', this.get('checked'));
     this.set('serviceConfig.isEditable', true);
   },

+ 14 - 2
ambari-web/app/views/main/service/item.js

@@ -196,7 +196,7 @@ App.MainServiceItemView = Em.View.extend({
 
   observeMaintenance: function() {
     Em.run.once(this, 'observeMaintenanceOnce');
-  }.observes('controller.isStopDisabled','controller.isClientsOnlyService', 'controller.content.isRestartRequired'),
+  },
 
   observeMaintenanceOnce: function() {
     var self = this;
@@ -326,7 +326,7 @@ App.MainServiceItemView = Em.View.extend({
   },
 
   isMaintenanceActive: function() {
-    return this.get('maintenance').length !== 0;
+    return this.get('state') !== 'inDOM' || this.get('maintenance').length !== 0;
   }.property('maintenance'),
 
   hasConfigTab: function() {
@@ -336,6 +336,18 @@ App.MainServiceItemView = Em.View.extend({
   didInsertElement: function () {
     this.get('controller').setStartStopState();
   },
+
+  willInsertElement: function () {
+    this.addObserver('controller.isStopDisabled', this, 'observeMaintenance');
+    this.addObserver('controller.isClientsOnlyService', this, 'observeMaintenance');
+    this.addObserver('controller.content.isRestartRequired', this, 'observeMaintenance');
+  },
+
+  willDestroyElement: function() {
+    this.removeObserver('controller.isStopDisabled', this, 'observeMaintenance');
+    this.removeObserver('controller.isClientsOnlyService', this, 'observeMaintenance');
+    this.removeObserver('controller.content.isRestartRequired', this, 'observeMaintenance');
+  },
   service:function () {
     var svc = this.get('controller.content');
     var svcName = svc.get('serviceName');