"use client" import AnimatedCircularProgressBar from "@/components/ui/animated-circular-progress-bar"; import { Card, CardContent } from "@/components/ui/card"; import useSWR from "swr"; import { NezhaAPISafe } from "../../types/nezha-api"; import { formatRelativeTime, formatTime, nezhaFetcher } from "@/lib/utils"; import getEnv from "@/lib/env-entry"; import { ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent } from "@/components/ui/chart"; import { Area, AreaChart, CartesianGrid, XAxis, YAxis } from "recharts"; import { useEffect, useState } from "react"; type cpuChartData = { timeStamp: string; cpu: number; } export default function ServerDetailChartClient({ server_id, }: { server_id: number; }) { const { data, error } = useSWR( `/api/detail?server_id=${server_id}`, nezhaFetcher, { refreshInterval: Number(getEnv("NEXT_PUBLIC_NezhaFetchInterval")) || 5000, }, ); const [chartData, setChartData] = useState([] as cpuChartData[]); useEffect(() => { if (data) { const timestamp = Date.now().toString(); const newData = [ ...chartData, { timeStamp: timestamp, cpu: data.status.CPU }, ]; if (newData.length > 30) { newData.shift(); } setChartData(newData); } }, [data]); if (error) { return ( <>

{error.message}

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

); } if (!data) return null; const chartConfig = { cpu: { label: "CPU", }, } satisfies ChartConfig return (

CPU

{data?.status.CPU.toFixed(0)}%

formatRelativeTime(value)} /> `${value}%`} /> {/* { return formatTime(Number(payload[0].payload.timeStamp)); }} />} /> */}
) }