Преглед изворни кода

influxdb annotations working, need to figure out how to know which columns to use for title, tags, and data

Torkel Ödegaard пре 11 година
родитељ
комит
cf2ef0955d

+ 5 - 10
src/app/services/annotationsSrv.js

@@ -49,16 +49,8 @@ define([
     };
     };
 
 
     this.receiveAnnotationResults = function(results) {
     this.receiveAnnotationResults = function(results) {
-      console.log('Annotation result!', results);
       for (var i = 0; i < results.length; i++) {
       for (var i = 0; i < results.length; i++) {
-        var data = results[i];
-        addAnnotation({
-          annotation: data.annotation,
-          time: data.time,
-          description: data.description,
-          tags: data.tags,
-          data: data.text
-        });
+        addAnnotation(results[i]);
       }
       }
     };
     };
 
 
@@ -143,14 +135,17 @@ define([
     }
     }
 
 
     function addAnnotation(options) {
     function addAnnotation(options) {
-      var tooltip = "<small><b>" + options.description + "</b><br/>";
+      var tooltip = "<small><b>" + options.title + "</b><br/>";
       if (options.tags) {
       if (options.tags) {
         tooltip += (options.tags || '') + '<br/>';
         tooltip += (options.tags || '') + '<br/>';
       }
       }
+
       tooltip += '<i>' + moment(options.time).format('YYYY-MM-DD HH:mm:ss') + '</i><br/>';
       tooltip += '<i>' + moment(options.time).format('YYYY-MM-DD HH:mm:ss') + '</i><br/>';
+
       if (options.data) {
       if (options.data) {
         tooltip += options.data.replace(/\n/g, '<br/>');
         tooltip += options.data.replace(/\n/g, '<br/>');
       }
       }
+
       tooltip += "</small>";
       tooltip += "</small>";
 
 
       list.push({
       list.push({

+ 1 - 1
src/app/services/graphite/graphiteDatasource.js

@@ -79,7 +79,7 @@ function (angular, _, $, config, kbn, moment) {
               list.push({
               list.push({
                 annotation: annotation,
                 annotation: annotation,
                 time: datapoint[1] * 1000,
                 time: datapoint[1] * 1000,
-                description: target.target
+                title: target.target
               });
               });
             }
             }
           }
           }

+ 41 - 1
src/app/services/influxdb/influxSeries.js

@@ -8,6 +8,7 @@ function (_) {
     this.seriesList = options.seriesList;
     this.seriesList = options.seriesList;
     this.alias = options.alias;
     this.alias = options.alias;
     this.groupByField = options.groupByField;
     this.groupByField = options.groupByField;
+    this.annotation = options.annotation;
   }
   }
 
 
   var p = InfluxSeries.prototype;
   var p = InfluxSeries.prototype;
@@ -65,6 +66,45 @@ function (_) {
     return output;
     return output;
   };
   };
 
 
+  p.getAnnotations = function () {
+    var list = [];
+    var self = this;
+
+    _.each(this.seriesList, function (series) {
+      var titleCol = 0;
+      var tagsCol = 0;
+
+      _.each(series.columns, function(column, index) {
+        if (column === 'time' || column === 'sequence_number') {
+          return;
+        }
+
+        if (!titleCol && column !== 'tags') {
+          titleCol = index;
+        }
+        else {
+          tagsCol = index;
+        }
+      });
+
+      _.each(series.points, function (point) {
+        var data = {
+          annotation: self.annotation,
+          time: point[0] * 1000,
+          title: point[titleCol]
+        };
+
+        if (tagsCol) {
+          data.tags = point[tagsCol];
+        }
+
+        list.push(data);
+      });
+    });
+
+    return list;
+  };
+
   p.createNameForSeries = function(seriesName, groupByColValue) {
   p.createNameForSeries = function(seriesName, groupByColValue) {
     var name = this.alias
     var name = this.alias
       .replace('$s', seriesName);
       .replace('$s', seriesName);
@@ -84,4 +124,4 @@ function (_) {
   };
   };
 
 
   return InfluxSeries;
   return InfluxSeries;
-});
+});

+ 4 - 39
src/app/services/influxdb/influxdbDatasource.js

@@ -121,46 +121,11 @@ function (angular, _, kbn, InfluxSeries) {
 
 
     InfluxDatasource.prototype.annotationQuery = function(annotation, filterSrv, rangeUnparsed) {
     InfluxDatasource.prototype.annotationQuery = function(annotation, filterSrv, rangeUnparsed) {
       var timeFilter = getTimeFilter({ range: rangeUnparsed });
       var timeFilter = getTimeFilter({ range: rangeUnparsed });
-      var query = _.template(annotation.query, {
-        timeFilter: timeFilter
-      }, this.templateSettings);
+      var query = _.template(annotation.query, { timeFilter: timeFilter }, this.templateSettings);
 
 
-      return this.doInfluxRequest(query)
-        .then(function (results) {
-          var list = [];
-          _.each(results, function (series) {
-            var descriptionCol = 0;
-            var tagsCol = 0;
-            _.each(series.columns, function(column, index) {
-              if (column === 'time' || column === 'sequence_number') {
-                return;
-              }
-
-              if (!descriptionCol) {
-                descriptionCol = index;
-              }
-              else {
-                tagsCol = index;
-              }
-            });
-
-            _.each(series.points, function (point) {
-              var data = {
-                annotation: annotation,
-                time: point[0] * 1000,
-                description: point[descriptionCol]
-              };
-
-              if (tagsCol) {
-                data.tags = point[tagsCol];
-              }
-
-              list.push(data);
-            });
-          });
-
-          return list;
-        });
+      return this.doInfluxRequest(query).then(function(results) {
+        return new InfluxSeries({ seriesList: results, annotation: annotation }).getAnnotations();
+      });
     };
     };
 
 
     InfluxDatasource.prototype.listColumns = function(seriesName) {
     InfluxDatasource.prototype.listColumns = function(seriesName) {

+ 34 - 0
src/test/specs/influxSeries-specs.js

@@ -139,4 +139,38 @@ define([
 
 
   });
   });
 
 
+  describe("when creating annotations from influxdb response", function() {
+    describe('given two series', function() {
+      var series = new InfluxSeries({
+        seriesList: [
+          {
+            columns: ['time', 'text', 'sequence_number'],
+            name: 'events1',
+            points: [[1402596000, 'some text', 1], [1402596001, 'asd', 2]]
+          },
+          {
+            columns: ['time', 'tags', 'text'],
+            name: 'events2',
+            points: [[1402596000, 'tag1, tag2', 'mu']]
+          }
+        ],
+        annotation: {query: 'select'}
+      });
+
+      var result = series.getAnnotations();
+
+      it(' should generate 4 annnotations ', function() {
+        expect(result.length).to.be(3);
+        expect(result[0].annotation.query).to.be('select');
+        expect(result[0].title).to.be('some text');
+        expect(result[0].time).to.be(1402596000000);
+        expect(result[1].title).to.be('asd');
+        //expect(result[2].tags).to.be('tag1, tag2');
+        //expect(result[2].title).to.be('mu');
+      });
+
+    });
+
+  });
+
 });
 });