import ServerFlag from "@/components/ServerFlag" import ServerUsageBar from "@/components/ServerUsageBar" import { formatBytes } from "@/lib/format" import { cn, formatNezhaInfo, getDaysBetweenDates, parsePublicNote } from "@/lib/utils" import { NezhaServer } from "@/types/nezha-api" import { useTranslation } from "react-i18next" import { useNavigate } from "react-router-dom" import { Badge } from "./ui/badge" import { Card } from "./ui/card" export default function ServerCard({ now, serverInfo }: { now: number; serverInfo: NezhaServer }) { const { t } = useTranslation() const navigate = useNavigate() const { name, country_code, online, cpu, up, down, mem, stg, net_in_transfer, net_out_transfer, public_note, } = formatNezhaInfo(now, serverInfo) const showFlag = true // @ts-expect-error ShowNetTransfer is a global variable const showNetTransfer = window.ShowNetTransfer === "true" const parsedData = parsePublicNote(public_note) let daysLeft = 0 let isNeverExpire = false if (parsedData?.billingDataMod?.endDate) { if (parsedData.billingDataMod.endDate.startsWith("0000-00-00")) { isNeverExpire = true } else { daysLeft = getDaysBetweenDates(parsedData.billingDataMod.endDate, new Date(now).toISOString()) } } return online ? ( navigate(`/server/${serverInfo.id}`)} >
{showFlag ? : null}

{name}

{parsedData?.billingDataMod && (daysLeft >= 0 ? ( <>

剩余时间: {isNeverExpire ? "永久" : daysLeft + "天"}

{parsedData.billingDataMod.amount !== "0" && parsedData.billingDataMod.amount !== "-1" ? (

价格: {parsedData.billingDataMod.amount}/{parsedData.billingDataMod.cycle}

) : parsedData.billingDataMod.amount === "0" ? (

免费

) : (

按量收费

)} ) : ( <>

已过期: {daysLeft * -1} 天

{parsedData.billingDataMod.amount !== "0" && parsedData.billingDataMod.amount !== "-1" ? (

价格: {parsedData.billingDataMod.amount}/{parsedData.billingDataMod.cycle}

) : parsedData.billingDataMod.amount === "0" ? (

免费

) : (

按量收费

)} ))} {parsedData?.planDataMod && (
{parsedData.planDataMod.bandwidth !== "" && (

{parsedData.planDataMod.bandwidth}

)} {parsedData.planDataMod.trafficVol !== "" && (

{parsedData.planDataMod.trafficVol}

)}
)}

{"CPU"}

{cpu.toFixed(2)}%

{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`}

{t("serverCard.download")}

{down >= 1024 ? `${(down / 1024).toFixed(2)}G/s` : down >= 1 ? `${down.toFixed(2)}M/s` : `${(down * 1024).toFixed(2)}K/s`}
{showNetTransfer && (
{t("serverCard.upload")}:{formatBytes(net_out_transfer)} {t("serverCard.download")}:{formatBytes(net_in_transfer)}
)}
) : ( navigate(`/server/${serverInfo.id}`, { replace: true })} >
{showFlag ? : null}

{name}

{parsedData?.billingDataMod && (daysLeft >= 0 ? ( <>

剩余时间: {isNeverExpire ? "永久" : daysLeft + "天"}

{parsedData.billingDataMod.amount !== "0" && parsedData.billingDataMod.amount !== "-1" ? (

价格: {parsedData.billingDataMod.amount}/{parsedData.billingDataMod.cycle}

) : parsedData.billingDataMod.amount === "0" ? (

免费

) : (

按量收费

)} ) : ( <>

已过期: {daysLeft * -1} 天

{parsedData.billingDataMod.amount !== "0" && parsedData.billingDataMod.amount !== "-1" ? (

价格: {parsedData.billingDataMod.amount}/{parsedData.billingDataMod.cycle}

) : parsedData.billingDataMod.amount === "0" ? (

免费

) : (

按量收费

)} ))} {parsedData?.planDataMod && (
{parsedData.planDataMod.bandwidth !== "" && (

{parsedData.planDataMod.bandwidth}

)} {parsedData.planDataMod.trafficVol !== "" && (

{parsedData.planDataMod.trafficVol}

)}
)}
) }