import { Area, AreaChart, CartesianGrid, YAxis } from "recharts" import { ChartContainer, ChartTooltip, ChartTooltipContent, xAxis } from "@/components/ui/chart" import { useYAxisWidth, cn, formatShortDate, chartMargin } from "@/lib/utils" import { ChartData, SystemStatsRecord } from "@/types" import { useMemo } from "react" export type DataPoint = { label: string dataKey: (data: SystemStatsRecord) => number | undefined color: number | string opacity: number } export default function AreaChartDefault({ chartData, max, maxToggled, tickFormatter, contentFormatter, dataPoints, domain, }: // logRender = false, { chartData: ChartData max?: number maxToggled?: boolean tickFormatter: (value: number, index: number) => string contentFormatter: ({ value, payload }: { value: number; payload: SystemStatsRecord }) => string dataPoints?: DataPoint[] domain?: [number, number] // logRender?: boolean }) { const { yAxisWidth, updateYAxisWidth } = useYAxisWidth() return useMemo(() => { if (chartData.systemStats.length === 0) { return null } // if (logRender) { // console.log("Rendered at", new Date()) // } return (
updateYAxisWidth(tickFormatter(value, index))} tickLine={false} axisLine={false} /> {xAxis(chartData)} formatShortDate(data[0].payload.created)} contentFormatter={contentFormatter} /> } /> {dataPoints?.map((dataPoint, i) => { const color = `var(--chart-${dataPoint.color})` return ( ) })} {/* } /> */}
) }, [chartData.systemStats.at(-1), yAxisWidth, maxToggled]) }