'use client'; import { Area, AreaChart, CartesianGrid, Line, XAxis, YAxis } from 'recharts'; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from '@/components/ui/card'; import { ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartTooltip, ChartTooltipContent, } from '@/components/ui/chart'; import type { CapacityTrendPoint } from '@/lib/services/openflare'; import { formatPercent, formatTrendHour } from './dashboard-utils'; const chartConfig = { cpu: { label: '平均 CPU', color: 'hsl(var(--chart-2))', }, memory: { label: '平均内存', color: 'hsl(var(--chart-3))', }, } satisfies ChartConfig; export function CapacityTrendChart({ points }: { points: CapacityTrendPoint[] }) { const data = points.map((point) => ({ hour: formatTrendHour(point.bucket_started_at), cpu: point.average_cpu_usage_percent, memory: point.average_memory_usage_percent, })); if (data.length === 0) { return ( 24 小时容量趋势 按小时聚合 CPU 与内存使用率,判断整体容量是否持续紧张。
暂无趋势数据
); } return ( 24 小时容量趋势 按小时聚合 CPU 与内存使用率,判断整体容量是否持续紧张。
formatPercent(Number(value))} /> ( {formatPercent(Number(value))} {name === 'cpu' ? 'CPU' : '内存'} )} /> } /> } />
); }