diff --git a/src/components/ServerCard.tsx b/src/components/ServerCard.tsx index 7e2994c..e973f76 100644 --- a/src/components/ServerCard.tsx +++ b/src/components/ServerCard.tsx @@ -12,6 +12,7 @@ import BillingInfo from "./billingInfo" import { Badge } from "./ui/badge" import { Card, CardContent, CardHeader, CardFooter } from "./ui/card" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./ui/tooltip" +import { ArrowDown, ArrowUp, Clock, Cpu, HardDrive, Server, Activity } from "lucide-react" export default function ServerCard({ now, serverInfo }: { now: number; serverInfo: NezhaServer }) { const { t } = useTranslation() @@ -73,33 +74,43 @@ export default function ServerCard({ now, serverInfo }: { now: number; serverInf : `${(speed * 1024).toFixed(2)}K/s` } + // 获取颜色等级 + const getColorClass = (value: number) => { + if (value > 90) return "text-red-500" + if (value > 70) return "text-orange-400" + return "text-green-500" + } + if (!online) { return ( +
- + {showFlag && }

{name}

- {parsedData?.billingDataMod && ( -
- -
- )} - - {parsedData?.planDataMod && ( -
- -
- )} +
+ {parsedData?.billingDataMod && ( +
+ +
+ )} + + {parsedData?.planDataMod && ( +
+ +
+ )} +
) @@ -108,126 +119,155 @@ export default function ServerCard({ now, serverInfo }: { now: number; serverInf return ( +
+ -
- - {showFlag && } -

{name}

-
- - {parsedData?.billingDataMod && ( -
- -
- )} -
- - - {/* 系统信息和资源使用情况 */} -
- {/* 系统信息 */} -
-
- {platform.includes("Windows") ? ( - - ) : ( -

- )} -

- - {platform.includes("Windows") ? "Windows" : GetOsName(platform)} - +
+
+ + {showFlag && } +

{name}

- {/* 资源使用情况 */} -
- {/* CPU使用率 */} -
-
- CPU - {cpu.toFixed(0)}% -
- +
+
+ {platform.includes("Windows") ? ( + + ) : ( + + )} + {platform.includes("Windows") ? "Windows" : GetOsName(platform)}
- - {/* 内存使用率 */} -
-
- {t("serverCard.mem")} - {mem.toFixed(0)}% -
- +
+
+ +
+ {parsedData?.billingDataMod && ( +
+
- - {/* 存储使用率 */} -
-
- {t("serverCard.stg")} - {stg.toFixed(0)}% -
- + )} + + {uptime > 0 && ( +
+ + {formatUptime(uptime, t)}
- - {/* 网络上传 */} -
-
- {t("serverCard.upload")} - {formatSpeed(up)} -
-
-
+ )} +
+ + + + {/* 主要资源使用情况 - 全新设计 */} +
+ {/* CPU使用率 */} +
+
+
+ + CPU
+ + {cpu.toFixed(0)}% +
- - {/* 网络下载 */} -
-
- {t("serverCard.download")} - {formatSpeed(down)} -
-
-
+ +
+ + {/* 内存使用率 */} +
+
+
+
+ + + + + + + +
+ {t("serverCard.mem")}
+ + {mem.toFixed(0)}% +
+ +
+ + {/* 存储使用率 */} +
+
+
+ + {t("serverCard.stg")} +
+ + {stg.toFixed(0)}% + +
+ +
+
+ + {/* 网络使用情况 */} +
+ {/* 网络速率 */} +
+
+
+ + {t("serverCard.upload")} +
+ {formatSpeed(up)} +
+
+
+ + {t("serverCard.download")} +
+ {formatSpeed(down)} +
+
+ + {/* 连接数与进程数 */} +
+ {tcp > 0 && ( +
+ + TCP: {tcp} +
+ )} + {udp > 0 && ( +
+ + UDP: {udp} +
+ )} + {process > 0 && ( +
+ + {t("serverDetailChart.process")}: {process} +
+ )}
{/* 服务器详细信息区域 */} {showServerDetails && ( -
- {/* 运行时间 */} - {uptime > 0 && ( - - - - - {t("serverCard.uptime")}: {formatUptime(uptime, t)} - - - - {t("serverCard.uptime")}: {formatUptime(uptime, t)} - - - - )} - +
{/* CPU信息 */} {cpu_info && cpu_info.length > 0 && ( - + {cpu_info[0].includes("Physical") ? "pCPU: " : "vCPU: "} {cpu_info[0].match(/(\d+)\s+(?:Physical|Virtual)\s+Core/)?.[1] || "?"} @@ -241,68 +281,63 @@ export default function ServerCard({ now, serverInfo }: { now: number; serverInf {/* 内存大小 */} {mem_total > 0 && ( - + {t("serverCard.mem")}: {formatBytes(mem_total)} )} {/* 存储大小 */} {disk_total > 0 && ( - + {t("serverCard.stg")}: {formatBytes(disk_total)} )} - - {/* TCP连接数 */} - {tcp > 0 && ( - - TCP: {tcp} - - )} - - {/* UDP连接数 */} - {udp > 0 && ( - - UDP: {udp} - - )} - - {/* 进程数 */} - {process > 0 && ( - - {t("serverDetailChart.process")}: {process} - - )}
)} - + {/* 套餐信息 */} {parsedData?.planDataMod && ( -
+
)} {/* 网络传输信息 */} {showNetTransfer && ( -
- - {t("serverCard.upload")}: {formatBytes(net_out_transfer)} - - - {t("serverCard.download")}: {formatBytes(net_in_transfer)} - +
+
+
+ + {t("serverCard.upload")} +
+ {formatBytes(net_out_transfer)} +
+
+
+ + {t("serverCard.download")} +
+ {formatBytes(net_in_transfer)} +
)} + + {/* 视觉元素:左侧状态条 */} + ) }