Bläddra i källkod

AMBARI-10688 After Editing a Widget it fails to load due to JS error. (atkach)

Andrii Tkach 10 år sedan
förälder
incheckning
d3aada22d2

+ 5 - 7
ambari-web/app/controllers/main/service/widgets/create/step2_controller.js

@@ -294,11 +294,7 @@ App.WidgetWizardStep2Controller = Em.Controller.extend({
       value = '${';
       expression.data.forEach(function (element) {
         if (element.isMetric) {
-          metrics.push({
-            name: element.name,
-            componentName: element.componentName,
-            serviceName: element.serviceName
-          });
+          metrics.push(element);
         }
         value += element.name;
       }, this);
@@ -430,7 +426,8 @@ App.WidgetWizardStep2Controller = Em.Controller.extend({
             name: str.trim(),
             isMetric: true,
             componentName: metric.component_name,
-            serviceName: metric.service_name
+            serviceName: metric.service_name,
+            metricPath: metric.metric_path
           }));
           str = '';
         }
@@ -450,7 +447,8 @@ App.WidgetWizardStep2Controller = Em.Controller.extend({
         name: str.trim(),
         isMetric: true,
         componentName: metric.component_name,
-        serviceName: metric.service_name
+        serviceName: metric.service_name,
+        metricPath: metric.metric_path
       }));
     }
     return data;

+ 5 - 1
ambari-web/app/controllers/main/service/widgets/create/step3_controller.js

@@ -89,6 +89,9 @@ App.WidgetWizardStep3Controller = Em.Controller.extend({
     this.set('widgetName', this.get('content.widgetDisplayName'));
     this.set('widgetDisplayName', this.get('content.widgetDisplayName'));
     this.set('widgetDescription', this.get('content.widgetDescription'));
+    this.get('scopes').forEach(function (scope) {
+      scope.set('checked', scope.get('name').toUpperCase() == this.get('content.widgetScope'));
+    }, this);
   },
 
   //TODO: Following computed property needs to be implemented. Next button should be enabled when there is no validation error and all required fields are filled
@@ -112,7 +115,8 @@ App.WidgetWizardStep3Controller = Em.Controller.extend({
           return {
             "name": metric.name,
             "service_name": metric.serviceName,
-            "component_name": metric.componentName
+            "component_name": metric.componentName,
+            "metric_path": metric.metricPath
           }
         }),
         values: this.get('widgetValues'),

+ 1 - 9
ambari-web/app/controllers/main/service/widgets/create/wizard_controller.js

@@ -166,15 +166,7 @@ App.WidgetWizardController = App.WizardController.extend({
    */
   save: function (name, value) {
     this.set('content.' + name, value);
-    if (Array.isArray(value)) {
-      value = value.map(function (item) {
-        return this.toObject(item);
-      }, this);
-    } else if (typeof value === 'object') {
-      value = this.toObject(value);
-    }
-    this.setDBProperty(name, value);
-    console.log(this.get('name') + ": saved " + name, value);
+    this._super(name);
   },
 
   /**

+ 7 - 9
ambari-web/app/views/main/service/widgets/create/expression_view.js

@@ -191,7 +191,9 @@ App.WidgetWizardExpressionView = Em.View.extend({
             self.set('parentView.selectedMetric', {
               name: obj.selected,
               componentName: self.get('selectedComponent.componentName'),
-              serviceName: self.get('selectedComponent.serviceName')
+              serviceName: self.get('selectedComponent.serviceName'),
+              metricPath: self.get('controller.filteredMetrics').findProperty('name', obj.selected).widget_id,
+              isMetric: true
             });
           });
         },
@@ -289,14 +291,10 @@ App.WidgetWizardExpressionView = Em.View.extend({
       primary: Em.I18n.t('common.save'),
       onPrimary: function () {
         var data = this.get('expression.data');
-        var lastId = (data.length > 0) ? Math.max.apply(this, data.mapProperty('id')) : 0;
-        data.pushObject(Em.Object.create({
-          id: ++lastId,
-          name: this.get('selectedMetric.name'),
-          componentName: this.get('selectedMetric.componentName'),
-          serviceName: this.get('selectedMetric.serviceName'),
-          isMetric: true
-        }));
+        var id = (data.length > 0) ? Math.max.apply(this, data.mapProperty('id')) + 1 : 1;
+        var selectedMetric = this.get('selectedMetric');
+        selectedMetric.set('id', id);
+        data.pushObject(selectedMetric);
         this.hide();
       }
     })