import { t } from "@lingui/core/macro" import { Area, AreaChart, CartesianGrid, YAxis } from "recharts" import { ChartContainer, ChartTooltip, ChartTooltipContent, xAxis } from "@/components/ui/chart" import { cn, formatShortDate, decimalString, chartMargin, formatBytes, toFixedFloat } from "@/lib/utils" import { ChartData } from "@/types" import { memo } from "react" import { $userSettings } from "@/lib/stores" import { useStore } from "@nanostores/react" import { useYAxisWidth } from "./hooks" export default memo(function SwapChart({ chartData }: { chartData: ChartData }) { const { yAxisWidth, updateYAxisWidth } = useYAxisWidth() const userSettings = useStore($userSettings) if (chartData.systemStats.length === 0) { return null } return (
toFixedFloat(chartData.systemStats.at(-1)?.stats.s ?? 0.04, 2)]} width={yAxisWidth} tickLine={false} axisLine={false} tickFormatter={(value) => { const { value: convertedValue, unit } = formatBytes(value * 1024, false, userSettings.unitDisk, true) return updateYAxisWidth(toFixedFloat(convertedValue, value >= 10 ? 0 : 1) + " " + unit) }} /> {xAxis(chartData)} formatShortDate(data[0].payload.created)} contentFormatter={({ value }) => { // mem values are supplied as GB const { value: convertedValue, unit } = formatBytes(value * 1024, false, userSettings.unitDisk, true) return decimalString(convertedValue, convertedValue >= 100 ? 1 : 2) + " " + unit }} // indicator="line" /> } />
) })