diff --git a/app/[locale]/(main)/ClientComponents/ServerDetailChartClient.tsx b/app/[locale]/(main)/ClientComponents/ServerDetailChartClient.tsx index 01d49ff..dad5f6e 100644 --- a/app/[locale]/(main)/ClientComponents/ServerDetailChartClient.tsx +++ b/app/[locale]/(main)/ClientComponents/ServerDetailChartClient.tsx @@ -2,19 +2,10 @@ import AnimatedCircularProgressBar from "@/components/ui/animated-circular-progress-bar"; import { Card, CardContent } from "@/components/ui/card"; -import { - ChartConfig, - ChartContainer, - ChartTooltip, - ChartTooltipContent, -} from "@/components/ui/chart"; +import { ChartConfig, ChartContainer } from "@/components/ui/chart"; import getEnv from "@/lib/env-entry"; -import { - formatNezhaInfo, - formatRelativeTime, - formatTime, - nezhaFetcher, -} from "@/lib/utils"; +import { formatNezhaInfo, formatRelativeTime, nezhaFetcher } from "@/lib/utils"; +import { useTranslations } from "next-intl"; import { useEffect, useState } from "react"; import { Area, @@ -67,6 +58,8 @@ export default function ServerDetailChartClient({ }: { server_id: number; }) { + const t = useTranslations("ServerDetailChartClient"); + const { data, error } = useSWR( `/api/detail?server_id=${server_id}`, nezhaFetcher, @@ -81,8 +74,7 @@ export default function ServerDetailChartClient({

{error.message}

- {/* {t("chart_fetch_error_message")} */} - fetch_error_message + {t("chart_fetch_error_message")}

@@ -191,6 +183,8 @@ function CpuChart({ data }: { data: NezhaAPISafe }) { } function ProcessChart({ data }: { data: NezhaAPISafe }) { + const t = useTranslations("ServerDetailChartClient"); + const [processChartData, setProcessChartData] = useState( [] as processChartData[], ); @@ -222,7 +216,7 @@ function ProcessChart({ data }: { data: NezhaAPISafe }) {
-

Process

+

{t("Process")}

{process}

@@ -273,6 +267,8 @@ function ProcessChart({ data }: { data: NezhaAPISafe }) { } function MemChart({ data }: { data: NezhaAPISafe }) { + const t = useTranslations("ServerDetailChartClient"); + const [memChartData, setMemChartData] = useState([] as memChartData[]); const { mem, swap } = formatNezhaInfo(data); @@ -307,7 +303,7 @@ function MemChart({ data }: { data: NezhaAPISafe }) {
-

Mem

+

{t("Mem")}

-

Swap

+

{t("Swap")}

+
-

Disk

+

{t("Disk")}

{disk.toFixed(0)}% @@ -478,6 +476,8 @@ function DiskChart({ data }: { data: NezhaAPISafe }) { } function NetworkChart({ data }: { data: NezhaAPISafe }) { + const t = useTranslations("ServerDetailChartClient"); + const [networkChartData, setNetworkChartData] = useState( [] as networkChartData[], ); @@ -520,14 +520,16 @@ function NetworkChart({ data }: { data: NezhaAPISafe }) {

-

Upload

+

{t("Upload")}

{up.toFixed(2)} M/s

-

Download

+

+ {t("Download")} +

{down.toFixed(2)} M/s

@@ -624,7 +626,7 @@ function ConnectChart({ data }: { data: NezhaAPISafe }) { } satisfies ChartConfig; return ( - +
diff --git a/app/[locale]/(main)/ClientComponents/ServerDetailClient.tsx b/app/[locale]/(main)/ClientComponents/ServerDetailClient.tsx index 315bfc0..718f814 100644 --- a/app/[locale]/(main)/ClientComponents/ServerDetailClient.tsx +++ b/app/[locale]/(main)/ClientComponents/ServerDetailClient.tsx @@ -6,15 +6,18 @@ import { Badge } from "@/components/ui/badge"; import { Card, CardContent } from "@/components/ui/card"; import getEnv from "@/lib/env-entry"; import { cn, formatBytes, nezhaFetcher } from "@/lib/utils"; -import { useLocale } from "next-intl"; +import { useLocale, useTranslations } from "next-intl"; import { useRouter } from "next/navigation"; import useSWR from "swr"; +import ServerDetailLoading from "./ServerDetailLoading"; + export default function ServerDetailClient({ server_id, }: { server_id: number; }) { + const t = useTranslations("ServerDetailClient"); const router = useRouter(); const locale = useLocale(); const { data, error } = useSWR( @@ -24,20 +27,22 @@ export default function ServerDetailClient({ refreshInterval: Number(getEnv("NEXT_PUBLIC_NezhaFetchInterval")) || 5000, }, ); + if (error) { return ( <>

{error.message}

- {/* {t("chart_fetch_error_message")} */} - fetch_error_message + {t("detail_fetch_error_message")}

); } - if (!data) return null; + + if (!data) return ; + return (
-

Status

+

{t("status")}

- {data?.online_status ? "Online" : "Offline"} + {data?.online_status ? t("Online") : t("Offline")}
@@ -71,10 +76,10 @@ export default function ServerDetailClient({
-

Uptime

+

{t("Uptime")}

{" "} - {(data?.status.Uptime / 86400).toFixed(0)} Days{" "} + {(data?.status.Uptime / 86400).toFixed(0)} {t("Days")}{" "}
@@ -82,7 +87,7 @@ export default function ServerDetailClient({
-

Version

+

{t("Version")}

{data?.host.Version || "Unknown"}
@@ -90,7 +95,7 @@ export default function ServerDetailClient({
-

Arch

+

{t("Arch")}

{data?.host.Arch || "Unknown"}
@@ -98,7 +103,7 @@ export default function ServerDetailClient({
-

Mem

+

{t("Mem")}

{formatBytes(data?.host.MemTotal)}
@@ -106,7 +111,7 @@ export default function ServerDetailClient({
-

Disk

+

{t("Disk")}

{formatBytes(data?.host.DiskTotal)}
@@ -116,7 +121,7 @@ export default function ServerDetailClient({
-

System

+

{t("System")}

{data?.host.Platform ? (
{" "} @@ -132,7 +137,7 @@ export default function ServerDetailClient({
-

CPU

+

{t("CPU")}

{data?.host.CPU ? (
{data?.host.CPU}
) : ( diff --git a/app/[locale]/(main)/ClientComponents/ServerDetailLoading.tsx b/app/[locale]/(main)/ClientComponents/ServerDetailLoading.tsx new file mode 100644 index 0000000..2dc538b --- /dev/null +++ b/app/[locale]/(main)/ClientComponents/ServerDetailLoading.tsx @@ -0,0 +1,33 @@ +import { BackIcon } from "@/components/Icon"; +import { Separator } from "@/components/ui/separator"; +import { Skeleton } from "@/components/ui/skeleton"; +import { useLocale } from "next-intl"; +import { useRouter } from "next/navigation"; + +export default function ServerDetailLoading() { + const router = useRouter(); + const locale = useLocale(); + return ( +
+
{ + router.push(`/${locale}/`); + }} + className="flex flex-none cursor-pointer font-semibold leading-none items-center break-all tracking-tight gap-0.5 text-xl" + > + + +
+ + +
+ + + + + + +
+
+ ); +} diff --git a/components/ServerCard.tsx b/components/ServerCard.tsx index bcf133e..0e15ebf 100644 --- a/components/ServerCard.tsx +++ b/components/ServerCard.tsx @@ -60,7 +60,6 @@ export default function ServerCard({ > {name}

-
{ diff --git a/messages/en.json b/messages/en.json index 3d09ae7..56e6d7d 100644 --- a/messages/en.json +++ b/messages/en.json @@ -35,6 +35,29 @@ "NetworkChart": { "ServerMonitorCount": "Services" }, + "ServerDetailClient": { + "detail_fetch_error_message": "Please check your environment variables and review the server console", + "status": "Status", + "Online": "Online", + "Offline": "Offline", + "Uptime": "Uptime", + "Days": "Days", + "Version": "Version", + "Arch": "Arch", + "Mem": "Mem", + "Disk": "Disk", + "System": "System", + "CPU": "CPU" + }, + "ServerDetailChartClient": { + "chart_fetch_error_message": "Please check your environment variables and review the server console", + "Process": "Process", + "Disk": "Disk", + "Mem": "Mem", + "Swap": "Swap", + "Upload": "Upload", + "Download": "Download" + }, "ThemeSwitcher": { "Light": "Light", "Dark": "Dark", diff --git a/messages/ja.json b/messages/ja.json index e308748..3f24abc 100644 --- a/messages/ja.json +++ b/messages/ja.json @@ -35,6 +35,29 @@ "NetworkChart": { "ServerMonitorCount": "サービス" }, + "ServerDetailClient": { + "detail_fetch_error_message": "環境変数を確認し、サーバーコンソールを確認してください", + "status": "ステータス", + "Online": "オンライン", + "Offline": "オフライン", + "Uptime": "稼働時間", + "Days": "日", + "Version": "バージョン", + "Arch": "アーキテクチャ", + "Mem": "メモリ", + "Disk": "ディスク", + "System": "システム", + "CPU": "CPU" + }, + "ServerDetailChartClient": { + "chart_fetch_error_message": "環境変数を確認し、サーバーコンソールを確認してください", + "Process": "進捗状況", + "Disk": "ディスク", + "Mem": "メモリ", + "Swap": "スワップ", + "Upload": "アップロード", + "Download": "ダウンロード" + }, "ThemeSwitcher": { "Light": "ライト", "Dark": "ダーク", diff --git a/messages/zh-t.json b/messages/zh-t.json index 9efe44c..50e43f6 100644 --- a/messages/zh-t.json +++ b/messages/zh-t.json @@ -35,6 +35,29 @@ "NetworkChart": { "ServerMonitorCount": "個監測服務" }, + "ServerDetailClient": { + "detail_fetch_error_message": "獲取伺服器詳情失敗,請檢查您的環境變數並檢查伺服器控制台", + "status": "狀態", + "Online": "在線", + "Offline": "離線", + "Uptime": "稼働時間", + "Days": "天", + "Version": "版本", + "Arch": "架構", + "Mem": "記憶體", + "Disk": "磁碟", + "System": "系統", + "CPU": "CPU" + }, + "ServerDetailChartClient": { + "chart_fetch_error_message": "獲取伺服器詳情失敗,請檢查您的環境變數並檢查伺服器控制台", + "Process": "進程", + "Disk": "磁碟", + "Mem": "記憶體", + "Swap": "虛擬記憶體", + "Upload": "上傳", + "Download": "下載" + }, "ThemeSwitcher": { "Light": "亮色", "Dark": "暗色", diff --git a/messages/zh.json b/messages/zh.json index c573923..2c770f5 100644 --- a/messages/zh.json +++ b/messages/zh.json @@ -35,6 +35,29 @@ "NetworkChart": { "ServerMonitorCount": "个监控服务" }, + "ServerDetailClient": { + "detail_fetch_error_message": "获取服务器详情失败,请检查您的环境变量并检查服务器控制台", + "status": "状态", + "Online": "在线", + "Offline": "离线", + "Uptime": "运行时间", + "Days": "天", + "Version": "版本", + "Arch": "架构", + "Mem": "内存", + "Disk": "磁盘", + "System": "系统", + "CPU": "CPU" + }, + "ServerDetailChartClient": { + "chart_fetch_error_message": "获取服务器详情失败,请检查您的环境变量并检查服务器控制台", + "Process": "进程", + "Disk": "磁盘", + "Mem": "内存", + "Swap": "虚拟内存", + "Upload": "上传", + "Download": "下载" + }, "ThemeSwitcher": { "Light": "亮色", "Dark": "暗色",