Repository: ambari
Updated Branches:
  refs/heads/trunk 8d4243c61 -> 65724a9b9


AMBARI-15268 Combo Search: Add more supported component states (Joe Wang via 
rzang)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/65724a9b
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/65724a9b
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/65724a9b

Branch: refs/heads/trunk
Commit: 65724a9b9bf8fd86c602109de581f65479427be1
Parents: 8d4243c
Author: Richard Zang <rz...@apache.org>
Authored: Thu Mar 3 14:11:58 2016 -0800
Committer: Richard Zang <rz...@apache.org>
Committed: Thu Mar 3 14:11:58 2016 -0800

----------------------------------------------------------------------
 ambari-web/app/controllers/main/host.js         |  7 ++-
 .../controllers/main/host/combo_search_box.js   | 51 ++++++++++++++++----
 .../app/views/main/host/combo_search_box.js     | 23 +++++----
 3 files changed, 61 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/65724a9b/ambari-web/app/controllers/main/host.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/host.js 
b/ambari-web/app/controllers/main/host.js
index 27f0b41..b473c59 100644
--- a/ambari-web/app/controllers/main/host.js
+++ b/ambari-web/app/controllers/main/host.js
@@ -159,7 +159,12 @@ App.MainHostController = 
Em.ArrayController.extend(App.TableServerMixin, {
     },
     {
       name: 'componentState',
-      key: 
'(host_components/HostRoles/component_name={0}&host_components/HostRoles/state={1})',
+      key: [
+        '(host_components/HostRoles/component_name={0})',
+        
'(host_components/HostRoles/component_name={0}&host_components/HostRoles/state={1})',
+        
'(host_components/HostRoles/component_name={0}&host_components/HostRoles/desired_admin_state={1})',
+        
'(host_components/HostRoles/component_name={0}&host_components/HostRoles/maintenance_state={1})'
+      ],
       type: 'COMBO'
     }
   ],

