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