From 5de6d7f63aec6cc78a8b06ce7029fffcda0991e1 Mon Sep 17 00:00:00 2001
From: hamster1963 <1410514192@qq.com>
Date: Mon, 14 Oct 2024 18:02:37 +0800
Subject: [PATCH] fix: chart data
---
.../(main)/ClientComponents/NetworkChart.tsx | 100 +++++++++---------
1 file changed, 49 insertions(+), 51 deletions(-)
diff --git a/app/[locale]/(main)/ClientComponents/NetworkChart.tsx b/app/[locale]/(main)/ClientComponents/NetworkChart.tsx
index f20c09f..ec9a91d 100644
--- a/app/[locale]/(main)/ClientComponents/NetworkChart.tsx
+++ b/app/[locale]/(main)/ClientComponents/NetworkChart.tsx
@@ -64,57 +64,6 @@ export function NetworkChartClient({ server_id }: { server_id: number }) {
if (!data) return ;
- function transformData(data: NezhaAPIMonitor[]) {
- const monitorData: ServerMonitorChart = {};
-
- data.forEach((item) => {
- const monitorName = item.monitor_name;
-
- if (!monitorData[monitorName]) {
- monitorData[monitorName] = [];
- }
-
- for (let i = 0; i < item.created_at.length; i++) {
- monitorData[monitorName].push({
- created_at: item.created_at[i],
- avg_delay: item.avg_delay[i],
- });
- }
- });
-
- return monitorData;
- }
-
- const formatData = (rawData: NezhaAPIMonitor[]) => {
- const result: { [time: number]: ResultItem } = {};
-
- // 获取所有时间点
- const allTimes = new Set();
- rawData.forEach((item) => {
- item.created_at.forEach((time) => allTimes.add(time));
- });
-
- const allTimeArray = Array.from(allTimes).sort((a, b) => a - b);
-
- // 遍历所有时间点,补全每个监控服务的数据
- rawData.forEach((item) => {
- const { monitor_name, created_at, avg_delay } = item;
-
- // 初始化监控项在每个时间点的值
- allTimeArray.forEach((time) => {
- if (!result[time]) {
- result[time] = { created_at: time };
- }
-
- // 如果该时间点有数据,使用实际数据,否则补 null
- const timeIndex = created_at.indexOf(time);
- result[time][monitor_name] =
- timeIndex !== -1 ? avg_delay[timeIndex] : null;
- });
- });
-
- return Object.values(result).sort((a, b) => a.created_at - b.created_at);
- };
const transformedData = transformData(data);
@@ -285,3 +234,52 @@ export const NetworkChart = React.memo(function NetworkChart({
);
});
+
+
+const transformData = (data: NezhaAPIMonitor[]) => {
+ const monitorData: ServerMonitorChart = {};
+
+ data.forEach((item) => {
+ const monitorName = item.monitor_name;
+
+ if (!monitorData[monitorName]) {
+ monitorData[monitorName] = [];
+ }
+
+ for (let i = 0; i < item.created_at.length; i++) {
+ monitorData[monitorName].push({
+ created_at: item.created_at[i],
+ avg_delay: item.avg_delay[i],
+ });
+ }
+ });
+
+ return monitorData;
+}
+
+const formatData = (rawData: NezhaAPIMonitor[]) => {
+ const result: { [time: number]: ResultItem } = {};
+
+ const allTimes = new Set();
+ rawData.forEach((item) => {
+ item.created_at.forEach((time) => allTimes.add(time));
+ });
+
+ const allTimeArray = Array.from(allTimes).sort((a, b) => a - b);
+
+ rawData.forEach((item) => {
+ const { monitor_name, created_at, avg_delay } = item;
+
+ allTimeArray.forEach((time) => {
+ if (!result[time]) {
+ result[time] = { created_at: time };
+ }
+
+ const timeIndex = created_at.indexOf(time);
+ result[time][monitor_name] =
+ timeIndex !== -1 ? avg_delay[timeIndex] : null;
+ });
+ });
+
+ return Object.values(result).sort((a, b) => a.created_at - b.created_at);
+};
\ No newline at end of file