gitscope
← marzneshin / v0.6.1 / dashboard/src/modules/users/components/widgets/user-nodes-usage-widget/hooks/use-transform-data.ts
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/users/components/widgets/user-nodes-usage-widget/hooks/use-transform-data.ts · TypeScript
Blame Raw
 1import { UserNodeUsagesResponse } from "@marzneshin/modules/users";
 2
 3export type ChartDataEntry = {
 4    datetime: string;
 5    [key: string]: number | string;
 6};
 7
 8export type ChartData = ChartDataEntry[];
 9
10export function useTransformData(initialData: UserNodeUsagesResponse): ChartData {
11    const chartData: ChartData = [];
12    const nodeDataMap: { [date: string]: ChartDataEntry } = {};
13
14    initialData.node_usages.forEach(node => {
15        node.usages.forEach(usageData => {
16            const [timestamp, usage] = usageData;
17            const date = new Date(timestamp * 1000);
18            const formattedDate = date.toISOString();
19
20            if (!nodeDataMap[formattedDate]) {
21                nodeDataMap[formattedDate] = { datetime: formattedDate };
22            }
23            nodeDataMap[formattedDate][node.node_name] = usage;
24        });
25    });
26
27    for (const date in nodeDataMap) {
28        chartData.push(nodeDataMap[date]);
29    }
30    return chartData;
31}