Apply data processing for the IT Service query on the backend

This commit is contained in:
Alexander Zobnin
2021-08-05 17:59:58 +03:00
parent 6c1722d2ef
commit 62f38df28a
2 changed files with 82 additions and 96 deletions

View File

@@ -153,6 +153,7 @@ export function seriesToDataFrame(timeseries, target: ZabbixMetricsQuery, valueM
return mutableFrame;
}
// Converts DataResponse to the format which backend works with (for data processing)
export function dataResponseToTimeSeries(response: DataFrameJSON[], items) {
const series = [];
if (response.length === 0) {
@@ -198,6 +199,44 @@ export function dataResponseToTimeSeries(response: DataFrameJSON[], items) {
return series;
}
export function itServiceResponseToTimeSeries(response: any, interval) {
const series = [];
if (response.length === 0) {
return [];
}
for (const s of response) {
const ts = [];
if (!s.datapoints) {
continue;
}
const dp = s.datapoints;
for (let i = 0; i < dp.length; i++) {
ts.push({ time: dp[i][1] / 1000, value: dp[i][0] });
}
let intervalS = utils.parseItemInterval(interval);
if (intervalS === 0) {
intervalS = null;
}
const timeSeriesData = {
ts: ts,
meta: {
name: s.target,
interval: intervalS,
item: {},
}
};
series.push(timeSeriesData);
}
return series;
}
export function isConvertibleToWide(data: DataFrame[]): boolean {
if (!data || data.length < 2) {
return false;
@@ -499,6 +538,7 @@ export default {
sortTimeseries,
seriesToDataFrame,
dataResponseToTimeSeries,
itServiceResponseToTimeSeries,
isConvertibleToWide,
convertToWide,
alignFrames,