diff --git a/src/app/partials/graphite/annotation_editor.html b/src/app/partials/graphite/annotation_editor.html index dc763cc8f12..c5e4a98a84c 100644 --- a/src/app/partials/graphite/annotation_editor.html +++ b/src/app/partials/graphite/annotation_editor.html @@ -1,14 +1,14 @@ -
+
- +
- +
diff --git a/src/app/services/annotationsSrv.js b/src/app/services/annotationsSrv.js index 7c51f45fdb1..958df500db5 100644 --- a/src/app/services/annotationsSrv.js +++ b/src/app/services/annotationsSrv.js @@ -54,86 +54,11 @@ define([ } }; - this.getGraphiteEvents = function(rangeUnparsed) { - var annotations = this.getAnnotationsByType('graphite events'); - if (annotations.length === 0) { - return []; - } - - var promises = _.map(annotations, function(annotation) { - - return datasourceSrv.default.events({ range: rangeUnparsed, tags: annotation.tags }) - .then(function(results) { - _.each(results.data, function (event) { - addAnnotation({ - annotation: annotation, - time: event.when * 1000, - description: event.what, - tags: event.tags, - data: event.data - }); - }); - }) - .then(null, errorHandler); - }); - - return promises; - }; - - this.getAnnotationsByType = function(type) { - return _.where(annotationPanel.annotations, { - type: type, - enable: true - }); - }; - - this.getGraphiteMetrics = function(filterSrv, rangeUnparsed) { - var annotations = this.getAnnotationsByType('graphite metric'); - if (annotations.length === 0) { - return []; - } - - var promises = _.map(annotations, function(annotation) { - var graphiteQuery = { - range: rangeUnparsed, - targets: [{ target: annotation.target }], - format: 'json', - maxDataPoints: 100 - }; - - var receiveFunc = _.partial(receiveGraphiteMetrics, annotation); - - return datasourceSrv.default.query(filterSrv, graphiteQuery) - .then(receiveFunc) - .then(null, errorHandler); - }); - - return promises; - }; - function errorHandler(err) { console.log('Annotation error: ', err); alertSrv.set('Annotations','Could not fetch annotations','error'); } - function receiveGraphiteMetrics(annotation, results) { - for (var i = 0; i < results.data.length; i++) { - var target = results.data[i]; - - for (var y = 0; y < target.datapoints.length; y++) { - var datapoint = target.datapoints[y]; - - if (datapoint[0]) { - addAnnotation({ - annotation: annotation, - time: datapoint[1] * 1000, - description: target.target - }); - } - } - } - } - function addAnnotation(options) { var tooltip = "" + options.title + "
"; if (options.tags) { diff --git a/src/app/services/graphite/graphiteDatasource.js b/src/app/services/graphite/graphiteDatasource.js index 4a8ac8f53f5..00c7752c0c6 100644 --- a/src/app/services/graphite/graphiteDatasource.js +++ b/src/app/services/graphite/graphiteDatasource.js @@ -58,34 +58,54 @@ function (angular, _, $, config, kbn, moment) { }; GraphiteDatasource.prototype.annotationQuery = function(annotation, filterSrv, rangeUnparsed) { - var graphiteQuery = { - range: rangeUnparsed, - targets: [{ target: annotation.target }], - format: 'json', - maxDataPoints: 100 - }; + // Graphite metric as annotation + if (annotation.target) { + var graphiteQuery = { + range: rangeUnparsed, + targets: [{ target: annotation.target }], + format: 'json', + maxDataPoints: 100 + }; - return this.query(filterSrv, graphiteQuery) - .then(function(result) { - var list = []; + return this.query(filterSrv, graphiteQuery) + .then(function(result) { + var list = []; - for (var i = 0; i < result.data.length; i++) { - var target = result.data[i]; + for (var i = 0; i < result.data.length; i++) { + var target = result.data[i]; - for (var y = 0; y < target.datapoints.length; y++) { - var datapoint = target.datapoints[y]; - if (!datapoint[0]) { continue; } + for (var y = 0; y < target.datapoints.length; y++) { + var datapoint = target.datapoints[y]; + if (!datapoint[0]) { continue; } + list.push({ + annotation: annotation, + time: datapoint[1] * 1000, + title: target.target + }); + } + } + + return list; + }); + } + // Graphite event as annotation + else if (annotation.tags) { + return this.events({ range: rangeUnparsed, tags: annotation.tags }) + .then(function(results) { + var list = []; + for (var i = 0; i < results.data; i++) { list.push({ annotation: annotation, - time: datapoint[1] * 1000, - title: target.target + time: event.when * 1000, + title: event.what, + tags: event.tags, + text: event.data }); } - } - - return list; - }); + return list; + }); + } }; GraphiteDatasource.prototype.events = function(options) {