mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Batch all influxdb 0.9 queries (per panel) in one request, #1525
This commit is contained in:
parent
3f167d7fd1
commit
906e70e599
@ -34,32 +34,39 @@ function (angular, _, kbn, InfluxSeries, InfluxQueryBuilder) {
|
|||||||
|
|
||||||
InfluxDatasource.prototype.query = function(options) {
|
InfluxDatasource.prototype.query = function(options) {
|
||||||
var timeFilter = getTimeFilter(options);
|
var timeFilter = getTimeFilter(options);
|
||||||
|
var i, y;
|
||||||
|
|
||||||
var promises = _.map(options.targets, function(target) {
|
var allQueries = _.map(options.targets, function(target) {
|
||||||
if (target.hide) {
|
if (target.hide) { return []; }
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
// build query
|
// build query
|
||||||
var queryBuilder = new InfluxQueryBuilder(target);
|
var queryBuilder = new InfluxQueryBuilder(target);
|
||||||
var query = queryBuilder.build();
|
var query = queryBuilder.build();
|
||||||
|
|
||||||
// replace grafana variables
|
|
||||||
query = query.replace('$timeFilter', timeFilter);
|
|
||||||
query = query.replace(/\$interval/g, (target.interval || options.interval));
|
query = query.replace(/\$interval/g, (target.interval || options.interval));
|
||||||
|
return query;
|
||||||
|
|
||||||
// replace templated variables
|
}).join("\n");
|
||||||
query = templateSrv.replace(query, options.scopedVars);
|
|
||||||
|
|
||||||
var alias = target.alias ? templateSrv.replace(target.alias, options.scopedVars) : '';
|
// replace grafana variables
|
||||||
|
allQueries = allQueries.replace(/\$timeFilter/g, timeFilter);
|
||||||
|
|
||||||
var handleResponse = _.partial(handleInfluxQueryResponse, alias);
|
// replace templated variables
|
||||||
return this._seriesQuery(query).then(handleResponse);
|
allQueries = templateSrv.replace(allQueries, options.scopedVars);
|
||||||
|
return this._seriesQuery(allQueries).then(function(data) {
|
||||||
|
if (!data || !data.results || !data.results[0].series) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
}, this);
|
var seriesList = [];
|
||||||
|
for (i = 0; i < data.results.length; i++) {
|
||||||
|
var alias = (options.targets[i] || {}).alias;
|
||||||
|
var targetSeries = new InfluxSeries({ series: data.results[i].series, alias: alias }).getTimeSeries();
|
||||||
|
for (y = 0; y < targetSeries.length; y++) {
|
||||||
|
seriesList.push(targetSeries[y]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $q.all(promises).then(function(results) {
|
return { data: seriesList };
|
||||||
return { data: _.flatten(results) };
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -176,13 +183,6 @@ function (angular, _, kbn, InfluxSeries, InfluxQueryBuilder) {
|
|||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
function handleInfluxQueryResponse(alias, data) {
|
|
||||||
if (!data || !data.results || !data.results[0].series) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
return new InfluxSeries({ series: data.results[0].series, alias: alias }).getTimeSeries();
|
|
||||||
}
|
|
||||||
|
|
||||||
function getTimeFilter(options) {
|
function getTimeFilter(options) {
|
||||||
var from = getInfluxTime(options.range.from);
|
var from = getInfluxTime(options.range.from);
|
||||||
var until = getInfluxTime(options.range.to);
|
var until = getInfluxTime(options.range.to);
|
||||||
|
Loading…
Reference in New Issue
Block a user