diff --git a/plugins/datasource-zabbix/datasource.js b/plugins/datasource-zabbix/datasource.js index 03e93e9..1cd35ad 100644 --- a/plugins/datasource-zabbix/datasource.js +++ b/plugins/datasource-zabbix/datasource.js @@ -294,11 +294,11 @@ function (angular, _, dateMath, utils, metricFunctions) { // Get items if (parts.length === 4) { - //var items = this.queryProcessor.filterItems(template.host, template.app, true); - return this.queryProcessor.filterItems(template.group, template.host, template.app, true) - .then(function(items) { - return _.map(items, formatMetric); - }); + return this.queryProcessor.filterItems(template.group, template.host, + template.app, 'all', true) + .then(function(items) { + return _.map(items, formatMetric); + }); } // Get applications else if (parts.length === 3) { diff --git a/plugins/datasource-zabbix/queryCtrl.js b/plugins/datasource-zabbix/queryCtrl.js index 8aea25f..56d5401 100644 --- a/plugins/datasource-zabbix/queryCtrl.js +++ b/plugins/datasource-zabbix/queryCtrl.js @@ -17,9 +17,10 @@ define([ $scope.init = function () { $scope.targetLetters = targetLetters; - if (!$scope.metric) { - $scope.metric = {}; - } + var scopeDefaults = { + metric: {} + }; + _.defaults($scope, scopeDefaults); // Load default values var targetDefaults = { @@ -51,10 +52,7 @@ define([ $scope.target.downsampleFunction = $scope.downsampleFunctionList[0]; } - // Load metrics from cache - $scope.getMetricsFromCache().then(function() { - $scope.initFilters(); - }); + $scope.initFilters(); } else if ($scope.target.mode === 1) { $scope.slaPropertyList = [ @@ -70,29 +68,12 @@ define([ }; $scope.initFilters = function () { + $scope.filterGroups(); $scope.filterHosts(); $scope.filterApplications(); $scope.filterItems(); }; - $scope.getMetricsFromCache = function() { - var item_type = $scope.editorModes[$scope.target.mode]; - var promises = [ - zabbixCache.getGroups(), - zabbixCache.getHosts(), - zabbixCache.getApplications(), - zabbixCache.getItems(item_type) - ]; - return $q.all(promises).then(function(results) { - $scope.metric = { - groupList: results[0], - hostList: results[1], - applicationList: results[2], - itemList: results[3] - }; - }); - }; - // Get list of metric names for bs-typeahead directive function getMetricNames(scope, metricList) { return _.uniq(_.map(scope.metric[metricList], 'name')); @@ -111,6 +92,12 @@ define([ }); }; + $scope.filterGroups = function() { + $scope.datasource.queryProcessor.filterGroups().then(function(groups) { + $scope.metric.groupList = groups; + }); + }; + $scope.filterApplications = function () { var groupFilter = templateSrv.replace($scope.target.group.filter); var hostFilter = templateSrv.replace($scope.target.host.filter); @@ -121,11 +108,12 @@ define([ }; $scope.filterItems = function () { + var item_type = $scope.editorModes[$scope.target.mode]; var groupFilter = templateSrv.replace($scope.target.group.filter); var hostFilter = templateSrv.replace($scope.target.host.filter); var appFilter = templateSrv.replace($scope.target.application.filter); $scope.datasource.queryProcessor.filterItems(groupFilter, hostFilter, appFilter, - $scope.target.showDisabledItems).then(function(items) { + item_type, $scope.target.showDisabledItems).then(function(items) { $scope.metric.filteredItems = items; }); }; diff --git a/plugins/datasource-zabbix/queryProcessor.js b/plugins/datasource-zabbix/queryProcessor.js index fc54ae0..d28e2f4 100644 --- a/plugins/datasource-zabbix/queryProcessor.js +++ b/plugins/datasource-zabbix/queryProcessor.js @@ -28,6 +28,12 @@ function (angular, _, utils) { } }; + this.filterGroups = function(groupFilter) { + return self.cache.getGroups().then(function(groupList) { + return groupList; + }); + }; + this.filterHosts = function(groupFilter) { var groups = []; var hosts = []; @@ -103,7 +109,7 @@ function (angular, _, utils) { }); }; - this.filterItems = function (groupFilter, hostFilter, appFilter, showDisabledItems) { + this.filterItems = function (groupFilter, hostFilter, appFilter, itemType, showDisabledItems) { var hosts = []; var apps = []; var items = []; @@ -111,7 +117,7 @@ function (angular, _, utils) { var promises = [ this.filterHosts(groupFilter), this.filterApplications(groupFilter, hostFilter), - this.cache.getItems(), + this.cache.getItems(itemType), ]; return $q.all(promises).then(function(results) {