← marzneshin
/
v0.6.0
/
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}