import React from "react"; import { Cpu } from "lucide-react"; import { useTranslation } from "react-i18next"; import type { ServerMetrics } from "@/ui/main-axios.ts"; import { RechartsPrimitive } from "@/components/ui/chart.tsx"; const { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, } = RechartsPrimitive; interface CpuWidgetProps { metrics: ServerMetrics | null; metricsHistory: ServerMetrics[]; } export function CpuWidget({ metrics, metricsHistory }: CpuWidgetProps) { const { t } = useTranslation(); const chartData = React.useMemo(() => { return metricsHistory.map((m, index) => ({ index, cpu: m.cpu?.percent || 0, })); }, [metricsHistory]); return (

{t("serverStats.cpuUsage")}

{typeof metrics?.cpu?.percent === "number" ? `${metrics.cpu.percent}%` : "N/A"}
{typeof metrics?.cpu?.cores === "number" ? t("serverStats.cpuCores", { count: metrics.cpu.cores }) : t("serverStats.naCpus")}
{metrics?.cpu?.load ? t("serverStats.loadAverage", { avg1: metrics.cpu.load[0].toFixed(2), avg5: metrics.cpu.load[1].toFixed(2), avg15: metrics.cpu.load[2].toFixed(2), }) : t("serverStats.loadAverageNA")}
[`${value.toFixed(1)}%`, "CPU"]} />
); }