'use client'; import { Area, AreaChart, CartesianGrid, ResponsiveContainer, Tooltip, XAxis, YAxis, } from 'recharts'; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from '@/components/ui/card'; import { formatPrice } from '@/lib/currency'; import type { ValuationHistoryPoint } from '@/lib/valuation-api'; interface ValuationHistoryChartProps { data: ValuationHistoryPoint[]; } function formatChartDate(dateStr: string): string { const date = new Date(dateStr); return date.toLocaleDateString('vi-VN', { month: 'short', year: '2-digit' }); } function formatTooltipDate(dateStr: string): string { const date = new Date(dateStr); return date.toLocaleDateString('vi-VN', { day: '2-digit', month: '2-digit', year: 'numeric', }); } export function ValuationHistoryChart({ data }: ValuationHistoryChartProps) { if (data.length < 2) return null; const chartData = data.map((point) => ({ date: point.date, price: point.estimatedPriceVND, confidence: Math.round(point.confidence * 100), })); return ( Lịch sử định giá Biến động giá ước tính theo thời gian
formatPrice(val)} className="fill-muted-foreground" fontSize={12} width={80} /> typeof label === 'string' ? formatTooltipDate(label) : label } formatter={(value, name) => { const num = Number(value); if (name === 'price') return [formatPrice(num) + ' VNĐ', 'Giá ước tính']; if (name === 'confidence') return [`${num}%`, 'Độ tin cậy']; return [String(value), name]; }} />
); }