From 06f2e04ba8655731ad2c0296fc45fd3506af1029 Mon Sep 17 00:00:00 2001 From: wood chen Date: Tue, 29 Apr 2025 02:34:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20ServerCard=20=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=88=86=E7=BB=84=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E7=9A=84=E6=98=BE=E7=A4=BA=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B8=83=E5=B1=80=E4=BB=A5=E6=8F=90=E5=8D=87?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=B1=95=E7=A4=BA=E7=9A=84=E6=B8=85=E6=99=B0?= =?UTF-8?q?=E5=BA=A6=E5=92=8C=E5=8F=AF=E8=AF=BB=E6=80=A7=E3=80=82=E5=90=8C?= =?UTF-8?q?=E6=97=B6=E5=9C=A8=20Server=20=E9=A1=B5=E9=9D=A2=E4=B8=AD?= =?UTF-8?q?=E6=9F=A5=E6=89=BE=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=89=80=E5=B1=9E?= =?UTF-8?q?=E7=9A=84=E5=88=86=E7=BB=84=E5=B9=B6=E4=BC=A0=E9=80=92=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E4=BF=A1=E6=81=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ServerCard.tsx | 39 +++++++++++++++++++++-------------- src/pages/Server.tsx | 24 ++++++++++++++------- 2 files changed, 40 insertions(+), 23 deletions(-) diff --git a/src/components/ServerCard.tsx b/src/components/ServerCard.tsx index 6bb7520..7f736fe 100644 --- a/src/components/ServerCard.tsx +++ b/src/components/ServerCard.tsx @@ -11,7 +11,7 @@ import PlanInfo from "./PlanInfo" import BillingInfo from "./billingInfo" import { Card, CardContent, CardHeader, CardFooter } from "./ui/card" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./ui/tooltip" -import { ArrowDown, ArrowUp, Clock, Cpu, HardDrive, Server, Activity, BarChart3, Calendar } from "lucide-react" +import { ArrowDown, ArrowUp, Clock, Cpu, HardDrive, Server, Activity, BarChart3 } from "lucide-react" interface ServerCardProps { now: number; @@ -19,9 +19,10 @@ interface ServerCardProps { cycleStats?: { [key: string]: CycleTransferData }; + groupName?: string; } -export default function ServerCard({ now, serverInfo, cycleStats }: ServerCardProps) { +export default function ServerCard({ now, serverInfo, cycleStats, groupName }: ServerCardProps) { const { t } = useTranslation() const navigate = useNavigate() const { @@ -44,7 +45,6 @@ export default function ServerCard({ now, serverInfo, cycleStats }: ServerCardPr udp, process, uptime, - last_active_time_string, arch, swap, swap_total @@ -201,7 +201,17 @@ export default function ServerCard({ now, serverInfo, cycleStats }: ServerCardPr onClick={cardClick} >
- + + {/* 离线卡片的分组标签 */} + {groupName && ( +
+
+ {groupName} +
+
+ )} + +
{showFlag && } @@ -272,14 +282,20 @@ export default function ServerCard({ now, serverInfo, cycleStats }: ServerCardPr )} onClick={cardClick} > + {/* 左侧状态条 */}
- +
{showFlag && }

{name}

+ {groupName && ( +
+ {groupName} +
+ )}
@@ -308,13 +324,6 @@ export default function ServerCard({ now, serverInfo, cycleStats }: ServerCardPr {formatUptime(uptime, t)}
)} - - {last_active_time_string && ( -
- - {last_active_time_string} -
- )}
@@ -434,8 +443,8 @@ export default function ServerCard({ now, serverInfo, cycleStats }: ServerCardPr
90 ? "bg-red-500/10 text-red-600 dark:text-red-400" : - Number(swap) > 70 ? "bg-orange-500/10 text-orange-600 dark:text-orange-400" : "")}> + Number(swap) > 90 ? "bg-red-500/10 text-red-600 dark:text-red-400" : + Number(swap) > 70 ? "bg-orange-500/10 text-orange-600 dark:text-orange-400" : "")}> SWAP:{swap.toFixed(0)}%
@@ -453,7 +462,7 @@ export default function ServerCard({ now, serverInfo, cycleStats }: ServerCardPr
- ):( + ) : (
-
diff --git a/src/pages/Server.tsx b/src/pages/Server.tsx index 1a393aa..1a04f9f 100644 --- a/src/pages/Server.tsx +++ b/src/pages/Server.tsx @@ -335,14 +335,22 @@ export default function Servers() { {showMap === "1" && } {showServices === "1" && }
- {filteredServers.map((serverInfo) => ( - - ))} + {filteredServers.map((serverInfo) => { + // 查找服务器所属的分组 + const serverGroup = groupData?.data?.find( + (g: ServerGroup) => Array.isArray(g.servers) && g.servers.includes(serverInfo.id) + ); + + return ( + + ); + })}
)