From 5c556175856c358ea0eb6f4e49bfdf6c6afd5317 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Wed, 23 Sep 2015 09:17:37 +0200 Subject: [PATCH] refactor: polishing OpenTSDB related PR #1646, added caching of aggregators request so only one call is made --- .../app/plugins/datasource/opentsdb/datasource.js | 13 ++++++++----- public/app/plugins/datasource/opentsdb/queryCtrl.js | 10 ++++------ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/public/app/plugins/datasource/opentsdb/datasource.js b/public/app/plugins/datasource/opentsdb/datasource.js index fb969551195..124c6597a00 100644 --- a/public/app/plugins/datasource/opentsdb/datasource.js +++ b/public/app/plugins/datasource/opentsdb/datasource.js @@ -175,14 +175,17 @@ function (angular, _, dateMath) { }); }; - OpenTSDBDatasource.prototype.performAggregatorsQuery = function() { - return this._get('/api/aggregators', {}).then(function(result) { - if (result.data instanceof Array) { + var aggregatorsPromise = null; + OpenTSDBDatasource.prototype.getAggregators = function() { + if (aggregatorsPromise) { return aggregatorsPromise; } + + aggregatorsPromise = this._get('/api/aggregators').then(function(result) { + if (result.data && _.isArray(result.data)) { return result.data.sort(); - } else { - return result.data; } + return []; }); + return aggregatorsPromise; }; function transformMetricData(md, groupByTags, target, options) { diff --git a/public/app/plugins/datasource/opentsdb/queryCtrl.js b/public/app/plugins/datasource/opentsdb/queryCtrl.js index ed5b842d259..d5aa3db58ae 100644 --- a/public/app/plugins/datasource/opentsdb/queryCtrl.js +++ b/public/app/plugins/datasource/opentsdb/queryCtrl.js @@ -14,12 +14,6 @@ function (angular, _, kbn) { $scope.target.errors = validateTarget($scope.target); $scope.aggregators = ['avg', 'sum', 'min', 'max', 'dev', 'zimsum', 'mimmin', 'mimmax']; - $scope.datasource.performAggregatorsQuery().then(function(result) { - if (result) { - $scope.aggregators = result; - } - }); - if (!$scope.target.aggregator) { $scope.target.aggregator = 'sum'; } @@ -27,6 +21,10 @@ function (angular, _, kbn) { if (!$scope.target.downsampleAggregator) { $scope.target.downsampleAggregator = 'avg'; } + + $scope.datasource.getAggregators().then(function(aggs) { + $scope.aggregators = aggs; + }); }; $scope.targetBlur = function() {