mirror of
https://github.com/woodchen-ink/nezha-dash-v1.git
synced 2025-07-18 17:41:56 +08:00
feat: inline card endDate info
This commit is contained in:
parent
91677dfd90
commit
32e308f4f7
@ -1,7 +1,12 @@
|
|||||||
import ServerFlag from "@/components/ServerFlag";
|
import ServerFlag from "@/components/ServerFlag";
|
||||||
import ServerUsageBar from "@/components/ServerUsageBar";
|
import ServerUsageBar from "@/components/ServerUsageBar";
|
||||||
|
|
||||||
import { cn, formatNezhaInfo } from "@/lib/utils";
|
import {
|
||||||
|
cn,
|
||||||
|
formatNezhaInfo,
|
||||||
|
getDaysBetweenDates,
|
||||||
|
parsePublicNote,
|
||||||
|
} from "@/lib/utils";
|
||||||
import { NezhaServer } from "@/types/nezha-api";
|
import { NezhaServer } from "@/types/nezha-api";
|
||||||
import { Card } from "./ui/card";
|
import { Card } from "./ui/card";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
@ -35,10 +40,27 @@ export default function ServerCardInline({
|
|||||||
uptime,
|
uptime,
|
||||||
net_in_transfer,
|
net_in_transfer,
|
||||||
net_out_transfer,
|
net_out_transfer,
|
||||||
|
public_note,
|
||||||
} = formatNezhaInfo(now, serverInfo);
|
} = formatNezhaInfo(now, serverInfo);
|
||||||
|
|
||||||
const showFlag = true;
|
const showFlag = 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().toISOString(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return online ? (
|
return online ? (
|
||||||
<section>
|
<section>
|
||||||
<Card
|
<Card
|
||||||
@ -60,7 +82,7 @@ export default function ServerCardInline({
|
|||||||
>
|
>
|
||||||
{showFlag ? <ServerFlag country_code={country_code} /> : null}
|
{showFlag ? <ServerFlag country_code={country_code} /> : null}
|
||||||
</div>
|
</div>
|
||||||
<div className="relative">
|
<div className="relative flex flex-col">
|
||||||
<p
|
<p
|
||||||
className={cn(
|
className={cn(
|
||||||
"break-all font-bold tracking-tight",
|
"break-all font-bold tracking-tight",
|
||||||
@ -69,6 +91,20 @@ export default function ServerCardInline({
|
|||||||
>
|
>
|
||||||
{name}
|
{name}
|
||||||
</p>
|
</p>
|
||||||
|
{parsedData &&
|
||||||
|
(daysLeft >= 0 ? (
|
||||||
|
<p className={cn("text-[10px] text-muted-foreground")}>
|
||||||
|
剩余时间: {isNeverExpire ? "永久" : daysLeft + "天"}
|
||||||
|
</p>
|
||||||
|
) : (
|
||||||
|
<p
|
||||||
|
className={cn(
|
||||||
|
"text-[10px] text-muted-foreground text-red-600",
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
已过期: {daysLeft * -1} 天
|
||||||
|
</p>
|
||||||
|
))}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<div className="flex flex-col gap-2">
|
<div className="flex flex-col gap-2">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user