Updated datasource.metricFindQuery() for working with cache.
This commit is contained in:
@@ -28,6 +28,133 @@ function (angular, _, utils) {
|
||||
}
|
||||
};
|
||||
|
||||
this.filterHosts = function(groupFilter) {
|
||||
var groups = [];
|
||||
var hosts = [];
|
||||
var groupList = self.cache.getGroups();
|
||||
|
||||
// Filter groups by regex
|
||||
if (utils.isRegex(groupFilter)) {
|
||||
var filterPattern = utils.buildRegex(groupFilter);
|
||||
groups = _.filter(groupList, function (groupObj) {
|
||||
return filterPattern.test(groupObj.name);
|
||||
});
|
||||
}
|
||||
// Find hosts in selected group
|
||||
else {
|
||||
var finded = _.find(groupList, {'name': groupFilter});
|
||||
if (finded) {
|
||||
groups.push(finded);
|
||||
} else {
|
||||
groups = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
if (groups) {
|
||||
var groupids = _.map(groups, 'groupid');
|
||||
hosts = _.filter(self.cache.getHosts(), function (hostObj) {
|
||||
return _.intersection(groupids, hostObj.groups).length;
|
||||
});
|
||||
}
|
||||
return hosts;
|
||||
};
|
||||
|
||||
this.filterApplications = function(hostFilter) {
|
||||
var hosts = [];
|
||||
var apps = [];
|
||||
var hostList = this.cache.getHosts();
|
||||
|
||||
// Filter hosts by regex
|
||||
if (utils.isRegex(hostFilter)) {
|
||||
var filterPattern = utils.buildRegex(hostFilter);
|
||||
hosts = _.filter(hostList, function (hostObj) {
|
||||
return filterPattern.test(hostObj.name);
|
||||
});
|
||||
}
|
||||
// Find applications in selected host
|
||||
else {
|
||||
var finded = _.find(hostList, {'name': hostFilter});
|
||||
if (finded) {
|
||||
hosts.push(finded);
|
||||
} else {
|
||||
hosts = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
if (hosts) {
|
||||
var hostsids = _.map(hosts, 'hostid');
|
||||
apps = _.filter(this.cache.getApplications(), function (appObj) {
|
||||
return _.intersection(hostsids, appObj.hosts).length;
|
||||
});
|
||||
}
|
||||
|
||||
return apps;
|
||||
};
|
||||
|
||||
this.filterItems = function (hostFilter, appFilter, showDisabledItems) {
|
||||
var hosts = [];
|
||||
var apps = [];
|
||||
var items = [];
|
||||
var hostList = this.cache.getHosts();
|
||||
var applicationList = this.cache.getApplications();
|
||||
|
||||
// Filter hosts by regex
|
||||
if (utils.isRegex(hostFilter)) {
|
||||
var hostFilterPattern = utils.buildRegex(hostFilter);
|
||||
hosts = _.filter(hostList, function (hostObj) {
|
||||
return hostFilterPattern.test(hostObj.name);
|
||||
});
|
||||
}
|
||||
else {
|
||||
var findedHosts = _.find(hostList, {'name': hostFilter});
|
||||
if (findedHosts) {
|
||||
hosts.push(findedHosts);
|
||||
} else {
|
||||
hosts = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
// Filter applications by regex
|
||||
if (utils.isRegex(appFilter)) {
|
||||
var filterPattern = utils.buildRegex(appFilter);
|
||||
apps = _.filter(applicationList, function (appObj) {
|
||||
return filterPattern.test(appObj.name);
|
||||
});
|
||||
}
|
||||
// Find items in selected application
|
||||
else if (appFilter) {
|
||||
var finded = _.find(applicationList, {'name': appFilter});
|
||||
if (finded) {
|
||||
apps.push(finded);
|
||||
} else {
|
||||
apps = undefined;
|
||||
}
|
||||
} else {
|
||||
apps = undefined;
|
||||
if (hosts) {
|
||||
items = _.filter(this.cache.getItems(), function (itemObj) {
|
||||
return _.find(hosts, {'hostid': itemObj.hostid });
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (apps) {
|
||||
var appids = _.flatten(_.map(apps, 'applicationids'));
|
||||
items = _.filter(this.cache.getItems(), function (itemObj) {
|
||||
return _.intersection(appids, itemObj.applications).length;
|
||||
});
|
||||
items = _.filter(items, function (itemObj) {
|
||||
return _.find(hosts, {'hostid': itemObj.hostid });
|
||||
});
|
||||
}
|
||||
|
||||
if (!showDisabledItems) {
|
||||
items = _.filter(items, {'status': '0'});
|
||||
}
|
||||
|
||||
return items;
|
||||
};
|
||||
|
||||
/**
|
||||
* Build query - convert target filters to array of Zabbix items
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user