import { AreaChart, Area, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, Legend, } from "recharts"; import type { DockerStatsJSON } from "./show"; import { format } from "date-fns"; interface Props { acummulativeData: DockerStatsJSON["disk"]; diskTotal: number; } export const DockerDiskChart = ({ acummulativeData, diskTotal }: Props) => { const transformedData = acummulativeData.map((item, index) => { return { time: item.time, name: `Point ${index + 1}`, usedGb: +item.value.diskUsage, totalGb: +item.value.diskTotal, freeGb: item.value.diskFree, }; }); return (
{/* @ts-ignore */} } />
); }; interface CustomTooltipProps { active: boolean; payload?: { color?: string; dataKey?: string; value?: number; payload: { time: string; usedGb: number; freeGb: number; totalGb: number; }; }[]; } const CustomTooltip = ({ active, payload }: CustomTooltipProps) => { if (active && payload && payload.length && payload[0]) { return (

{`Date: ${format(new Date(payload[0].payload.time), "PPpp")}`}

{`Disk usage: ${payload[0].payload.usedGb} GB`}

{`Disk free: ${payload[0].payload.freeGb} GB`}

{`Total disk: ${payload[0].payload.totalGb} GB`}

); } return null; };