From 80574334cf60ffd6f4886c28449de6fc5ef6fa7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 4 Sep 2014 14:41:27 +0200 Subject: [PATCH] Changed variable replacement works for InfluxDB, now , and --- .../partials/influxdb/annotation_editor.html | 4 +-- .../services/influxdb/influxQueryBuilder.js | 23 ++------------- .../services/influxdb/influxdbDatasource.js | 9 ++++-- src/test/specs/influxQueryBuilder-specs.js | 28 +++---------------- src/test/specs/influxdb-datasource-specs.js | 4 +-- 5 files changed, 16 insertions(+), 52 deletions(-) diff --git a/src/app/partials/influxdb/annotation_editor.html b/src/app/partials/influxdb/annotation_editor.html index 2bcfb549411..fe867d68f36 100644 --- a/src/app/partials/influxdb/annotation_editor.html +++ b/src/app/partials/influxdb/annotation_editor.html @@ -1,8 +1,8 @@
-
InfluxDB Query Example: select text from events where [[$timeFilter]]
+
InfluxDB Query Example: select text from events where $timeFilter
- +
diff --git a/src/app/services/influxdb/influxQueryBuilder.js b/src/app/services/influxdb/influxQueryBuilder.js index a72f18fdd4a..eb5334fd4e1 100644 --- a/src/app/services/influxdb/influxQueryBuilder.js +++ b/src/app/services/influxdb/influxQueryBuilder.js @@ -27,13 +27,13 @@ function () { } query += target.function + '(' + target.column + ')'; - query += ' from ' + seriesName + ' where [[$timeFilter]]'; + query += ' from ' + seriesName + ' where $timeFilter'; if (target.condition) { query += ' and ' + target.condition; } - query += ' group by time([[$interval]])'; + query += ' group by time($interval)'; if (target.groupby_field) { query += ', ' + target.groupby_field; @@ -55,30 +55,11 @@ function () { var queryElements = query.split(" "); var lowerCaseQueryElements = query.toLowerCase().split(" "); - var whereIndex = lowerCaseQueryElements.indexOf("where"); - var groupByIndex = lowerCaseQueryElements.indexOf("group"); - var orderIndex = lowerCaseQueryElements.indexOf("order"); if (lowerCaseQueryElements[1].indexOf(',') !== -1) { this.groupByField = lowerCaseQueryElements[1].replace(',', ''); } - if (whereIndex !== -1) { - queryElements.splice(whereIndex + 1, 0, '[[$timeFilter]]', "and"); - } - else { - if (groupByIndex !== -1) { - queryElements.splice(groupByIndex, 0, "where", '[[$timeFilter]]'); - } - else if (orderIndex !== -1) { - queryElements.splice(orderIndex, 0, "where", '[[$timeFilter]]'); - } - else { - queryElements.push("where"); - queryElements.push('[[$timeFilter]]'); - } - } - return queryElements.join(" "); }; diff --git a/src/app/services/influxdb/influxdbDatasource.js b/src/app/services/influxdb/influxdbDatasource.js index d2a375521a5..b90476f6bf2 100644 --- a/src/app/services/influxdb/influxdbDatasource.js +++ b/src/app/services/influxdb/influxdbDatasource.js @@ -44,9 +44,11 @@ function (angular, _, kbn, InfluxSeries, InfluxQueryBuilder) { var queryBuilder = new InfluxQueryBuilder(target); var query = queryBuilder.build(); + // replace grafana variables + query = query.replace('$timeFilter', timeFilter); + query = query.replace('$interval', (target.interval || options.interval)); + // replace templated variables - templateSrv.setGrafanaVariable('$timeFilter', timeFilter); - templateSrv.setGrafanaVariable('$interval', (target.interval || options.interval)); query = templateSrv.replace(query); var alias = target.alias ? templateSrv.replace(target.alias) : ''; @@ -63,7 +65,8 @@ function (angular, _, kbn, InfluxSeries, InfluxQueryBuilder) { InfluxDatasource.prototype.annotationQuery = function(annotation, rangeUnparsed) { var timeFilter = getTimeFilter({ range: rangeUnparsed }); - var query = _.template(annotation.query, { timeFilter: timeFilter, "$timeFilter": timeFilter }, this.templateSettings); + var query = annotation.query.replace('$timeFilter', timeFilter); + query = templateSrv.replace(annotation.query); return this._seriesQuery(query).then(function(results) { return new InfluxSeries({ seriesList: results, annotation: annotation }).getAnnotations(); diff --git a/src/test/specs/influxQueryBuilder-specs.js b/src/test/specs/influxQueryBuilder-specs.js index 3003db956a0..4f18bf2905e 100644 --- a/src/test/specs/influxQueryBuilder-specs.js +++ b/src/test/specs/influxQueryBuilder-specs.js @@ -17,8 +17,8 @@ define([ var query = builder.build(); it('should generate correct query', function() { - expect(query).to.be('select code, mean(value) from "google.test" where [[$timeFilter]] and code=1 ' + - 'group by time([[$interval]]), code order asc'); + expect(query).to.be('select code, mean(value) from "google.test" where $timeFilter and code=1 ' + + 'group by time($interval), code order asc'); }); it('should expose groupByFiled', function() { @@ -38,32 +38,12 @@ define([ var query = builder.build(); it('should generate correct query', function() { - expect(query).to.be('select mean(value) from "google.test" where [[$timeFilter]] ' + - 'group by time([[$interval]]) fill(0) order asc'); + expect(query).to.be('select mean(value) from "google.test" where $timeFilter ' + + 'group by time($interval) fill(0) order asc'); }); }); - describe('old style raw query', function() { - var builder = new InfluxQueryBuilder({ - query: 'select host, mean(value) from asd.asd where time > now() - 1h group by time(1s), code order asc', - rawQuery: true - }); - - var query = builder.build(); - - it('should generate correct query', function() { - expect(query).to.be('select host, mean(value) from asd.asd where [[$timeFilter]] and time > now() - 1h ' + - 'group by time(1s), code order asc'); - }); - - it('should expose groupByFiled', function() { - expect(builder.groupByField).to.be('host'); - }); - - }); - - }); }); diff --git a/src/test/specs/influxdb-datasource-specs.js b/src/test/specs/influxdb-datasource-specs.js index f966c7345ca..ddf7db48282 100644 --- a/src/test/specs/influxdb-datasource-specs.js +++ b/src/test/specs/influxdb-datasource-specs.js @@ -50,10 +50,10 @@ define([ describe('When querying influxdb with one raw query', function() { var results; var urlExpected = "/series?p=mupp&q=select+value+from+series"+ - "+where+time+%3E+now()+-+1h+and+time+%3E+1&time_precision=s"; + "+where+time+%3E+now()+-+1h&time_precision=s"; var query = { range: { from: 'now-1h', to: 'now' }, - targets: [{ query: "select value from series where time > 1", rawQuery: true }] + targets: [{ query: "select value from series where $timeFilter", rawQuery: true }] }; var response = [];