Build query in asynchronous manner (fixed getting data at first load).

This commit is contained in:
Alexander Zobnin
2016-01-28 19:12:08 +03:00
parent 76630587d3
commit 79842184bc
3 changed files with 77 additions and 62 deletions

View File

@@ -122,8 +122,9 @@ function (angular, _, dateMath, utils, metricFunctions) {
// Query numeric data
if (!target.mode || target.mode === 0) {
var items = self.queryProcessor.build(groupFilter, hostFilter, appFilter, itemFilter);
// Build query in asynchronous manner
return self.queryProcessor.build(groupFilter, hostFilter, appFilter, itemFilter)
.then(function(items) {
// Add hostname for items from multiple hosts
var addHostName = target.host.isRegex;
@@ -188,6 +189,7 @@ function (angular, _, dateMath, utils, metricFunctions) {
}
return timeseries_data;
});
});
}
// Query text data

View File

@@ -57,7 +57,7 @@ define([
zabbixCache.refresh().then(function () {
$scope.getMetricsFromCache();
$scope.initFilters();
console.log("From server", $scope.metric);
//console.log("From server", $scope.metric);
});
}

View File

@@ -8,7 +8,7 @@ function (angular, _, utils) {
var module = angular.module('grafana.services');
module.factory('QueryProcessor', function() {
module.factory('QueryProcessor', function($q) {
function QueryProcessor(zabbixCacheInstance) {
var self = this;
@@ -16,9 +16,22 @@ function (angular, _, utils) {
this.cache = zabbixCacheInstance;
/**
* Build query - convert target filters to array of Zabbix items
* Build query in asynchronous manner
*/
this.build = function (groupFilter, hostFilter, appFilter, itemFilter) {
if (this.cache._initialized) {
return $q.when(self.buildFromCache(groupFilter, hostFilter, appFilter, itemFilter));
} else {
return this.cache.refresh().then(function() {
return self.buildFromCache(groupFilter, hostFilter, appFilter, itemFilter);
});
}
};
/**
* Build query - convert target filters to array of Zabbix items
*/
this.buildFromCache = function (groupFilter, hostFilter, appFilter, itemFilter) {
// Find items by item names and perform queries
var groups = [];