Fix using units from Zabbix, #1321
This commit is contained in:
@@ -129,6 +129,7 @@ func seriesToDataFrame(series *timeseries.TimeSeriesData, valuemaps []zabbix.Val
|
|||||||
valueField.Config = &data.FieldConfig{
|
valueField.Config = &data.FieldConfig{
|
||||||
Custom: map[string]interface{}{
|
Custom: map[string]interface{}{
|
||||||
"scopedVars": scopedVars,
|
"scopedVars": scopedVars,
|
||||||
|
"units": item.Units,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -188,6 +188,7 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
|
|||||||
const resp = toDataQueryResponse(rsp);
|
const resp = toDataQueryResponse(rsp);
|
||||||
this.sortByRefId(resp);
|
this.sortByRefId(resp);
|
||||||
this.applyFrontendFunctions(resp, request);
|
this.applyFrontendFunctions(resp, request);
|
||||||
|
responseHandler.convertZabbixUnits(resp);
|
||||||
if (responseHandler.isConvertibleToWide(resp.data)) {
|
if (responseHandler.isConvertibleToWide(resp.data)) {
|
||||||
console.log('Converting response to the wide format');
|
console.log('Converting response to the wide format');
|
||||||
resp.data = responseHandler.convertToWide(resp.data);
|
resp.data = responseHandler.convertToWide(resp.data);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import {
|
|||||||
DataFrame,
|
DataFrame,
|
||||||
dataFrameFromJSON,
|
dataFrameFromJSON,
|
||||||
DataFrameJSON,
|
DataFrameJSON,
|
||||||
|
DataQueryResponse,
|
||||||
Field,
|
Field,
|
||||||
FieldType,
|
FieldType,
|
||||||
getTimeField,
|
getTimeField,
|
||||||
@@ -210,6 +211,28 @@ export function dataResponseToTimeSeries(response: DataFrameJSON[], items, reque
|
|||||||
return series;
|
return series;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get units from Zabbix
|
||||||
|
export function convertZabbixUnits(response: DataQueryResponse) {
|
||||||
|
for (let i = 0; i < response.data.length; i++) {
|
||||||
|
const frame: DataFrame = response.data[i];
|
||||||
|
for (const field of frame.fields) {
|
||||||
|
const zabbixUnits = field.config.custom?.units;
|
||||||
|
if (zabbixUnits) {
|
||||||
|
const unit = utils.convertZabbixUnit(zabbixUnits);
|
||||||
|
if (unit) {
|
||||||
|
field.config.unit = unit;
|
||||||
|
|
||||||
|
if (unit === 'percent') {
|
||||||
|
field.config.min = 0;
|
||||||
|
field.config.max = 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
export function itServiceResponseToTimeSeries(response: any, interval) {
|
export function itServiceResponseToTimeSeries(response: any, interval) {
|
||||||
const series = [];
|
const series = [];
|
||||||
if (response.length === 0) {
|
if (response.length === 0) {
|
||||||
@@ -569,4 +592,5 @@ export default {
|
|||||||
isConvertibleToWide,
|
isConvertibleToWide,
|
||||||
convertToWide,
|
convertToWide,
|
||||||
alignFrames,
|
alignFrames,
|
||||||
|
convertZabbixUnits,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user