fix alias variables with direct DB connection, closes #965
This commit is contained in:
@@ -123,22 +123,36 @@ export class ZabbixNotImplemented {
|
|||||||
*/
|
*/
|
||||||
function convertGrafanaTSResponse(time_series, items, addHostName) {
|
function convertGrafanaTSResponse(time_series, items, addHostName) {
|
||||||
//uniqBy is needed to deduplicate
|
//uniqBy is needed to deduplicate
|
||||||
var hosts = _.uniqBy(_.flatten(_.map(items, 'hosts')), 'hostid');
|
const hosts = _.uniqBy(_.flatten(_.map(items, 'hosts')), 'hostid');
|
||||||
let grafanaSeries = _.map(_.compact(time_series), series => {
|
let grafanaSeries = _.map(_.compact(time_series), series => {
|
||||||
let itemid = series.name;
|
const itemid = series.name;
|
||||||
var item = _.find(items, {'itemid': itemid});
|
const item = _.find(items, {'itemid': itemid});
|
||||||
var alias = item.name;
|
let alias = item.name;
|
||||||
//only when actual multi hosts selected
|
|
||||||
if (_.keys(hosts).length > 1 && addHostName) {
|
// Add scopedVars for using in alias functions
|
||||||
var host = _.find(hosts, {'hostid': item.hostid});
|
const scopedVars = {
|
||||||
alias = host.name + ": " + alias;
|
'__zbx_item': { value: item.name },
|
||||||
|
'__zbx_item_name': { value: item.name },
|
||||||
|
'__zbx_item_key': { value: item.key_ },
|
||||||
|
};
|
||||||
|
|
||||||
|
if (_.keys(hosts).length > 0) {
|
||||||
|
const host = _.find(hosts, {'hostid': item.hostid});
|
||||||
|
scopedVars['__zbx_host'] = { value: host.host };
|
||||||
|
scopedVars['__zbx_host_name'] = { value: host.name };
|
||||||
|
|
||||||
|
// Only add host when multiple hosts selected
|
||||||
|
if (_.keys(hosts).length > 1 && addHostName) {
|
||||||
|
alias = host.name + ": " + alias;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// CachingProxy deduplicates requests and returns one time series for equal queries.
|
// CachingProxy deduplicates requests and returns one time series for equal queries.
|
||||||
// Clone is needed to prevent changing of series object shared between all targets.
|
// Clone is needed to prevent changing of series object shared between all targets.
|
||||||
let datapoints = _.cloneDeep(series.points);
|
const datapoints = _.cloneDeep(series.points);
|
||||||
return {
|
return {
|
||||||
target: alias,
|
target: alias,
|
||||||
datapoints: datapoints
|
datapoints,
|
||||||
|
scopedVars,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user