'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 {DiskIOTrendPoint} from '@/lib/services/openflare'; import {formatTrendHour} from '../../components/dashboard/dashboard-utils'; import {formatBytes} from './node-utils'; const chartConfig = { diskRead: { label: '磁盘读', color: 'hsl(var(--chart-3))', }, diskWrite: { label: '磁盘写', color: 'hsl(var(--chart-5))', }, } satisfies ChartConfig; export function DiskIOTrendChart({ points, title = '24 小时磁盘 IO 趋势', description = '观察磁盘读写变化,辅助判断日志放大、缓存抖动或磁盘压力。', }: { points: DiskIOTrendPoint[]; title?: string; description?: string; }) { const data = points.map((point) => ({ hour: formatTrendHour(point.bucket_started_at), diskRead: point.disk_read_bytes, diskWrite: point.disk_write_bytes, })); if (data.length === 0) { return ( {title} {description}
暂无趋势数据
); } return ( {title} {description}
formatBytes(Number(value))} /> ( {formatBytes(Number(value))} {name === 'diskRead' ? '读' : '写'} )} /> } /> } />
); }