diff --git a/CHANGELOG.md b/CHANGELOG.md index 7999a964064..e7e6df626a5 100644 --- a/CHANGELOG.md +++ b/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 diff --git a/src/app/services/dashboard/dashboardSrv.js b/src/app/services/dashboard/dashboardSrv.js index 40d9b5df55f..cb33421a3e8 100644 --- a/src/app/services/dashboard/dashboardSrv.js +++ b/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 = []; diff --git a/src/test/specs/dashboardSrv-specs.js b/src/test/specs/dashboardSrv-specs.js index 862c2a6fc41..7223c027a8d 100644 --- a/src/test/specs/dashboardSrv-specs.js +++ b/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); + }); + + }); + });