"use client"; import { useId } from "react"; import { CartesianGrid, Line, LineChart, XAxis } from "recharts"; import { formatDate } from "@/components/formater"; import { CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { type ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent, } from "@/components/ui/chart"; import { Delta, DeltaIcon, DeltaValue } from "@/components/delta"; import { DashboardCard } from "@/components/dashboard-card"; import type { PovertyOverview } from "@/lib/poverty-types"; interface PriorityScoreChartProps { monthly: PovertyOverview["monthly"]; } const chartConfig = { score: { label: "Skor Rata-rata", color: "var(--chart-1)", }, count: { label: "KK Terdata", color: "var(--chart-2)", }, } satisfies ChartConfig; export function PriorityScoreChart({ monthly }: PriorityScoreChartProps) { const chartUid = useId().replace(/:/g, ""); const idLineGlow = `priority-score-line-glow-${chartUid}`; const chartRows = monthly.map((m) => ({ month: m.month, score: m.avg_score != null ? Number(Number(m.avg_score).toFixed(1)) : null, count: m.count, })); const scored = chartRows.filter((r) => r.score != null); const firstScore = scored[0]?.score ?? 0; const lastScore = scored.at(-1)?.score ?? 0; const growthPct = firstScore > 0 ? ((lastScore - firstScore) / firstScore) * 100 : 0; return (
Tren Skor Prioritas {scored.length > 1 && ( )}
Skor fuzzy rata-rata dan jumlah KK terdata per bulan.
{chartRows.length === 0 ? (
Belum ada skor fuzzy yang dihitung.
) : ( formatDate(`${value}-01`, "month")} tickLine={false} tickMargin={8} /> } cursor={false} /> )}
); }