import * as React from 'react'; import { Area, AreaChart, XAxis, YAxis } from 'recharts'; import { Card, CardContent } from '@/components/ui/card'; import { ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent } from '@/components/ui/chart'; import { Metric } from '@/types/metric'; import { Button } from '@/components/ui/button'; import { router } from '@inertiajs/react'; import { cn } from '@/lib/utils'; interface Props { title: string; color: string; dataKey: 'load' | 'memory_used' | 'disk_used'; label: string; chartData: Metric[]; link: string; formatter?: (value: unknown, name: unknown) => string | number; single?: boolean; } export function ResourceUsageChart({ title, color, dataKey, label, chartData, link, formatter, single }: Props) { const chartConfig = { [dataKey]: { label: label, color: color, }, } satisfies ChartConfig; return (

{title}

{chartData.length > 0 ? formatter ? formatter(chartData[chartData.length - 1][dataKey], dataKey) : chartData[chartData.length - 1][dataKey].toLocaleString() : 'N/A'}
{!single && ( )}
{ const date = new Date(value); return date.toLocaleDateString('en-US', { hour: '2-digit', minute: '2-digit', month: 'short', day: 'numeric', }); }} /> { return new Date(value).toLocaleDateString('en-US', { hour: '2-digit', minute: '2-digit', month: 'short', day: 'numeric', }); }} formatter={formatter} indicator="dot" /> } />
); }