"use client"; import { CartesianGrid, Line, LineChart, XAxis, YAxis } from "recharts"; import { useDarkMode } from "usehooks-ts"; import { type ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent } from "@/components/ui/chart"; const chartConfigLight = { views: { label: "播放", color: "#111417", }, likes: { label: "点赞", }, } satisfies ChartConfig; const chartConfigDark = { views: { label: "播放", color: "#EEEEF0", }, likes: { label: "点赞", }, } satisfies ChartConfig; interface ChartData { createdAt: string; views: number; } function formatDate(dateStr: string, showYear = false): string { const date = new Date(dateStr); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, "0"); const day = String(date.getDate()).padStart(2, "0"); const hours = String(date.getHours()).padStart(2, "0"); const minutes = String(date.getMinutes()).padStart(2, "0"); const yearStr = showYear ? ` ${year}-` : ""; return `${yearStr}${month}-${day} ${hours}:${minutes}`; } const formatYAxisLabel = (value: number, minMax: number) => { if (minMax >= 40000) { return (value / 10000).toFixed() + " 万"; } return value.toLocaleString(); } export function ViewsChart({ chartData }: { chartData: ChartData[] }) { const { isDarkMode } = useDarkMode(); const minMax = chartData[chartData.length - 1].views - chartData[0].views; if (!chartData || chartData.length === 0) return <>; return ( formatDate(e)} minTickGap={30} className="stat-num" /> formatYAxisLabel(value, minMax)} allowDecimals={false} /> formatDate(e, true)} />} /> ); }