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/27 19:54:40 UTC
ambari git commit: AMBARI-10772 Create widget -> Add metric popup:
Aggregator Function dropdown for component metrics. (atkach)
Repository: ambari
Updated Branches:
refs/heads/trunk e8f315cea -> 1c46571f9
AMBARI-10772 Create widget -> Add metric popup: Aggregator Function dropdown for component metrics. (atkach)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1c46571f
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1c46571f
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1c46571f
Branch: refs/heads/trunk
Commit: 1c46571f95bf0c2034163349a58b6417d0271984
Parents: e8f315c
Author: Andrii Tkach <at...@hortonworks.com>
Authored: Mon Apr 27 19:52:34 2015 +0300
Committer: Andrii Tkach <at...@hortonworks.com>
Committed: Mon Apr 27 20:54:24 2015 +0300
----------------------------------------------------------------------
ambari-web/app/messages.js | 2 +
.../app/styles/enhanced_service_dashboard.less | 1 +
.../service/widgets/create/step2_add_metric.hbs | 15 ++++++
.../service/widgets/create/expression_view.js | 48 ++++++++++++++++++--
4 files changed, 62 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/1c46571f/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 1d5077e..7dd8a57 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -2534,6 +2534,8 @@ Em.I18n.translations = {
'dashboard.widgets.wizard.step2.selectComponent': 'Select a Component',
'dashboard.widgets.wizard.step2.selectMetric': 'Select a Metric',
'dashboard.widgets.wizard.step2.addMetric': 'Add Metric',
+ 'dashboard.widgets.wizard.step2.aggregateFunction': 'Aggregator Function',
+ 'dashboard.widgets.wizard.step2.aggregateTooltip': 'This mathematical function will be applied to compute single value for selected metric across all host components',
'restart.service.all': 'Restart All',
'restart.service.all.affected': 'Restart All Affected',
http://git-wip-us.apache.org/repos/asf/ambari/blob/1c46571f/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 852eccb..2f9a190 100644
--- a/ambari-web/app/styles/enhanced_service_dashboard.less
+++ b/ambari-web/app/styles/enhanced_service_dashboard.less
@@ -423,6 +423,7 @@
line-height: 30px;
}
}
+ .aggregator-select,
.component-select {
.btn.dropdown-toggle {
border-radius: 4px;
http://git-wip-us.apache.org/repos/asf/ambari/blob/1c46571f/ambari-web/app/templates/main/service/widgets/create/step2_add_metric.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/widgets/create/step2_add_metric.hbs b/ambari-web/app/templates/main/service/widgets/create/step2_add_metric.hbs
index 2b9c184..9492d8b 100644
--- a/ambari-web/app/templates/main/service/widgets/create/step2_add_metric.hbs
+++ b/ambari-web/app/templates/main/service/widgets/create/step2_add_metric.hbs
@@ -61,3 +61,18 @@
</select>
</div>
</div>
+
+<div class="row-fluid" {{bindAttr class=":row-fluid view.showAggregateSelect::hidden"}}>
+ <div class="span3">{{t dashboard.widgets.wizard.step2.aggregateFunction}}</div>
+ <div class="btn-group aggregator-select span5" {{translateAttr data-original-title="dashboard.widgets.wizard.step2.aggregateTooltip"}}>
+ <button class="btn dropdown-toggle" data-toggle="dropdown">
+ {{view.parentView.aggregateFunction}}
+ <span class="caret pull-right"></span>
+ </button>
+ <ul class="dropdown-menu">
+ {{#each aggregation in view.parentView.AGGREGATE_FUNCTIONS}}
+ <li><a href="#" {{action selectAggregation aggregation target="view"}}>{{aggregation}}</a></li>
+ {{/each}}
+ </ul>
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/1c46571f/ambari-web/app/views/main/service/widgets/create/expression_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/widgets/create/expression_view.js b/ambari-web/app/views/main/service/widgets/create/expression_view.js
index 0b4e1f2..7c20276 100644
--- a/ambari-web/app/views/main/service/widgets/create/expression_view.js
+++ b/ambari-web/app/views/main/service/widgets/create/expression_view.js
@@ -165,11 +165,22 @@ App.WidgetWizardExpressionView = Em.View.extend({
expression: this.get('expression'),
/**
+ * @type {Array}
+ * @const
+ */
+ AGGREGATE_FUNCTIONS: ['avg', 'sum', 'min', 'max'],
+
+ /**
* @type {object|null}
*/
selectedMetric: null,
/**
+ * @type {string|null}
+ */
+ aggregateFunction: null,
+
+ /**
* @type {Ember.View}
* @class
*/
@@ -184,6 +195,8 @@ App.WidgetWizardExpressionView = Em.View.extend({
$('html').on('click.dropdown', '.dropdown-menu li', function (e) {
$(this).hasClass('keep-open') && e.stopPropagation();
});
+ App.tooltip($('#' + this.get('elementId') + ' .aggregator-select'));
+ this.propertyDidChange('selectedComponent');
$(".chosen-select").chosen({
placeholder_text: Em.I18n.t('dashboard.widgets.wizard.step2.selectMetric'),
@@ -205,14 +218,28 @@ App.WidgetWizardExpressionView = Em.View.extend({
*/
selectedComponent: null,
- showMore: Em.K,
+ /**
+ * @type {boolean}
+ */
+ showAggregateSelect: function () {
+ return Boolean(this.get('selectedComponent') && this.get('selectedComponent.level') === 'COMPONENT');
+ }.property('selectedComponent.level'),
+ /**
+ * select component
+ * @param {object} event
+ */
selectComponents: function (event) {
var component = this.get('componentMap').findProperty('serviceName', event.context.get('serviceName'))
.get('components').findProperty('id', event.context.get('id'));
$('#add-metric-popup .component-select').removeClass('open');
this.set('selectedComponent', component);
+ if (this.get('showAggregateSelect')) {
+ this.set('parentView.aggregateFunction', this.get('parentView.AGGREGATE_FUNCTIONS').objectAt(0));
+ } else {
+ this.set('parentView.aggregateFunction', null);
+ }
this.set('parentView.selectedMetric', null);
Em.run.next(function () {
$('.chosen-select').trigger('chosen:updated');
@@ -220,6 +247,14 @@ App.WidgetWizardExpressionView = Em.View.extend({
},
/**
+ * select aggregation function
+ * @param {object} event
+ */
+ selectAggregation: function(event) {
+ this.set('parentView.aggregateFunction', event.context);
+ },
+
+ /**
* map of components
* has following hierarchy: service -> component -> metrics
*/
@@ -292,10 +327,15 @@ App.WidgetWizardExpressionView = Em.View.extend({
}),
primary: Em.I18n.t('common.add'),
onPrimary: function () {
- var data = this.get('expression.data');
- var id = (data.length > 0) ? Math.max.apply(this, data.mapProperty('id')) + 1 : 1;
- var selectedMetric = this.get('selectedMetric');
+ var data = this.get('expression.data'),
+ id = (data.length > 0) ? Math.max.apply(this, data.mapProperty('id')) + 1 : 1,
+ selectedMetric = this.get('selectedMetric'),
+ aggregateFunction = this.get('aggregateFunction');
+
selectedMetric.set('id', id);
+ if (aggregateFunction && aggregateFunction !== 'avg') {
+ selectedMetric.set('metricPath', selectedMetric.get('metricPath') + '._' + aggregateFunction);
+ }
data.pushObject(selectedMetric);
this.hide();
}