瀏覽代碼

AMBARI-4576 Consolidate the action buttons that apply to all services. (Mikhail Bayuk via ababiichuk)

aBabiichuk 11 年之前
父節點
當前提交
7bb9b47d72

+ 31 - 1
ambari-web/app/controllers/main.js

@@ -88,6 +88,36 @@ App.MainController = Em.Controller.extend({
           }
         }, App.pageReloadTime)
     );
-  }.observes("App.router.location.lastSetURL", "App.clusterStatus.isInstalled")
+  }.observes("App.router.location.lastSetURL", "App.clusterStatus.isInstalled"),
 
+  scRequest: function(request) {
+    return App.router.get('mainServiceController').get(request);
+  },
+
+  isAllServicesInstalled: function() {
+    return this.scRequest('isAllServicesInstalled');
+  }.property('App.router.mainServiceController.content.content.@each',
+      'App.router.mainServiceController.content.content.length'),
+
+  isStartAllDisabled: function() {
+    return this.scRequest('isStartAllDisabled');
+  }.property('App.router.mainServiceController.isStartStopAllClicked',
+      'App.router.mainServiceController.content.@each.healthStatus'),
+
+  isStopAllDisabled: function() {
+    return this.scRequest('isStopAllDisabled');
+  }.property('App.router.mainServiceController.isStartStopAllClicked',
+      'App.router.mainServiceController.content.@each.healthStatus'),
+
+  gotoAddService: function() {
+    App.router.get('mainServiceController').gotoAddService();
+  },
+
+  startAllService: function(event){
+    App.router.get('mainServiceController').startAllService(event);
+  },
+
+  stopAllService: function(event){
+    App.router.get('mainServiceController').stopAllService(event);
+  }
 });

+ 1 - 0
ambari-web/app/templates/main/dashboard.hbs

@@ -73,6 +73,7 @@
     <div class="row-fluid">
       <div class="services-menu well span2" style="padding: 8px 0">
         {{view App.MainServiceMenuView}}
+        {{view App.AllServicesActionView}}
       </div>
 
       <div class="span10" id="dashboard-widgets-container">

+ 2 - 27
ambari-web/app/templates/main/service.hbs

@@ -19,34 +19,9 @@
 <div class="row-fluid">
   <div class="services-menu well span2 service-menu-width" style="padding: 8px 0">
     {{view App.MainServiceMenuView}}
-    {{#if App.isAdmin}}
-      {{#if App.supports.addServices}}
-        <div class="add-service-button">
-          <a {{bindAttr class=":btn controller.isAllServicesInstalled:disabled"}} {{action gotoAddService target="controller"}}>
-            <i class="icon-plus"></i>
-            {{t services.service.add}}
-          </a>
-        </div>
-      {{/if}}
-      {{#if App.supports.startStopAllServices}}
-        <div class="start-stop-all-service-button">
-          <a href="javascript:void(null)" {{bindAttr class=":btn controller.isStartAllDisabled:disabled:btn-success" }}
-             data-toggle="modal" {{action "startAllService" target="controller"}}>
-            <i class="icon-play"></i>
-            {{t services.service.startAll}}
-          </a>
-        </div>
-        <div class="start-stop-all-service-button">
-          <a href="javascript:void(null)" {{bindAttr class=":btn controller.isStopAllDisabled:disabled:btn-danger" }}
-             data-toggle="modal" {{action "stopAllService" target="controller"}}>
-            <i class="icon-stop icon-white"></i>
-            {{t services.service.stopAll}}
-          </a>
-        </div>
-      {{/if}}
-    {{/if}}
+    {{view App.AllServicesActionView}}
   </div>
   <div class="span10 summary-width">
     {{outlet}}
   </div>
-</div>
+</div>

+ 56 - 0
ambari-web/app/templates/main/service/all_services_actions.hbs

@@ -0,0 +1,56 @@
+{{!
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+}}
+
+{{#if App.isAdmin}}
+  <div class="service-button" style="margin-top: 10px;">
+    <div class="btn-group display-inline-block span11 offset1">
+      <a class="btn dropdown-toggle span10" data-toggle="dropdown" href="#">{{t common.actions}}
+        <span class="caret"></span>
+      </a>
+      <ul class="pull-left dropdown-menu">
+        {{#if App.supports.addServices}}
+          <li {{bindAttr class="controller.isAllServicesInstalled:disabled"}}>
+            <a href="#"
+              {{bindAttr class="controller.isAllServicesInstalled:disabled"}}
+              {{action gotoAddService target="controller"}}>
+              <i class="icon-plus icon-white"></i> {{t services.service.add}}</a>
+          </li>
+          <li class="divider"></li>
+        {{/if}}
+        {{#if App.supports.startStopAllServices}}
+          <li {{bindAttr class="controller.isStartAllDisabled:disabled" }}>
+            <a href="#" data-toggle="modal"
+              {{bindAttr class="controller.isStartAllDisabled:disabled" }}
+              {{action "startAllService" target="controller"}}>
+              <i {{bindAttr class=":icon-play controller.isStartAllDisabled:disabled:enabled " }}></i>
+              {{t services.service.startAll}}
+            </a>
+          </li>
+          <li {{bindAttr class="controller.isStopAllDisabled:disabled" }}>
+            <a href="#" data-toggle="modal"
+              {{bindAttr class="controller.isStopAllDisabled:disabled" }}
+              {{action "stopAllService" target="controller"}}>
+              <i {{bindAttr class=":icon-stop controller.isStopAllDisabled:disabled:enabled" }}></i>
+              {{t services.service.stopAll}}
+            </a>
+          </li>
+        {{/if}}
+      </ul>
+    </div>
+  </div>
+{{/if}}

+ 1 - 0
ambari-web/app/views.js

@@ -151,6 +151,7 @@ require('views/main/dashboard/widgets/supervisor_live');
 
 
 require('views/main/service');
+require('views/main/service/all_services_actions');
 require('views/main/service/menu');
 require('views/main/service/item');
 require('views/main/service/reconfigure');

+ 23 - 0
ambari-web/app/views/main/service/all_services_actions.js

@@ -0,0 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var App = require('app');
+
+App.AllServicesActionView = Em.View.extend({
+  templateName: require('templates/main/service/all_services_actions')
+});