/* eslint-disable @typescript-eslint/no-explicit-any */ import { Paper, Title, Progress, Stack, Text, Group, Box } from '@mantine/core'; function Summary({ title, data }: any) { if (!data || data.length === 0) return null; const totalAnggaran = data.reduce((s: number, i: any) => s + i.anggaran, 0); const totalRealisasi = data.reduce((s: number, i: any) => s + i.totalRealisasi, 0); const persen = totalAnggaran > 0 ? (totalRealisasi / totalAnggaran) * 100 : 0; // Format angka ke dalam format Rupiah const formatRupiah = (angka: number) => { return new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR', minimumFractionDigits: 0, maximumFractionDigits: 0, }).format(angka); }; // Tentukan warna berdasarkan persentase const getProgressColor = (persen: number) => { if (persen >= 100) return 'teal'; if (persen >= 80) return 'blue'; if (persen >= 60) return 'yellow'; return 'red'; }; return ( {title} {persen.toFixed(2)}% Realisasi: {formatRupiah(totalRealisasi)} / Anggaran: {formatRupiah(totalAnggaran)} {persen >= 100 && ( ✓ Realisasi mencapai 100% dari anggaran )} {persen < 100 && persen >= 80 && ( ⚡ Realisasi baik, mendekati target )} {persen < 80 && persen >= 60 && ( ⚠️ Realisasi cukup, perlu ditingkatkan )} {persen < 60 && ( ⚠️ Realisasi rendah, perlu perhatian khusus )} ); } export default function GrafikRealisasi({ apbdesData }: any) { const items = apbdesData.items || []; const tahun = apbdesData.tahun || new Date().getFullYear(); const pendapatan = items.filter((i: any) => i.tipe === 'pendapatan'); const belanja = items.filter((i: any) => i.tipe === 'belanja'); const pembiayaan = items.filter((i: any) => i.tipe === 'pembiayaan'); // Hitung total keseluruhan const totalAnggaranSemua = items.reduce((s: number, i: any) => s + i.anggaran, 0); const totalRealisasiSemua = items.reduce((s: number, i: any) => s + i.totalRealisasi, 0); const persenSemua = totalAnggaranSemua > 0 ? (totalRealisasiSemua / totalAnggaranSemua) * 100 : 0; const formatRupiah = (angka: number) => { return new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR', minimumFractionDigits: 0, maximumFractionDigits: 0, }).format(angka); }; return ( GRAFIK REALISASI APBDes {tahun} {/* Summary Total Keseluruhan */} <> TOTAL KESELURUHAN = 100 ? 'teal' : persenSemua >= 80 ? 'blue' : 'red'}> {persenSemua.toFixed(2)}% {formatRupiah(totalRealisasiSemua)} / {formatRupiah(totalAnggaranSemua)} = 100 ? 'teal' : persenSemua >= 80 ? 'blue' : 'red'} /> ); }