From 3f0c2ed39d1015890fcf5c4232c53b8946177155 Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Sat, 30 Nov 2024 22:26:13 +0800 Subject: [PATCH] feat: net transfer badge --- src/components/GroupSwitch.tsx | 4 +--- src/components/ServerCard.tsx | 16 ++++++++++++++++ src/components/ServerDetailChart.tsx | 22 +++++++++++----------- src/components/ServerDetailOverview.tsx | 8 ++++++-- src/components/ServerOverview.tsx | 3 ++- src/lib/format.ts | 16 +++++++++++++--- src/lib/utils.ts | 24 +----------------------- src/pages/Server.tsx | 16 +++++++++++----- 8 files changed, 61 insertions(+), 48 deletions(-) diff --git a/src/components/GroupSwitch.tsx b/src/components/GroupSwitch.tsx index 7a3f73d..6baf7d0 100644 --- a/src/components/GroupSwitch.tsx +++ b/src/components/GroupSwitch.tsx @@ -11,9 +11,7 @@ export default function GroupSwitch({ setCurrentTab: (tab: string) => void; }) { return ( -
+
{tabs.map((tab: string) => (
+
+ + {t("Upload")}:{formatBytes(serverInfo.state.net_out_transfer)} + + + {t("Download")}:{formatBytes(serverInfo.state.net_in_transfer)} + +
diff --git a/src/components/ServerDetailChart.tsx b/src/components/ServerDetailChart.tsx index 2f55604..942d15e 100644 --- a/src/components/ServerDetailChart.tsx +++ b/src/components/ServerDetailChart.tsx @@ -87,10 +87,10 @@ export default function ServerDetailChart({ ); } -function CpuChart({ now,data }: { now: number;data: NezhaServer }) { +function CpuChart({ now, data }: { now: number; data: NezhaServer }) { const [cpuChartData, setCpuChartData] = useState([] as cpuChartData[]); - const { cpu } = formatNezhaInfo(now,data); + const { cpu } = formatNezhaInfo(now, data); useEffect(() => { if (data) { @@ -189,7 +189,7 @@ function ProcessChart({ now, data }: { now: number; data: NezhaServer }) { [] as processChartData[], ); - const { process } = formatNezhaInfo(now,data); + const { process } = formatNezhaInfo(now, data); useEffect(() => { if (data) { @@ -276,11 +276,11 @@ function ProcessChart({ now, data }: { now: number; data: NezhaServer }) { ); } -function MemChart({ now,data }: { now: number;data: NezhaServer }) { +function MemChart({ now, data }: { now: number; data: NezhaServer }) { const { t } = useTranslation(); const [memChartData, setMemChartData] = useState([] as memChartData[]); - const { mem, swap } = formatNezhaInfo(now,data); + const { mem, swap } = formatNezhaInfo(now, data); useEffect(() => { if (data) { @@ -406,11 +406,11 @@ function MemChart({ now,data }: { now: number;data: NezhaServer }) { ); } -function DiskChart({ now,data }: { now: number;data: NezhaServer }) { +function DiskChart({ now, data }: { now: number; data: NezhaServer }) { const { t } = useTranslation(); const [diskChartData, setDiskChartData] = useState([] as diskChartData[]); - const { disk } = formatNezhaInfo(now,data); + const { disk } = formatNezhaInfo(now, data); useEffect(() => { if (data) { @@ -503,13 +503,13 @@ function DiskChart({ now,data }: { now: number;data: NezhaServer }) { ); } -function NetworkChart({ now,data }: { now: number;data: NezhaServer }) { +function NetworkChart({ now, data }: { now: number; data: NezhaServer }) { const { t } = useTranslation(); const [networkChartData, setNetworkChartData] = useState( [] as networkChartData[], ); - const { up, down } = formatNezhaInfo(now,data); + const { up, down } = formatNezhaInfo(now, data); useEffect(() => { if (data) { @@ -632,12 +632,12 @@ function NetworkChart({ now,data }: { now: number;data: NezhaServer }) { ); } -function ConnectChart({ now,data }: { now: number;data: NezhaServer }) { +function ConnectChart({ now, data }: { now: number; data: NezhaServer }) { const [connectChartData, setConnectChartData] = useState( [] as connectChartData[], ); - const { tcp, udp } = formatNezhaInfo(now,data); + const { tcp, udp } = formatNezhaInfo(now, data); useEffect(() => { if (data) { diff --git a/src/components/ServerDetailOverview.tsx b/src/components/ServerDetailOverview.tsx index 6512b19..83f1b2e 100644 --- a/src/components/ServerDetailOverview.tsx +++ b/src/components/ServerDetailOverview.tsx @@ -4,10 +4,11 @@ import ServerFlag from "@/components/ServerFlag"; import { Badge } from "@/components/ui/badge"; import { Card, CardContent } from "@/components/ui/card"; import { useWebSocketContext } from "@/hooks/use-websocket-context"; -import { cn, formatBytes, formatNezhaInfo } from "@/lib/utils"; +import { cn, formatNezhaInfo } from "@/lib/utils"; import { NezhaWebsocketResponse } from "@/types/nezha-api"; import { useNavigate } from "react-router-dom"; import { useTranslation } from "react-i18next"; +import { formatBytes } from "@/lib/format"; export default function ServerDetailOverview({ server_id, @@ -37,7 +38,10 @@ export default function ServerDetailOverview({ return ; } - const { name, online, uptime, version } = formatNezhaInfo(nezhaWsData.now,server); + const { name, online, uptime, version } = formatNezhaInfo( + nezhaWsData.now, + server, + ); return (
diff --git a/src/components/ServerOverview.tsx b/src/components/ServerOverview.tsx index 35e4b53..dd6b0c1 100644 --- a/src/components/ServerOverview.tsx +++ b/src/components/ServerOverview.tsx @@ -1,6 +1,7 @@ import { Card, CardContent } from "@/components/ui/card"; -import { cn, formatBytes } from "@/lib/utils"; +import { cn } from "@/lib/utils"; import { useTranslation } from "react-i18next"; +import { formatBytes } from "@/lib/format"; type ServerOverviewProps = { online: number; diff --git a/src/lib/format.ts b/src/lib/format.ts index 47a3b4e..b4d0d45 100644 --- a/src/lib/format.ts +++ b/src/lib/format.ts @@ -1,9 +1,19 @@ -export function formatBytes(bytes: number, decimals = 2): string { - if (bytes === 0) return "0 B"; +export function formatBytes(bytes: number, decimals: number = 2) { + if (!+bytes) return "0 Bytes"; const k = 1024; const dm = decimals < 0 ? 0 : decimals; - const sizes = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; + const sizes = [ + "Bytes", + "KiB", + "MiB", + "GiB", + "TiB", + "PiB", + "EiB", + "ZiB", + "YiB", + ]; const i = Math.floor(Math.log(bytes) / Math.log(k)); diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 8414980..0257c1b 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -6,7 +6,7 @@ export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); } -export function formatNezhaInfo(now: number,serverInfo: NezhaServer) { +export function formatNezhaInfo(now: number, serverInfo: NezhaServer) { const lastActiveTime = parseISOTimestamp(serverInfo.last_active); return { ...serverInfo, @@ -27,28 +27,6 @@ export function formatNezhaInfo(now: number,serverInfo: NezhaServer) { }; } -export function formatBytes(bytes: number, decimals: number = 2) { - if (!+bytes) return "0 Bytes"; - - const k = 1024; - const dm = decimals < 0 ? 0 : decimals; - const sizes = [ - "Bytes", - "KiB", - "MiB", - "GiB", - "TiB", - "PiB", - "EiB", - "ZiB", - "YiB", - ]; - - const i = Math.floor(Math.log(bytes) / Math.log(k)); - - return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`; -} - export function getDaysBetweenDates(date1: string, date2: string): number { const oneDay = 24 * 60 * 60 * 1000; // 一天的毫秒数 const firstDate = new Date(date1); diff --git a/src/pages/Server.tsx b/src/pages/Server.tsx index 86f7ba3..9330f22 100644 --- a/src/pages/Server.tsx +++ b/src/pages/Server.tsx @@ -57,11 +57,13 @@ export default function Servers() { const totalServers = nezhaWsData?.servers?.length || 0; const onlineServers = - nezhaWsData?.servers?.filter((server) => formatNezhaInfo(nezhaWsData.now,server).online) - ?.length || 0; + nezhaWsData?.servers?.filter( + (server) => formatNezhaInfo(nezhaWsData.now, server).online, + )?.length || 0; const offlineServers = - nezhaWsData?.servers?.filter((server) => !formatNezhaInfo(nezhaWsData.now,server).online) - ?.length || 0; + nezhaWsData?.servers?.filter( + (server) => !formatNezhaInfo(nezhaWsData.now, server).online, + )?.length || 0; const up = nezhaWsData?.servers?.reduce( (total, server) => total + server.state.net_out_transfer, @@ -112,7 +114,11 @@ export default function Servers() { {showServices && }
{filteredServers.map((serverInfo) => ( - + ))}