Commit 510a2119 by Torkel Ödegaard

feat(influxdb): support for policy selection in query editor, closes #2018

parent 3b5a5839
......@@ -3,6 +3,7 @@
### New Features ###
* **Playlists**: Playlists can now be persisted and started from urls, closes [#3655](https://github.com/grafana/grafana/pull/3655)
* **Metadata**: Settings panel now shows dashboard metadata, closes [#3304](https://github.com/grafana/grafana/issues/3304)
* **InfluxDB**: Support for policy selection in query editor, closes [#2018](https://github.com/grafana/grafana/issues/2018)
### Breaking changes
**Plugin API**: Both datasource and panel plugin api (and plugin.json schema) as been updated, requiring a minor update to plugins. See [plugin api](https://github.com/grafana/grafana/blob/master/public/app/plugins/plugin_api.md) for more info.
......
......@@ -117,14 +117,15 @@ function (angular, _, dateMath, InfluxSeries, InfluxQuery) {
if (!influxResults.series) {
return [];
}
var series = influxResults.series[0];
if (query.indexOf('SHOW MEASUREMENTS') === 0) {
return _.map(series.values, function(value) { return { text: value[0], expandable: true }; });
}
var flattenedValues = _.flatten(series.values);
return _.map(flattenedValues, function(value) { return { text: value, expandable: true }; });
var series = influxResults.series[0];
return _.map(series.values, function(value) {
if (_.isArray(value)) {
return { text: value[0] };
} else {
return { text: value };
}
});
});
};
......
......@@ -150,6 +150,23 @@ export default class InfluxQuery {
return str + '"' + tag.key + '" ' + operator + ' ' + value;
}
getMeasurementAndPolicy() {
var policy = this.target.policy
var measurement = this.target.measurement;
if (!measurement.match('^/.*/')) {
measurement = '"' + measurement+ '"';
}
if (policy !== 'default') {
policy = '"' + this.target.policy + '".';
} else {
policy = "";
}
return policy + measurement;
}
render() {
var target = this.target;
......@@ -177,12 +194,7 @@ export default class InfluxQuery {
query += selectText;
}
var measurement = target.measurement;
if (!measurement.match('^/.*/') && !measurement.match(/^merge\(.*\)/)) {
measurement = '"' + measurement+ '"';
}
query += ' FROM ' + measurement + ' WHERE ';
query += ' FROM ' + this.getMeasurementAndPolicy() + ' WHERE ';
var conditions = _.map(target.tags, (tag, index) => {
return this.renderTagCondition(tag, index);
});
......
......@@ -15,6 +15,18 @@ describe('InfluxQuery', function() {
});
});
describe('render series with policy only', function() {
it('should generate correct query', function() {
var query = new InfluxQuery({
measurement: 'cpu',
policy: '5m_avg'
});
var queryText = query.render();
expect(queryText).to.be('SELECT mean("value") FROM "5m_avg"."cpu" WHERE $timeFilter GROUP BY time($interval) fill(null)');
});
});
describe('render series with math and alias', function() {
it('should generate correct query', function() {
var query = new InfluxQuery({
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment