瀏覽代碼

AMBARI-3776. Non-default config-group configs should have +Exception action. (akovalenko)

Aleksandr Kovalenko 11 年之前
父節點
當前提交
3b433e7ed1
共有 2 個文件被更改,包括 38 次插入35 次删除
  1. 6 5
      ambari-web/app/models/service_config.js
  2. 32 30
      ambari-web/app/views/common/configs/services_config.js

+ 6 - 5
ambari-web/app/models/service_config.js

@@ -176,12 +176,13 @@ App.ServiceConfigProperty = Ember.Object.extend({
    * No override capabilities for fields which are not edtiable
    * and fields which represent master hosts.
    */
-  isPropertyOverridable : function() {
+  isPropertyOverridable: function () {
     var overrideable = this.get('isOverridable');
-  	var editable = this.get('isEditable');
-  	var dt = this.get('displayType');
-  	return overrideable && editable && ("masterHost"!=dt);
-  }.property('isEditable', 'displayType', 'isOverridable'),
+    var editable = this.get('isEditable');
+    var overrides = this.get('overrides');
+    var dt = this.get('displayType');
+    return overrideable && (editable || !overrides || !overrides.length) && ("masterHost" != dt);
+  }.property('isEditable', 'displayType', 'isOverridable', 'overrides.length'),
   isOverridden: function() {
     var overrides = this.get('overrides');
     return (overrides != null && overrides.get('length')>0) || !this.get('isOriginalSCP');

+ 32 - 30
ambari-web/app/views/common/configs/services_config.js

@@ -487,37 +487,39 @@ App.ServiceConfigsByCategoryView = Ember.View.extend({
   },
 
   createOverrideProperty: function (event) {
-    var serviceConfigController = this.get('controller');
     var serviceConfigProperty = event.contexts[0];
-    // Launch dialog to pick/create Config-group
-    var serviceConfigGroups = serviceConfigController.get('configGroups');
-    App.config.launchConfigGroupSelectionCreationDialog(this.get('service.serviceName'), 
-        serviceConfigGroups, function(selectedConfigGroup){
-      console.log("launchConfigGroupSelectionCreationDialog(): Selected/Created:", selectedConfigGroup);
-      if (selectedConfigGroup) {
-        serviceConfigController.set('selectedConfigGroup', selectedConfigGroup);
-        // TODO - show configurations for this new config-group
-//        var overrides = serviceConfigProperty.get('overrides');
-//        if (!overrides) {
-//          overrides = [];
-//          serviceConfigProperty.set('overrides', overrides);
-//        }
-//        // create new override with new value
-//        var newSCP = App.ServiceConfigProperty.create(serviceConfigProperty);
-//        newSCP.set('value', '');
-//        newSCP.set('isOriginalSCP', false); // indicated this is overridden value,
-//        newSCP.set('parentSCP', serviceConfigProperty);
-//        newSCP.set('selectedHostOptions', Ember.A([]));
-//        console.debug("createOverrideProperty(): Added:", newSCP, " to main-property:", serviceConfigProperty);
-//        overrides.pushObject(newSCP);
-//
-//        // Launch override window
-//        var dummyEvent = {contexts: [newSCP]};
-//        this.showOverrideWindow(dummyEvent);
-      } else {
-        // Cancelled dialog
-      }
-    });
+    var self = this;
+    var serviceConfigController = this.get('controller');
+    var selectedConfigGroup = serviceConfigController.get('selectedConfigGroup');
+    if (selectedConfigGroup.get('isDefault')) {
+      // Launch dialog to pick/create Config-group
+      App.config.launchConfigGroupSelectionCreationDialog(this.get('service.serviceName'),
+          serviceConfigController.get('configGroups'), function (selectedGroupInPopup) {
+            console.log("launchConfigGroupSelectionCreationDialog(): Selected/Created:", selectedGroupInPopup);
+            if (selectedGroupInPopup) {
+              serviceConfigController.set('selectedConfigGroup', selectedGroupInPopup);
+              self.addOverrideProperty(serviceConfigProperty);
+            }
+          });
+    } else {
+      this.addOverrideProperty(serviceConfigProperty);
+    }
+  },
+
+  addOverrideProperty: function(serviceConfigProperty) {
+    var overrides = serviceConfigProperty.get('overrides');
+    if (!overrides) {
+      overrides = [];
+      serviceConfigProperty.set('overrides', overrides);
+    }
+    // create new override with new value
+    var newSCP = App.ServiceConfigProperty.create(serviceConfigProperty);
+    newSCP.set('value', '');
+    newSCP.set('isOriginalSCP', false); // indicated this is overridden value,
+    newSCP.set('parentSCP', serviceConfigProperty);
+    newSCP.set('isEditable', true);
+    console.debug("createOverrideProperty(): Added:", newSCP, " to main-property:", serviceConfigProperty);
+    overrides.pushObject(newSCP);
   },
 
   showOverrideWindow: function (event) {