/* eslint-disable react-hooks/set-state-in-effect */ import { useState, useEffect } from "react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { LineChart, Line, XAxis, YAxis, Tooltip, ResponsiveContainer } from "recharts"; import type { PovertyOverview } from "@/lib/poverty-types"; const MONTH_NAMES = ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agu", "Sep", "Okt", "Nov", "Des"]; function formatMonth(ym: string) { const [year, month] = ym.split("-"); return `${MONTH_NAMES[Number(month) - 1] ?? month} '${year.slice(2)}`; } interface PovertyTrendChartProps { monthly: PovertyOverview["monthly"]; } export function PovertyTrendChart({ monthly }: PovertyTrendChartProps) { const [isMounted, setIsMounted] = useState(false); useEffect(() => { setIsMounted(true); }, []); const chartData = monthly.map((m) => ({ month: formatMonth(m.month), pendataan: m.count, skor: m.avg_score != null ? Number(Number(m.avg_score).toFixed(1)) : null, })); return (
Tren Pendataan Warga Jumlah pendataan baru dan rata-rata skor prioritas fuzzy per bulan, dari basis data.
{chartData.length === 0 ? (
Belum ada data pendataan. Tambah marker warga di peta untuk memulai.
) : !isMounted ? (
) : (
)} ); }