http://git-wip-us.apache.org/repos/asf/ambari/blob/65724a9b/ambari-web/app/controllers/main/host/combo_search_box.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/host/combo_search_box.js 
b/ambari-web/app/controllers/main/host/combo_search_box.js
index 339ddc9..6c75c7a 100644
--- a/ambari-web/app/controllers/main/host/combo_search_box.js
+++ b/ambari-web/app/controllers/main/host/combo_search_box.js
@@ -60,12 +60,9 @@ App.MainHostComboSearchBoxController = Em.Controller.extend({
   },
 
   generateQueryParam: function(param) {
-    var expression = param.key;
-    var filterName = 
App.router.get('mainHostController.filterProperties').findProperty('key', 
expression).name;
-    if (filterName == 'componentState') {
-      var pHash = this.createComboParamHash(param);
-      return this.createComboParamURL(pHash, expression);
-    }
+    var expressions = param.key;
+    var pHash = this.createComboParamHash(param);
+    return this.createComboParamURL(pHash, expressions);
   },
 
   /**
@@ -73,13 +70,15 @@ App.MainHostComboSearchBoxController = 
Em.Controller.extend({
    * @param expression
    * @returns {string} 'k1=v1&(k2=v1|k2=v2)'
    */
-  createComboParamURL: function(pHash, expression) {
+  createComboParamURL: function(pHash, expressions) {
+    var self = this;
     var result = '';
     for (key in pHash) {
       var v = pHash[key];
       if (Em.isArray(v)) {
         var ex = '(';
         v.forEach(function(item) {
+          var expression = self.getComboParamURL(item, expressions);
           var toAdd = expression.replace('{0}', key);
           toAdd = toAdd.replace('{1}', item);
           ex += toAdd + '|';
@@ -87,6 +86,7 @@ App.MainHostComboSearchBoxController = Em.Controller.extend({
         ex = ex.substring(0, ex.length - 1);
         result += ex + ')';
       } else {
+        var expression = self.getComboParamURL(v, expressions);
         var ex = expression.replace('{0}', key);
         ex = ex.replace('{1}', v);
         result += ex;
@@ -98,6 +98,41 @@ App.MainHostComboSearchBoxController = Em.Controller.extend({
   },
 
   /**
+   * @param value //value of component state
+   * @returns expression //url of query of state
+   */
+  getComboParamURL: function(value, expressions) {
+    var expression = expressions[1];
+    switch (value) {
+      case 'ALL':
+        expression = expressions[0];
+        break;
+      case 'STARTED':
+      case 'STARTING':
+      case 'INSTALLED':
+      case 'STOPPING':
+      case 'INSTALL_FAILED':
+      case 'INSTALLING':
+      case 'UPGRADE_FAILED':
+      case 'UNKNOWN':
+      case 'DISABLED':
+      case 'INIT':
+        break;
+      case 'INSERVICE':
+      case 'DECOMMISSIONING':
+      case 'DECOMMISSIONED':
+      case 'RS_DECOMMISSIONED':
+        expression = expressions[2];
+        break;
+      case 'ON':
+      case 'OFF':
+        expression = expressions[3];
+        break;
+    }
+    return expression;
+  },
+
+  /**
    * @param param ['k1:v1','k2:v1', 'k2:v2'] or 'k1:v1'
    * @returns {k1:v1, k2:[v1,v2], ...}
    */
@@ -108,7 +143,6 @@ App.MainHostComboSearchBoxController = 
Em.Controller.extend({
         var values = item.split(':');
         var k = values[0];
         var v = values[1];
-        if (v == 'STOPPED') { v = 'INSTALLED'; } // 'STOPPED' is not a valid 
internal state
         if (!pHash[k]) {
           pHash[k] = v;
         } else {
@@ -123,7 +157,6 @@ App.MainHostComboSearchBoxController = 
Em.Controller.extend({
       });
     } else {
       var values = param.value.split(':');
-      if (values[1] == 'STOPPED') { values[1] = 'INSTALLED'; }
       pHash[values[0]] = values[1];
     }
     return pHash;

http://git-wip-us.apache.org/repos/asf/ambari/blob/65724a9b/ambari-web/app/views/main/host/combo_search_box.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/host/combo_search_box.js 
b/ambari-web/app/views/main/host/combo_search_box.js
index 53650ee..e8f21f0 100644
--- a/ambari-web/app/views/main/host/combo_search_box.js
+++ b/ambari-web/app/views/main/host/combo_search_box.js
@@ -61,7 +61,6 @@ App.MainHostComboSearchBoxView = Em.View.extend({
             {label: 'Version State', value: 'versionState', category: 'Host'},
             {label: 'Rack', value: 'rack', category: 'Host'},
             {label: 'Service', value: 'services', category: 'Service'},
-            {label: 'Has Component', value: 'hostComponents', category: 
'Service'},
           ];
           var hostComponentHash = {};
           App.HostComponent.find().toArray().forEach(function(component) {
@@ -112,16 +111,20 @@ App.MainHostComboSearchBoxView = Em.View.extend({
                 return {label: App.format.role(service.get('serviceName')), 
value: service.get('serviceName')};
               }), {preserveOrder: true});
               break;
-            case 'hostComponents':
-              
callback(App.HostComponent.find().toArray().mapProperty('componentName').uniq().map(function
 (componentName) {
-                return {label: App.format.role(componentName), value: 
componentName};
-              }));
-              break;
-            case 'state':
-              callback(App.HostComponentStatus.getStatusesList(), 
{preserveOrder: true});
-              break;
             case 'componentState':
-              callback(['STARTED', 'STOPPED'], {preserveOrder: true});
+              callback([{label: "All", value: "ALL"}]
+                  
.concat(App.HostComponentStatus.getStatusesList().map(function (status) {
+                    return {label: 
App.HostComponentStatus.getTextStatus(status), value: status};
+                  }))
+                  .concat([
+                    {label: "Inservice", value: "INSERVICE"},
+                    {label: "Decommissioned", value: "DECOMMISSIONED"},
+                    {label: "Decommissioning", value: "DECOMMISSIONING"},
+                    {label: "RS Decommissioned", value: "RS_DECOMMISSIONED"},
+                    {label: "Maintenance Mode On", value: "ON"},
+                    {label: "Maintenance Mode Off", value: "OFF"}
+                  ]), {preserveOrder: true});
+              break;
           }
         }
       }

Reply via email to