Explorar o código

AMBARI-3850. Config-groups should be sorted in manage config-groups dialog (alexantonenko)

Alex Antonenko %!s(int64=11) %!d(string=hai) anos
pai
achega
60bbb1d53b

+ 4 - 6
ambari-web/app/controllers/main/service/info/configs.js

@@ -323,13 +323,11 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     if (!selectedConfigGroup) {
       selectedConfigGroup = defaultConfigGroup;
     }
-    this.get('configGroups').push(defaultConfigGroup);
-    this.get('configGroups').sort(function(configGroup){
-      if(configGroup.isDefault){
-        return false;
-      }
-      return true;
+
+    this.get('configGroups').sort(function(configGroupA, configGroupB){
+      return (configGroupA.name > configGroupB.name);
     });
+    this.get('configGroups').unshift(defaultConfigGroup);
     this.set('selectedConfigGroup', selectedConfigGroup);
   },
 

+ 21 - 8
ambari-web/app/controllers/main/service/manage_config_groups_controller.js

@@ -38,6 +38,23 @@ App.ManageConfigGroupsController = Em.Controller.extend({
 
   usedConfigGroupNames: [],
 
+  resortConfigGroup: function() {
+    var configGroups = Ember.copy(this.get('configGroups'));
+    if(configGroups.length < 2){
+      return;
+    }
+    var defaultConfigGroup = configGroups.findProperty('isDefault');
+    configGroups.removeObject(defaultConfigGroup);
+    var sorted = configGroups.sort(function(configGroupA, configGroupB){
+      return String(configGroupA.get('name')) >= String(configGroupB.get('name'));
+    });
+    sorted = [defaultConfigGroup].concat(sorted);
+
+    this.removeObserver('configGroups.@each.name', this, 'resortConfigGroup');
+    this.set('configGroups', sorted);
+    this.addObserver('configGroups.@each.name', this, 'resortConfigGroup');
+  }.observes('configGroups.@each.name'),
+
   loadConfigGroups: function (serviceName) {
     this.set('serviceName', serviceName);
     App.ajax.send({
@@ -107,12 +124,6 @@ App.ManageConfigGroupsController = Em.Controller.extend({
       defaultConfigGroup.set('childConfigGroups', configGroups);
       defaultConfigGroup.set('hosts', unusedHosts);
       this.set('configGroups', [defaultConfigGroup].concat(configGroups));
-      this.get('configGroups').sort(function(configGroup){
-        if(configGroup.isDefault){
-          return false;
-        }
-        return true;
-      });
       this.loadProperties(groupToTypeToTagMap);
       this.set('isLoaded', true);
     }
@@ -454,8 +465,10 @@ App.ManageConfigGroupsController = Em.Controller.extend({
   },
 
   successLoadingConfigGroup: function (data) {
-    var confGroup = this.get('configGroups').findProperty('id', data.ConfigGroup.id);
-    confGroup.set('apiResponse', data.ConfigGroup);
+    if(data.ConfigGroup) {
+      var confGroup = this.get('configGroups').findProperty('id', data.ConfigGroup.id);
+      confGroup.set('apiResponse', data.ConfigGroup);
+    }
   },
 
   /**