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/17 13:05:38 UTC
ambari git commit: AMBARI-10558 Create widget wizard: Integrate the
wizard with backend API. (atkach)
Repository: ambari
Updated Branches:
refs/heads/trunk 55e31bb82 -> 4f1607bb0
AMBARI-10558 Create widget wizard: Integrate the wizard with backend API. (atkach)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4f1607bb
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4f1607bb
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4f1607bb
Branch: refs/heads/trunk
Commit: 4f1607bb0f9a1b35a8ab7394bcf0c47ec75a8c1d
Parents: 55e31bb
Author: Andrii Tkach <at...@hortonworks.com>
Authored: Fri Apr 17 13:33:19 2015 +0300
Committer: Andrii Tkach <at...@hortonworks.com>
Committed: Fri Apr 17 14:05:12 2015 +0300
----------------------------------------------------------------------
.../service/widgets/create/step3_controller.js | 51 +++++++++++++++++++-
.../service/widgets/create/wizard_controller.js | 19 ++++----
ambari-web/app/routes/add_widget.js | 5 +-
.../service/widgets/create/step2_add_metric.hbs | 10 ++--
.../main/service/widgets/create/step3.hbs | 2 +-
ambari-web/app/utils/ajax/ajax.js | 11 +++++
.../service/widgets/create/expression_view.js | 3 ++
7 files changed, 80 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/4f1607bb/ambari-web/app/controllers/main/service/widgets/create/step3_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/widgets/create/step3_controller.js b/ambari-web/app/controllers/main/service/widgets/create/step3_controller.js
index b417afd..7d43b14 100644
--- a/ambari-web/app/controllers/main/service/widgets/create/step3_controller.js
+++ b/ambari-web/app/controllers/main/service/widgets/create/step3_controller.js
@@ -88,5 +88,54 @@ App.WidgetWizardStep3Controller = Em.Controller.extend({
//TODO: Following computed propert needs to be implemented. Next button should be enabled when there is no validation error and all required fields are filled
isSubmitDisabled: function () {
return !this.get('widgetName');
- }.property('widgetName')
+ }.property('widgetName'),
+
+ /**
+ * collect all needed data to create new widget
+ * @returns {{WidgetInfo: {cluster_name: *, widget_name: *, display_name: *, widget_type: *, description: *, scope: string, metrics: *, values: *, properties: *}}}
+ */
+ collectWidgetData: function () {
+ return {
+ WidgetInfo: {
+ widget_name: this.get('widgetName'),
+ display_name: this.get('widgetName'),
+ widget_type: this.get('content.widgetType'),
+ description: this.get('widgetDescription'),
+ scope: this.get('widgetScope.name').toUpperCase(),
+ "metrics": this.get('widgetMetrics').map(function (metric) {
+ return {
+ "name": metric.name,
+ "service_name": metric.serviceName,
+ "component_name": metric.componentName
+ }
+ }),
+ values: this.get('widgetValues'),
+ properties: this.get('widgetProperties')
+ }
+ };
+ },
+
+ /**
+ * post widget definition to server
+ * @returns {$.ajax}
+ */
+ postWidgetDefinition: function () {
+ return App.ajax.send({
+ name: 'widgets.wizard.add',
+ sender: this,
+ data: {
+ data: this.collectWidgetData()
+ },
+ success: 'postWidgetDefinitionSuccessCallback'
+ });
+ },
+
+ postWidgetDefinitionSuccessCallback: function() {
+
+ },
+
+ complete: function () {
+ this.postWidgetDefinition();
+ App.router.send('complete');
+ }
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/4f1607bb/ambari-web/app/controllers/main/service/widgets/create/wizard_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/widgets/create/wizard_controller.js b/ambari-web/app/controllers/main/service/widgets/create/wizard_controller.js
index cf37599..fac5300 100644
--- a/ambari-web/app/controllers/main/service/widgets/create/wizard_controller.js
+++ b/ambari-web/app/controllers/main/service/widgets/create/wizard_controller.js
@@ -212,7 +212,7 @@ App.WidgetWizardController = App.WizardController.extend({
},
callback: callback,
success: 'loadAllMetricsFromServerCallback'
- })
+ });
},
/**
@@ -224,12 +224,11 @@ App.WidgetWizardController = App.WizardController.extend({
var metrics = {};
if (json) {
- var data = json.items[0].artifacts[0].artifact_data;
-
- for (var serviceName in data) {
- for (var componentName in data[serviceName]) {
- for (var level in data[serviceName][componentName]) {
- metrics = data[serviceName][componentName][level][0]['metrics']['default'];
+ json.items.forEach(function (service) {
+ var data = service.artifacts[0].artifact_data[service.StackServices.service_name];
+ for (var componentName in data) {
+ for (var level in data[componentName]) {
+ metrics = data[componentName][level][0]['metrics']['default'];
for (var widgetId in metrics) {
result.push({
widget_id: widgetId,
@@ -237,14 +236,14 @@ App.WidgetWizardController = App.WizardController.extend({
temporal: metrics[widgetId].temporal,
name: metrics[widgetId].name,
level: level.toUpperCase(),
- type: data[serviceName][componentName][level][0]["type"].toUpperCase(),
+ type: data[componentName][level][0]["type"].toUpperCase(),
component_name: componentName,
- service_name: serviceName
+ service_name: service.StackServices.service_name
});
}
}
}
- }
+ }, this);
}
this.save('allMetrics', result);
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/4f1607bb/ambari-web/app/routes/add_widget.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/add_widget.js b/ambari-web/app/routes/add_widget.js
index 7702a36..c12c22a 100644
--- a/ambari-web/app/routes/add_widget.js
+++ b/ambari-web/app/routes/add_widget.js
@@ -157,10 +157,7 @@ module.exports = App.WizardRoute.extend({
},
back: Em.Router.transitionTo('step2'),
complete: function (router, context) {
- var controller = router.get('widgetWizardStep3Controller');
- if (!controller.get('isSubmitDisabled')) {
- router.get('widgetWizardController.popup').onClose();
- }
+ router.get('widgetWizardController.popup').onClose();
}
})
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/4f1607bb/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 4ac360d..be62e8b 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
@@ -27,15 +27,15 @@
{{#each service in view.componentMap}}
<li class="accordion-group keep-open">
<div class="accordion-heading">
- <a class="accordion-toggle" data-toggle="collapse" href="#collapseOne">
- <i class="icon-caret-down"></i><i class="icon-caret-right"></i>{{service.displayName}}
+ <a class="accordion-toggle collapsed" data-toggle="collapse" {{bindAttr href="service.href"}}>
+ <i class="icon-caret-down"></i><i class="icon-caret-right"></i>{{service.displayName}} ({{service.count}})
</a>
</div>
- <div id="collapseOne" class="accordion-body collapse in">
+ <div {{bindAttr id="service.serviceName"}} class="accordion-body collapse">
<ul class="accordion-inner">
{{#each component in service.components}}
<li>
- <a href="#" {{action selectComponents component target="view"}}> {{component.displayName}}</a>
+ <a href="#" {{action selectComponents component target="view"}}> {{component.displayName}} ({{component.count}})</a>
</li>
{{/each}}
</ul>
@@ -45,7 +45,7 @@
<li><a class="link" href="#" {{action showMore target="view"}}>{{t hostPopup.serviceInfo.showMore}}</a></li>
<li class="row-fluid">
<button class="btn span4 offset1">{{t common.cancel}}</button>
- <button class="btn btn-primary span4">{{t common.apply}}</button>
+ <button class="btn btn-primary span4 apply-button">{{t common.apply}}</button>
</li>
</ul>
</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/4f1607bb/ambari-web/app/templates/main/service/widgets/create/step3.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/widgets/create/step3.hbs b/ambari-web/app/templates/main/service/widgets/create/step3.hbs
index 7c25919..126db15 100644
--- a/ambari-web/app/templates/main/service/widgets/create/step3.hbs
+++ b/ambari-web/app/templates/main/service/widgets/create/step3.hbs
@@ -50,6 +50,6 @@
<div class="btn-area">
<button id="add-widget-step3-back" class="btn" {{action back}}>← {{t common.back}}</button>
- <button id="add-widget-step3-complete" class="btn btn-success pull-right" {{bindAttr disabled="isSubmitDisabled"}} {{action "complete"}}>{{t common.complete}}</button>
+ <button id="add-widget-step3-complete" class="btn btn-success pull-right" {{bindAttr disabled="isSubmitDisabled"}} {{action "complete" target="controller"}}>{{t common.complete}}</button>
</div>
</div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/4f1607bb/ambari-web/app/utils/ajax/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax/ajax.js b/ambari-web/app/utils/ajax/ajax.js
index 0c63a99..d6c735b 100644
--- a/ambari-web/app/utils/ajax/ajax.js
+++ b/ambari-web/app/utils/ajax/ajax.js
@@ -2481,6 +2481,17 @@ var urls = {
'widgets.wizard.metrics.get': {
real: '{stackVersionURL}/services?artifacts/Artifacts/artifact_name=metrics_descriptor&StackServices/service_name.in({serviceNames})&fields=artifacts/*',
mock: '/data/metrics/HBASE/definition.json'
+ },
+
+ 'widgets.wizard.add': {
+ real: '/clusters/c1/widgets/',
+ mock: '',
+ 'format': function (data) {
+ return {
+ type: 'POST',
+ data: JSON.stringify(data.data)
+ };
+ }
}
};
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/4f1607bb/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 be72f06..0662d43 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
@@ -250,6 +250,7 @@ App.WidgetWizardExpressionView = Em.View.extend({
}, this);
for (var serviceName in servicesMap) {
+ components = [];
for (var componentId in servicesMap[serviceName].components) {
components.push(Em.Object.create({
componentName: servicesMap[serviceName].components[componentId].component_name,
@@ -274,6 +275,8 @@ App.WidgetWizardExpressionView = Em.View.extend({
}
result.push(Em.Object.create({
serviceName: serviceName,
+ //in order to support accordion lists
+ href: '#' + serviceName,
displayName: App.StackService.find(serviceName).get('displayName'),
count: servicesMap[serviceName].count,
components: components