You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by at...@apache.org on 2015/04/01 13:29:25 UTC

ambari git commit: AMBARI-10308 Create a separate view for number widget type. (atkach)

Repository: ambari
Updated Branches:
  refs/heads/trunk 43b4a9a53 -> 694ff41af


AMBARI-10308 Create a separate view for number widget type. (atkach)


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

Branch: refs/heads/trunk
Commit: 694ff41affce3ce226c835aaa17c145e4632fc42
Parents: 43b4a9a
Author: Andrii Tkach <at...@hortonworks.com>
Authored: Wed Apr 1 13:52:09 2015 +0300
Committer: Andrii Tkach <at...@hortonworks.com>
Committed: Wed Apr 1 14:29:18 2015 +0300

----------------------------------------------------------------------
 .../HBASE/Append_num_ops_&_Delete_num_ops.json  |  2 +-
 .../data/widget_layouts/HBASE/stack_layout.json |  4 +-
 ambari-web/app/models/widget.js                 |  4 +-
 .../app/styles/enhanced_service_dashboard.less  | 26 ++++++--
 .../templates/common/widget/number_widget.hbs   | 26 ++++++++
 .../app/templates/main/service/info/summary.hbs |  4 +-
 ambari-web/app/views.js                         |  1 +
 .../views/common/widget/number_widget_view.js   | 65 ++++++++++++++++++++
 .../app/views/main/service/info/summary.js      |  8 ++-
 .../views/main/service/info/summary_test.js     |  2 +-
 10 files changed, 130 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/694ff41a/ambari-web/app/assets/data/metrics/HBASE/Append_num_ops_&_Delete_num_ops.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/metrics/HBASE/Append_num_ops_&_Delete_num_ops.json b/ambari-web/app/assets/data/metrics/HBASE/Append_num_ops_&_Delete_num_ops.json
