diff --git a/public/app/features/annotations/annotationsSrv.js b/public/app/features/annotations/annotationsSrv.js index f131ad28393..64ebadd9e1a 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(options) { + if (dashboard.snapshot) { + annotation.snapshotData = angular.copy(options); + } + }) .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..1c02a5af3d2 100644 --- a/public/app/features/dashboard/shareSnapshotCtrl.js +++ b/public/app/features/dashboard/shareSnapshotCtrl.js @@ -101,8 +101,14 @@ function (angular, _) { panel.links = []; panel.datasource = null; }); - // remove annotations - dash.annotations.list = []; + // remove annotation queries + dash.annotations.list = _.map(dash.annotations.list, function(annotation) { + return { + name: annotation.name, + enable: annotation.enable, + snapshotData: annotation.snapshotData + }; + }); // remove template queries _.each(dash.templating.list, function(variable) { variable.query = ""; @@ -122,6 +128,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/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); };