Procházet zdrojové kódy

Merge fix from 'v1.8.x' branch

Conflicts:
	CHANGELOG.md
Torkel Ödegaard před 11 roky
rodič
revize
30512b7032

+ 2 - 1
CHANGELOG.md

@@ -6,7 +6,8 @@
 - [Issue #877](https://github.com/grafana/grafana/issues/877). Graph: Smart auto decimal precision when using scaled unit formats
 - [Issue #850](https://github.com/grafana/grafana/issues/850). Graph: Shared tooltip that shows multiple series & crosshair line, thx @toni-moreno
 
-# 1.8.1 (unreleased)
+=======
+# 1.8.1 (2014-09-30)
 
 **Fixes**
 - [Issue #855](https://github.com/grafana/grafana/issues/855). Graph: Fix for scroll issue in graph edit mode when dropdown goes below screen

+ 10 - 4
src/app/services/dashboard/dashboardSrv.js

@@ -31,8 +31,8 @@ function (angular, $, kbn, _, moment) {
       this.rows = data.rows || [];
       this.nav = data.nav || [];
       this.time = data.time || { from: 'now-6h', to: 'now' };
-      this.templating = data.templating || { list: [], enable: false };
-      this.annotations = data.annotations || { list: [], enable: false};
+      this.templating = this._ensureListExist(data.templating);
+      this.annotations = this._ensureListExist(data.annotations);
       this.refresh = data.refresh;
       this.version = data.version || 0;
 
@@ -40,11 +40,17 @@ function (angular, $, kbn, _, moment) {
         this.nav.push({ type: 'timepicker' });
       }
 
-      this.updateSchema(data);
+      this._updateSchema(data);
     }
 
     var p = DashboardModel.prototype;
 
+    p._ensureListExist = function (data) {
+      if (!data) { data = {}; }
+      if (!data.list) { data.list = []; }
+      return data;
+    };
+
     p.getNextPanelId = function() {
       var i, j, row, panel, max = 0;
       for (i = 0; i < this.rows.length; i++) {
@@ -116,7 +122,7 @@ function (angular, $, kbn, _, moment) {
       $rootScope.$broadcast('refresh');
     };
 
-    p.updateSchema = function(old) {
+    p._updateSchema = function(old) {
       var i, j, k;
       var oldVersion = this.version;
       var panelUpgrades = [];

+ 22 - 0
src/test/specs/dashboardSrv-specs.js

@@ -178,4 +178,26 @@ define([
 
   });
 
+  describe('when creating dashboard model with missing list for annoations or templating', function() {
+    var model;
+
+    beforeEach(module('grafana.services'));
+    beforeEach(inject(function(dashboardSrv) {
+      model = dashboardSrv.create({
+        annotations: {
+          enable: true,
+        },
+        templating: {
+          enable: true
+        }
+      });
+    }));
+
+    it('should add empty list', function() {
+      expect(model.annotations.list.length).to.be(0);
+      expect(model.templating.list.length).to.be(1);
+    });
+
+  });
+
 });