index 87e0294..f9ca4c7 100644
--- a/ambari-web/app/assets/data/metrics/HBASE/Append_num_ops_&_Delete_num_ops.json
+++ b/ambari-web/app/assets/data/metrics/HBASE/Append_num_ops_&_Delete_num_ops.json
@@ -17,7 +17,7 @@
         }
       },
       "regionserver" : {
-        "percentFilesLocal" : 99,
+        "percentFilesLocal" : 66,
         "Server" : {
           "Append_num_ops" : [
             [

http://git-wip-us.apache.org/repos/asf/ambari/blob/694ff41a/ambari-web/app/assets/data/widget_layouts/HBASE/stack_layout.json
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/data/widget_layouts/HBASE/stack_layout.json b/ambari-web/app/assets/data/widget_layouts/HBASE/stack_layout.json
index bfab170..ae9a43f 100644
--- a/ambari-web/app/assets/data/widget_layouts/HBASE/stack_layout.json
+++ b/ambari-web/app/assets/data/widget_layouts/HBASE/stack_layout.json
@@ -72,7 +72,9 @@
               }
             ],
             "properties": {
-              "display_unit": "%"
+              "display_unit": "%",
+              "warning_threshold": 70,
+              "error_threshold": 90
             }
           },
           {

http://git-wip-us.apache.org/repos/asf/ambari/blob/694ff41a/ambari-web/app/models/widget.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/widget.js b/ambari-web/app/models/widget.js
index ba3f6de..88a80e3 100644
--- a/ambari-web/app/models/widget.js
+++ b/ambari-web/app/models/widget.js
@@ -57,8 +57,10 @@ App.Widget = DS.Model.extend({
     switch (this.get('widgetType')) {
       case 'GRAPH':
         return App.GraphWidgetView;
-      case 'NUMBER':
+      case 'TEMPLATE':
         return App.TemplateWidgetView;
+      case 'NUMBER':
+        return App.NumberWidgetView;
       case 'GAUGE':
         return App.GaugeWidgetView;
       default:

http://git-wip-us.apache.org/repos/asf/ambari/blob/694ff41a/ambari-web/app/styles/enhanced_service_dashboard.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/enhanced_service_dashboard.less b/ambari-web/app/styles/enhanced_service_dashboard.less
index 4d74488..cdc72ad 100644
--- a/ambari-web/app/styles/enhanced_service_dashboard.less
+++ b/ambari-web/app/styles/enhanced_service_dashboard.less
@@ -16,6 +16,8 @@
  * limitations under the License.
  */
 
+@import 'common.less';
+
 .service-metrics-block {
 
   #add-widget-action-box {
@@ -45,6 +47,10 @@
 }
 
 #widget_layout {
+  .frame {
+    height: 150px;
+    width: 90%;
+  }
   .widget {
     .spinner {
       margin: 55px auto;
@@ -57,21 +63,31 @@
     }
     .content {
       text-align: center;
-      color: #5ab400;
+      color: @health-status-green;
       padding-top: 35px;
       font-weight: bold;
       font-size: 35px;
     }
     .template-widget {
-      height: 150px;
-      width: 90%;
+      .frame;
+    }
+    .number-widget {
+      .frame;
     }
     .gauge-widget {
-      height: 150px;
-      width: 90%;
+      .frame;
       .content {
         padding-top: 5px;
       }
     }
+    .red {
+      color: @health-status-red;
+    }
+    .orange {
+      color: @health-status-orange;
+    }
+    .green {
+      color: @health-status-green;
+    }
   }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/694ff41a/ambari-web/app/templates/common/widget/number_widget.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/common/widget/number_widget.hbs b/ambari-web/app/templates/common/widget/number_widget.hbs
new file mode 100644
index 0000000..f8998fd
--- /dev/null
+++ b/ambari-web/app/templates/common/widget/number_widget.hbs
@@ -0,0 +1,26 @@
+{{!
+* 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.
+}}
+
+<div class="number-widget thumbnail">
+  {{#if view.isLoaded}}
+    <div class="caption title">{{view.title}}</div>
+    <div {{bindAttr class="view.contentColor :content"}}>{{view.value}}</div>
+  {{else}}
+    <div class="spinner"></div>
+  {{/if}}
+</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/694ff41a/ambari-web/app/templates/main/service/info/summary.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/info/summary.hbs b/ambari-web/app/templates/main/service/info/summary.hbs
index 4fc4ba0..8e66441 100644
--- a/ambari-web/app/templates/main/service/info/summary.hbs
+++ b/ambari-web/app/templates/main/service/info/summary.hbs
@@ -98,7 +98,7 @@
                 </button>
                 <ul class="dropdown-menu">
                   {{#each option in view.widgetActions}}
-                    <li {{bindAttr class="option.layouts:dropdown-submenu"}}>
+                    <li {{bindAttr class="option.layouts:dropdown-submenu option.isAction::keep-open"}}>
                       {{#if option.isAction}}
                         <a href="javascript:void(0);"
                            class="action" {{action doWidgetAction option.action target="view"}}>
@@ -124,7 +124,7 @@
                       {{/if}}
                     </li>
                   {{/each}}
-                  <li>
+                  <li class="keep-open">
                     <a href="javascript:void(0);">
                       {{t hostPopup.serviceInfo.showMore}}
                     </a>

http://git-wip-us.apache.org/repos/asf/ambari/blob/694ff41a/ambari-web/app/views.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js
index 2e5562e..f4e83de 100644
--- a/ambari-web/app/views.js
+++ b/ambari-web/app/views.js
@@ -76,6 +76,7 @@ require('views/common/controls_view');
 require('views/common/widget/graph_widget_view');
 require('views/common/widget/template_widget_view');
 require('views/common/widget/gauge_widget_view');
+require('views/common/widget/number_widget_view');
 require('views/login');
 require('views/main');
 require('views/main/menu');

http://git-wip-us.apache.org/repos/asf/ambari/blob/694ff41a/ambari-web/app/views/common/widget/number_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/widget/number_widget_view.js b/ambari-web/app/views/common/widget/number_widget_view.js
new file mode 100644
index 0000000..fd8a99e
--- /dev/null
+++ b/ambari-web/app/views/common/widget/number_widget_view.js
@@ -0,0 +1,65 @@
+/**
+ * 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.NumberWidgetView = Em.View.extend(App.WidgetMixin, {
+  templateName: require('templates/common/widget/number_widget'),
+
+  /**
+   * @type {string}
+   */
+  title: '',
+
+  /**
+   * @type {string}
+   */
+  value: '',
+
+  /**
+   * common metrics container
+   * @type {Array}
+   */
+  metrics: [],
+
+  /**
+   * color of content calculated by thresholds
+   * @type {string}
+   */
+  contentColor: function () {
+    var value = parseFloat(this.get('value'));
+    var warningThreshold = parseFloat(this.get('content.properties.warning_threshold'));
+    var errorThreshold = parseFloat(this.get('content.properties.error_threshold'));
+
+    if (value <= warningThreshold) {
+      return 'green';
+    } else if (value <= errorThreshold) {
+      return 'orange';
+    } else {
+      return 'red';
+    }
+  }.property('value', 'content.properties.warning_threshold', 'content.properties.error_threshold'),
+
+  drawWidget: function () {
+    if (this.get('isLoaded')) {
+      this.calculateValues();
+      this.set('value', this.get('content.values')[0].computedValue);
+      this.set('title', this.get('content.values')[0].name);
+    }
+  }
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/694ff41a/ambari-web/app/views/main/service/info/summary.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/info/summary.js b/ambari-web/app/views/main/service/info/summary.js
index b655e5d..ea06cf8 100644
--- a/ambari-web/app/views/main/service/info/summary.js
+++ b/ambari-web/app/views/main/service/info/summary.js
@@ -412,7 +412,8 @@ App.MainServiceInfoSummaryView = Em.View.extend(App.UserPref, {
       options.push(Em.Object.create({
         label: widget.get('displayName'),
         isVisible: widget.get('isVisible'),
-        selected: true
+        selected: true,
+        isAction: false
       }));
     }, this);
 
@@ -546,6 +547,11 @@ App.MainServiceInfoSummaryView = Em.View.extend(App.UserPref, {
       }
     }
 
+    //prevent dropdown closing on checkbox click
+    $('html').on('click.dropdown', '.dropdown-menu li', function (e) {
+      $(this).hasClass('keep-open') && e.stopPropagation();
+    });
+
     if (svcName && isMetricsSupported) {
       var allServices =  require('data/service_graph_config').getServiceGraphConfig();
       this.constructGraphObjects(allServices[svcName.toLowerCase()]);

http://git-wip-us.apache.org/repos/asf/ambari/blob/694ff41a/ambari-web/test/views/main/service/info/summary_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/service/info/summary_test.js b/ambari-web/test/views/main/service/info/summary_test.js
index 97ff3c9..cc9a421 100644
--- a/ambari-web/test/views/main/service/info/summary_test.js
+++ b/ambari-web/test/views/main/service/info/summary_test.js
@@ -181,7 +181,7 @@ describe('App.MainServiceInfoSummaryView', function() {
 
   });
 
-  describe('#setTimeRange', function () {
+  describe.skip('#setTimeRange', function () {
 
     var cases = [
       {