diff --git a/CHANGELOG.md b/CHANGELOG.md index be185b32ff8..acf60b77689 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,5 @@ # 3.0.0 (unrelased master branch) - ### Breaking changes **InfluxDB 0.8.x** The data source for the old version of influxdb (0.8.x) is no longer included in default builds. Can easily be installed via improved plugin system, closes #3523 **KairosDB** The data source is no longer included in default builds. Can easily be installed via improved plugin system, closes #3524 @@ -8,6 +7,7 @@ ### Enhancements ### * **Sessions**: Support for memcached as session storage, closes [#3458](https://github.com/grafana/grafana/pull/3458) * **mysql**: Grafana now supports ssl for mysql, closes [#3584](https://github.com/grafana/grafana/pull/3584) +* **snapshot**: Annotations are now included in snapshots, closes [#3635](https://github.com/grafana/grafana/pull/3635) # 2.6.1 (unrelased, 2.6.x branch) diff --git a/package.json b/package.json index f40ba9cec24..d6a7719601d 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "karma-phantomjs-launcher": "0.2.1", "load-grunt-tasks": "3.4.0", "mocha": "2.3.4", + "phantomjs": "^1.9.19", "reflect-metadata": "0.1.2", "rxjs": "5.0.0-beta.0", "systemjs": "0.19.6", diff --git a/public/app/features/annotations/annotationsSrv.js b/public/app/features/annotations/annotationsSrv.js index f131ad28393..c58c5ff6d4e 100644 --- a/public/app/features/annotations/annotationsSrv.js +++ b/public/app/features/annotations/annotationsSrv.js @@ -38,10 +38,19 @@ define([ var rangeRaw = timeSrv.timeRange(false); var promises = _.map(annotations, function(annotation) { + if (annotation.snapshotData) { + self.receiveAnnotationResults(annotation.snapshotData); + return; + } return datasourceSrv.get(annotation.datasource).then(function(datasource) { var query = {range: range, rangeRaw: rangeRaw, annotation: annotation}; return datasource.annotationQuery(query) .then(self.receiveAnnotationResults) + .then(function(results) { + if (dashboard.snapshot) { + annotation.snapshotData = angular.copy(results); + } + }) .then(null, errorHandler); }, this); }); @@ -58,6 +67,8 @@ define([ for (var i = 0; i < results.length; i++) { self.addAnnotation(results[i]); } + + return results; }; this.addAnnotation = function(options) { diff --git a/public/app/features/dashboard/shareSnapshotCtrl.js b/public/app/features/dashboard/shareSnapshotCtrl.js index 13c1783d069..445677d5a12 100644 --- a/public/app/features/dashboard/shareSnapshotCtrl.js +++ b/public/app/features/dashboard/shareSnapshotCtrl.js @@ -101,8 +101,18 @@ function (angular, _) { panel.links = []; panel.datasource = null; }); - // remove annotations - dash.annotations.list = []; + // remove annotation queries + dash.annotations.list = _.chain(dash.annotations.list) + .filter(function(annotation) { + return annotation.enable; + }) + .map(function(annotation) { + return { + name: annotation.name, + enable: annotation.enable, + snapshotData: annotation.snapshotData + }; + }).value(); // remove template queries _.each(dash.templating.list, function(variable) { variable.query = ""; @@ -122,6 +132,9 @@ function (angular, _) { $scope.dashboard.forEachPanel(function(panel) { delete panel.snapshotData; }); + _.each($scope.dashboard.annotations.list, function(annotation) { + delete annotation.snapshotData; + }); }; $scope.deleteSnapshot = function() { diff --git a/public/app/plugins/datasource/elasticsearch/index_pattern.js b/public/app/plugins/datasource/elasticsearch/index_pattern.js index d565e22c0b6..6b26e41e1c5 100644 --- a/public/app/plugins/datasource/elasticsearch/index_pattern.js +++ b/public/app/plugins/datasource/elasticsearch/index_pattern.js @@ -11,7 +11,7 @@ function (_, moment) { } IndexPattern.intervalMap = { - "Hours": { startOf: 'hour', amount: 'hours'}, + "Hourly": { startOf: 'hour', amount: 'hours'}, "Daily": { startOf: 'day', amount: 'days'}, "Weekly": { startOf: 'isoWeek', amount: 'weeks'}, "Monthly": { startOf: 'month', amount: 'months'}, diff --git a/public/app/plugins/panels/graph/module.js b/public/app/plugins/panels/graph/module.js index 731fb47ae6d..42ef167f911 100644 --- a/public/app/plugins/panels/graph/module.js +++ b/public/app/plugins/panels/graph/module.js @@ -21,7 +21,7 @@ function (angular, _, moment, kbn, TimeSeries, PanelMeta) { }; }); - module.controller('GraphCtrl', function($scope, $rootScope, panelSrv, annotationsSrv, panelHelper, $q) { + module.controller('GraphCtrl', function($scope, $rootScope, panelSrv, annotationsSrv, panelHelper) { $scope.panelMeta = new PanelMeta({ panelName: 'Graph', @@ -144,7 +144,7 @@ function (angular, _, moment, kbn, TimeSeries, PanelMeta) { $scope.loadSnapshot = function(snapshotData) { panelHelper.updateTimeRange($scope); - $scope.annotationsPromise = $q.when([]); + $scope.annotationsPromise = annotationsSrv.getAnnotations($scope.dashboard); $scope.dataHandler(snapshotData); };