From 48dbf85bcab3f6552509425da38e224fea61ed30 Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Sat, 1 Feb 2025 19:39:23 +0800 Subject: [PATCH] refactor: improve CycleTransferStats and ServiceTracker UI components --- src/components/CycleTransferStats.tsx | 2 +- src/components/CycleTransferStatsClient.tsx | 71 ++++++++++----------- src/components/ServiceTracker.tsx | 2 +- src/components/ServiceTrackerClient.tsx | 33 ++++------ 4 files changed, 47 insertions(+), 61 deletions(-) diff --git a/src/components/CycleTransferStats.tsx b/src/components/CycleTransferStats.tsx index 814fafb..a1ad817 100644 --- a/src/components/CycleTransferStats.tsx +++ b/src/components/CycleTransferStats.tsx @@ -17,7 +17,7 @@ export const CycleTransferStatsCard: React.FC = ({ serv const serverIdList = serverList.map((server) => server.id.toString()) return ( -
+
{Object.entries(cycleStats).map(([cycleId, cycleData]) => { if (!cycleData.server_name) { return null diff --git a/src/components/CycleTransferStatsClient.tsx b/src/components/CycleTransferStatsClient.tsx index 85419ca..476186f 100644 --- a/src/components/CycleTransferStatsClient.tsx +++ b/src/components/CycleTransferStatsClient.tsx @@ -1,11 +1,8 @@ import { formatBytes } from "@/lib/format" import { cn } from "@/lib/utils" -import { CircleStackIcon } from "@heroicons/react/24/outline" import React from "react" import { useTranslation } from "react-i18next" -import AnimatedCircularProgressBar from "./ui/animated-circular-progress-bar" - interface CycleTransferStatsClientProps { name: string from: string @@ -26,7 +23,7 @@ export const CycleTransferStatsClient: React.FC = return (
= const progress = (transfer / max) * 100 return ( -
-
-
{name}
- - {new Date(from).toLocaleDateString()} - {new Date(to).toLocaleDateString()} - -
- -
-
- - {serverName} -
-
-

{progress.toFixed(0)}%

- -
-
- -
-
+
+ {/* Header */} +
+ {serverName} +
{name}
-
- - {formatBytes(transfer)} {t("cycleTransfer.used")} - - - {formatBytes(max)} {t("cycleTransfer.total")} - -
- -
-
- {t("cycleTransfer.nextUpdate")}: {new Date(nextUpdate).toLocaleString()} + {/* Progress Section */} +
+
+
+ {formatBytes(transfer)} + / {formatBytes(max)} +
+ {progress.toFixed(1)}%
-
+ +
+
+
+
+
+ + {/* Footer */} +
+ + {new Date(from).toLocaleDateString()} - {new Date(to).toLocaleDateString()} + + + {t("cycleTransfer.nextUpdate")}: {new Date(nextUpdate).toLocaleString()} + +
) })} diff --git a/src/components/ServiceTracker.tsx b/src/components/ServiceTracker.tsx index a49a4d5..2d96695 100644 --- a/src/components/ServiceTracker.tsx +++ b/src/components/ServiceTracker.tsx @@ -26,7 +26,7 @@ export function ServiceTracker({ serverList }: { serverList: NezhaServer[] }) { completed: up > serviceData.down[index], date: new Date(Date.now() - (29 - index) * 24 * 60 * 60 * 1000), uptime: dailyUptime, - delay: serviceData.delay[index] || 0 + delay: serviceData.delay[index] || 0, } }) diff --git a/src/components/ServiceTrackerClient.tsx b/src/components/ServiceTrackerClient.tsx index 47e2fde..b18afaf 100644 --- a/src/components/ServiceTrackerClient.tsx +++ b/src/components/ServiceTrackerClient.tsx @@ -1,12 +1,8 @@ +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip" import { cn } from "@/lib/utils" import React from "react" import { useTranslation } from "react-i18next" -import { - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger, -} from "@/components/ui/tooltip" + import { Separator } from "./ui/separator" interface ServiceTrackerProps { @@ -60,17 +56,9 @@ export const ServiceTrackerClient: React.FC = ({ days, clas {title}
- - {avgDelay.toFixed(0)}ms - + {avgDelay.toFixed(0)}ms - + {uptime.toFixed(1)}% {t("serviceTracker.uptime")}
@@ -88,7 +76,7 @@ export const ServiceTrackerClient: React.FC = ({ days, clas "after:absolute after:inset-0 after:rounded-[4px] after:shadow-[inset_0_1px_theme(colors.white/10%)]", day.completed ? "bg-gradient-to-b from-green-500/90 to-green-600 shadow-[0_1px_2px_theme(colors.green.600/30%)]" - : "bg-gradient-to-b from-red-500/80 to-red-600/90 shadow-[0_1px_2px_theme(colors.red.600/30%)]" + : "bg-gradient-to-b from-red-500/80 to-red-600/90 shadow-[0_1px_2px_theme(colors.red.600/30%)]", )} /> @@ -98,13 +86,16 @@ export const ServiceTrackerClient: React.FC = ({ days, clas
{t("serviceTracker.uptime")}: - 95 ? "text-green-500" : "text-red-500")}> - {day.uptime.toFixed(1)}% - + 95 ? "text-green-500" : "text-red-500")}>{day.uptime.toFixed(1)}%
{t("serviceTracker.delay")}: - + {day.delay.toFixed(0)}ms