'use client' import colors from '@/con/colors'; import { Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, Title, Tooltip } from '@mantine/core'; import { IconEdit, IconSearch, IconTrash } from '@tabler/icons-react'; import HeaderSearch from '../../_com/header'; import { useRouter } from 'next/navigation'; import { useEffect, useState } from 'react'; import { useShallowEffect, useMediaQuery } from '@mantine/hooks'; import { useProxy } from 'valtio/utils'; import jumlahPendudukMiskin from '../../_state/ekonomi/jumlah-penduduk-miskin'; import { Bar, BarChart, Legend, XAxis, YAxis, Tooltip as RechartsTooltip } from 'recharts'; import { ModalKonfirmasiHapus } from '../../_com/modalKonfirmasiHapus'; function JumlahPendudukMiskin() { const [search, setSearch] = useState(""); return ( } value={search} onChange={(e) => setSearch(e.currentTarget.value)} /> ); } function ListJumlahPendudukMiskin({ search }: { search: string }) { type JPMGrafik = { id: string; year: number; totalPoorPopulation: number } const stateJPM = useProxy(jumlahPendudukMiskin); const [chartData, setChartData] = useState([]); const [mounted, setMounted] = useState(false); const [modalHapus, setModalHapus] = useState(false); const [selectedId, setSelectedId] = useState(null); const router = useRouter(); const isTablet = useMediaQuery('(max-width:1024px)'); const isMobile = useMediaQuery('(max-width:768px)'); const { data, page, loading, load, totalPages, } = stateJPM.findMany; // Load data useShallowEffect(() => { setMounted(true); load(page, 10, search); }, [page, search]); useEffect(() => { if (stateJPM.findMany.data) { setChartData(stateJPM.findMany.data.map(item => ({ id: item.id, year: Number(item.year), totalPoorPopulation: Number(item.totalPoorPopulation) }))); } }, [stateJPM.findMany.data]); const filteredData = data || [] const handleDelete = () => { if (selectedId) { stateJPM.delete.byId(selectedId); setModalHapus(false); setSelectedId(null); stateJPM.findMany.load(); } } if (loading || !data) { return ( ); } return ( Daftar Jumlah Penduduk Miskin Tahun Jumlah Penduduk Miskin Edit Delete {filteredData.length > 0 ? filteredData.map(item => ( {item.year} {item.totalPoorPopulation} )) : (
Tidak ada data yang cocok
)}
{ load(newPage, 10); window.scrollTo({ top: 0, behavior: 'smooth' }); }} total={totalPages} mt="md" mb="md" color="blue" radius="md" />
{/* Chart */} Grafik Jumlah Penduduk Miskin {mounted && chartData.length > 0 ? ( ) : ( Belum ada data untuk ditampilkan dalam grafik )} {/* Modal Hapus */} setModalHapus(false)} onConfirm={handleDelete} text='Apakah anda yakin ingin menghapus data ini?' />
); } export default JumlahPendudukMiskin;