From 6d5052a0ffae7fe34ca153128487900c0bb2555c Mon Sep 17 00:00:00 2001 From: Shekar Siri Date: Mon, 5 Aug 2024 14:31:18 +0200 Subject: [PATCH] UI sum multiseries (#2467) * change(ui): click filter with selector options * feat(ui): som of multiseries --- frontend/app/mstore/types/widget.ts | 36 ++++++++++++++++++----------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/frontend/app/mstore/types/widget.ts b/frontend/app/mstore/types/widget.ts index 6949f5bfe..c6809b557 100644 --- a/frontend/app/mstore/types/widget.ts +++ b/frontend/app/mstore/types/widget.ts @@ -280,6 +280,15 @@ export default class Widget { return this.metricId !== undefined; } + calculateTotalSeries = (data: any): any => { + return data.map(entry => { + const total = Object.keys(entry) + .filter(key => key !== 'timestamp' && key !== 'time') + .reduce((sum, key) => sum + entry[key], 0); + return { ...entry, Total: total }; + }); + }; + setData(data: any, period: any) { const _data: any = {...data}; @@ -320,19 +329,20 @@ export default class Widget { return unique; }, []); } else { - _data['chart'] = getChartFormatter(period)(Array.isArray(data) ? data : []); - _data['namesMap'] = Array.isArray(data) - ? data - .map((i) => Object.keys(i)) - .flat() - .filter((i) => i !== 'time' && i !== 'timestamp') - .reduce((unique: any, item: any) => { - if (!unique.includes(item)) { - unique.push(item); - } - return unique; - }, []) - : []; + const updatedData: any = this.calculateTotalSeries(data); + _data['chart'] = getChartFormatter('period')(updatedData); + _data['namesMap'] = Array.isArray(updatedData) + ? updatedData + .map((i) => Object.keys(i)) + .flat() + .filter((i) => i !== 'time' && i !== 'timestamp') + .reduce((unique: string[], item: string) => { + if (!unique.includes(item)) { + unique.push(item); + } + return unique; + }, []) + : []; } }