From 372082771c76a824b556227f3155c93d3f0c3b30 Mon Sep 17 00:00:00 2001 From: wood chen Date: Fri, 18 Apr 2025 20:44:33 +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=E9=87=8D=E6=9E=84=E6=A0=B7=E5=BC=8F=E5=92=8C?= =?UTF-8?q?=E5=B8=83=E5=B1=80=EF=BC=8C=E5=A2=9E=E5=BC=BA=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E9=80=9F=E5=BA=A6=E6=98=BE=E7=A4=BA=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=E8=AF=A6=E7=BB=86=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=EF=BC=8C=E7=A7=BB=E9=99=A4=E4=B8=8D=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E7=9A=84=E4=BB=A3=E7=A0=81=EF=BC=8C=E6=8F=90=E5=8D=87?= =?UTF-8?q?=E5=8F=AF=E8=AF=BB=E6=80=A7=E5=92=8C=E7=BB=B4=E6=8A=A4=E6=80=A7?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ServerCard.tsx | 442 ++++++++++++++++------------------ 1 file changed, 211 insertions(+), 231 deletions(-) diff --git a/src/components/ServerCard.tsx b/src/components/ServerCard.tsx index eb33088..7e2994c 100644 --- a/src/components/ServerCard.tsx +++ b/src/components/ServerCard.tsx @@ -10,7 +10,7 @@ import { useNavigate } from "react-router-dom" import PlanInfo from "./PlanInfo" import BillingInfo from "./billingInfo" import { Badge } from "./ui/badge" -import { Card } from "./ui/card" +import { Card, CardContent, CardHeader, CardFooter } from "./ui/card" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./ui/tooltip" export default function ServerCard({ now, serverInfo }: { now: number; serverInfo: NezhaServer }) { @@ -47,15 +47,9 @@ export default function ServerCard({ now, serverInfo }: { now: number; serverInf } const showFlag = true - const customBackgroundImage = (window.CustomBackgroundImage as string) !== "" ? window.CustomBackgroundImage : undefined - // @ts-expect-error ShowNetTransfer is a global variable const showNetTransfer = window.ShowNetTransfer as boolean - - // @ts-expect-error FixedTopServerName is a global variable - const fixedTopServerName = window.FixedTopServerName as boolean - // @ts-expect-error ShowServerDetails is a global variable const showServerDetails = window.ShowServerDetails !== undefined ? window.ShowServerDetails as boolean : true @@ -70,259 +64,245 @@ export default function ServerCard({ now, serverInfo }: { now: number; serverInf } } - return online ? ( - - {/* 服务器名称和标识区域 */} -
{ + return speed >= 1024 + ? `${(speed / 1024).toFixed(2)}G/s` + : speed >= 1 + ? `${speed.toFixed(2)}M/s` + : `${(speed * 1024).toFixed(2)}K/s` + } + + if (!online) { + return ( + - -
- {showFlag ? : null} -
-
-

{name}

-
- {parsedData?.billingDataMod && } + +
+ + {showFlag && } +

{name}

-
-
- - {/* 计费信息移动端展示 */} -
- {parsedData?.billingDataMod && } -
- -
- {/* 系统和资源使用情况 */} -
- {fixedTopServerName && ( -
-
- {platform.includes("Windows") ? ( - - ) : ( -

- )} -

-
-

{t("serverCard.system")}

-
{platform.includes("Windows") ? "Windows" : GetOsName(platform)}
-
+ + {parsedData?.billingDataMod && ( +
+
)} - {/* CPU使用率 */} -
-

{"CPU"}

-
{cpu.toFixed(2)}%
- + {parsedData?.planDataMod && ( +
+ +
+ )} + + + ) + } + + return ( + + +
+ + {showFlag && } +

{name}

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

+ )} +

+ + {platform.includes("Windows") ? "Windows" : GetOsName(platform)} +
- {/* 内存使用率 */} -
-

{t("serverCard.mem")}

-
{mem.toFixed(2)}%
- -
- - {/* 存储使用率 */} -
-

{t("serverCard.stg")}

-
{stg.toFixed(2)}%
- -
- - {/* 上传速度 */} -
-

{t("serverCard.upload")}

-
- {up >= 1024 ? `${(up / 1024).toFixed(2)}G/s` : up >= 1 ? `${up.toFixed(2)}M/s` : `${(up * 1024).toFixed(2)}K/s`} + {/* 资源使用情况 */} +
+ {/* CPU使用率 */} +
+
+ CPU + {cpu.toFixed(0)}% +
+ +
+ + {/* 内存使用率 */} +
+
+ {t("serverCard.mem")} + {mem.toFixed(0)}% +
+ +
+ + {/* 存储使用率 */} +
+
+ {t("serverCard.stg")} + {stg.toFixed(0)}% +
+ +
+ + {/* 网络上传 */} +
+
+ {t("serverCard.upload")} + {formatSpeed(up)} +
+
+
+
+
+ + {/* 网络下载 */} +
+
+ {t("serverCard.download")} + {formatSpeed(down)} +
+
+
+
- - {/* 下载速度 */} -
-

{t("serverCard.download")}

-
- {down >= 1024 ? `${(down / 1024).toFixed(2)}G/s` : down >= 1 ? `${down.toFixed(2)}M/s` : `${(down * 1024).toFixed(2)}K/s`} -
-
-
+
{/* 服务器详细信息区域 */} {showServerDetails && ( -
- {/* 服务器配置信息 */} -
- {/* 运行时间 */} - {uptime > 0 && ( - - - - - {t("serverCard.uptime")}: {formatUptime(uptime, t)} - - - +
+ {/* 运行时间 */} + {uptime > 0 && ( + + + + {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] || "?"} - - - - {cpu_info.join(", ")} - - - - )} - - {/* 内存大小 */} - {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 && ( -
- -
+ + + + {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] || "?"} + + + + {cpu_info.join(", ")} + + + + )} + + {/* 内存大小 */} + {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)} -
- )} - -
- ) : ( - -
- -
- {showFlag ? : null} -
-
-

{name}

-
- {parsedData?.billingDataMod && }
-
-
-
- {parsedData?.billingDataMod && } -
- {parsedData?.planDataMod && } + )} +
) }