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) {
|
||||
var timeFilter = getTimeFilter(options);
|
||||
var i, y;
|
||||
|
||||
var promises = _.map(options.targets, function(target) {
|
||||
if (target.hide) {
|
||||
return [];
|
||||
}
|
||||
var allQueries = _.map(options.targets, function(target) {
|
||||
if (target.hide) { return []; }
|
||||
|
||||
// build query
|
||||
var queryBuilder = new InfluxQueryBuilder(target);
|
||||
var query = queryBuilder.build();
|
||||
|
||||
// replace grafana variables
|
||||
query = query.replace('$timeFilter', timeFilter);
|
||||
var query = queryBuilder.build();
|
||||
query = query.replace(/\$interval/g, (target.interval || options.interval));
|
||||
return query;
|
||||
|
||||
// replace templated variables
|
||||
query = templateSrv.replace(query, options.scopedVars);
|
||||
}).join("\n");
|
||||
|
||||
var alias = target.alias ? templateSrv.replace(target.alias, options.scopedVars) : '';
|
||||
// replace grafana variables
|
||||
allQueries = allQueries.replace(/\$timeFilter/g, timeFilter);
|
||||
|
||||
var handleResponse = _.partial(handleInfluxQueryResponse, alias);
|
||||
return this._seriesQuery(query).then(handleResponse);
|
||||
// replace templated variables
|
||||
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: _.flatten(results) };
|
||||
return { data: seriesList };
|
||||
});
|
||||
};
|
||||
|
||||
@ -176,13 +183,6 @@ function (angular, _, kbn, InfluxSeries, InfluxQueryBuilder) {
|
||||
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) {
|
||||
var from = getInfluxTime(options.range.from);
|
||||
var until = getInfluxTime(options.range.to);
|
||||
|
Loading…
Reference in New Issue
Block a user