Jelajahi Sumber

Worked on alias pattern for InfluxDB 0.9 editor, #1525

Torkel Ödegaard 10 tahun lalu
induk
melakukan
921d672a2c

+ 16 - 1
public/app/plugins/datasource/influxdb/influxSeries.js

@@ -29,7 +29,7 @@ function (_) {
       var seriesName = series.name;
 
       if (self.alias) {
-        seriesName = self.alias;
+        seriesName = self._getSeriesName(series);
       } else if (series.tags) {
         var tags = _.map(series.tags, function(value, key) {
           return key + ': ' + value;
@@ -44,6 +44,21 @@ function (_) {
     return output;
   };
 
+  p._getSeriesName = function(series) {
+    var regex = /\$(\w+)|\[\[([\s\S]+?)\]\]/g;
+
+    return this.alias.replace(regex, function(match, g1, g2) {
+      var group = g1 || g2;
+
+      if (group === 'm' || group === 'measurement') { return series.name; }
+      if (group.indexOf('tag_') !== 0) { return match; }
+
+      var tag = group.replace('tag_', '');
+      if (!series.tags) { return match; }
+      return series.tags[tag];
+    });
+  };
+
   p.getAnnotations = function () {
     var list = [];
     var self = this;

+ 17 - 4
public/test/specs/influxSeries-specs.js

@@ -9,13 +9,13 @@ define([
       var options = { series: [
         {
           name: 'cpu',
-          tags:  {app: 'test'},
+          tags:  {app: 'test', server: 'server1'},
           columns: ['time', 'mean'],
           values: [["2015-05-18T10:57:05Z", 10], ["2015-05-18T10:57:06Z", 12]]
         },
         {
           name: 'cpu',
-          tags:  {app: 'test2'},
+          tags:  {app: 'test2', server: 'server2'},
           columns: ['time', 'mean'],
           values: [["2015-05-18T10:57:05Z", 15], ["2015-05-18T10:57:06Z", 16]]
         }
@@ -28,13 +28,13 @@ define([
           var result = series.getTimeSeries();
 
           expect(result.length).to.be(2);
-          expect(result[0].target).to.be('cpu {app: test}');
+          expect(result[0].target).to.be('cpu {app: test, server: server1}');
           expect(result[0].datapoints[0][0]).to.be(10);
           expect(result[0].datapoints[0][1]).to.be(1431946625000);
           expect(result[0].datapoints[1][0]).to.be(12);
           expect(result[0].datapoints[1][1]).to.be(1431946626000);
 
-          expect(result[1].target).to.be('cpu {app: test2}');
+          expect(result[1].target).to.be('cpu {app: test2, server: server2}');
           expect(result[1].datapoints[0][0]).to.be(15);
           expect(result[1].datapoints[0][1]).to.be(1431946625000);
           expect(result[1].datapoints[1][0]).to.be(16);
@@ -52,6 +52,19 @@ define([
         });
 
       });
+
+      describe('and alias patterns', function() {
+        it('should replace patterns', function() {
+          options.alias = 'alias: $m -> $tag_server ([[measurement]])';
+          var series = new InfluxSeries(options);
+          var result = series.getTimeSeries();
+
+          expect(result[0].target).to.be('alias: cpu -> server1 (cpu)');
+          expect(result[1].target).to.be('alias: cpu -> server2 (cpu)');
+        });
+
+      });
+
     });
 
   });