import { useLingui } from "@lingui/react/macro" import { memo } from "react" import { Area, AreaChart, CartesianGrid, YAxis } from "recharts" import { ChartContainer, ChartTooltip, ChartTooltipContent, xAxis } from "@/components/ui/chart" import { Unit } from "@/lib/enums" import { chartMargin, cn, decimalString, formatBytes, formatShortDate, toFixedFloat } from "@/lib/utils" import type { ChartData, SystemStatsRecord } from "@/types" import { useYAxisWidth } from "./hooks" export default memo(function DiskChart({ dataKey, diskSize, chartData, }: { dataKey: string | ((data: SystemStatsRecord) => number | undefined) diskSize: number chartData: ChartData }) { const { yAxisWidth, updateYAxisWidth } = useYAxisWidth() const { t } = useLingui() // round to nearest GB if (diskSize >= 100) { diskSize = Math.round(diskSize) } if (chartData.systemStats.length === 0) { return null } return (
{ const { value, unit } = formatBytes(val * 1024, false, Unit.Bytes, true) return updateYAxisWidth(toFixedFloat(value, value >= 10 ? 0 : 1) + " " + unit) }} /> {xAxis(chartData)} formatShortDate(data[0].payload.created)} contentFormatter={({ value }) => { const { value: convertedValue, unit } = formatBytes(value * 1024, false, Unit.Bytes, true) return decimalString(convertedValue) + " " + unit }} /> } />
) })