'use client' import colors from '@/con/colors'; import { Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, Title } from '@mantine/core'; import { useDebouncedValue, useShallowEffect } from '@mantine/hooks'; import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; import { useProxy } from 'valtio/utils'; import { YearFilter } from '../_components/YearFilter'; import HeaderSearch from '../../_com/header'; import { ModalKonfirmasiHapus } from '../../_com/modalKonfirmasiHapus'; import distribusiUmur from '../../_state/kependudukan/distribusi-umur'; function DistribusiUmurAdmin() { const [search, setSearch] = useState(''); const [selectedYear, setSelectedYear] = useState(undefined); return ( } value={search} onChange={(e: React.ChangeEvent) => setSearch(e.currentTarget.value)} /> { setSelectedYear(year); distribusiUmur.findMany.page = 1; }} /> ); } function ListDistribusiUmur({ search, year }: { search: string; year?: number }) { type DistribusiUmurType = { id: string; rentangUmur: string; jumlah: number; tahun: number; }; const router = useRouter(); const stateDistribusiUmur = useProxy(distribusiUmur); const [modalHapus, setModalHapus] = useState(false); const [debouncedSearch] = useDebouncedValue(search, 1000); const [selectedId, setSelectedId] = useState(null); const { data, page, totalPages, loading, load, } = stateDistribusiUmur.findMany; const handleDelete = () => { if (selectedId) { stateDistribusiUmur.delete.byId(selectedId); setModalHapus(false); setSelectedId(null); } }; useShallowEffect(() => { load(page, 10, debouncedSearch, year); }, [page, debouncedSearch, year]); const filteredData = (data as DistribusiUmurType[]) || []; if (loading || !data) { return ( ); } return ( List Distribusi Umur {/* Desktop Table */} Rentang Umur Jumlah Tahun Edit Hapus {filteredData.length > 0 ? ( filteredData.map((item) => ( {item.rentangUmur} {item.jumlah.toLocaleString('id-ID')} {item.tahun} )) ) : (
Tidak ada data distribusi umur yang cocok
)}
{/* Mobile Card */} {filteredData.length > 0 ? ( filteredData.map((item) => ( Rentang Umur {item.rentangUmur} Jumlah {item.jumlah.toLocaleString('id-ID')} Tahun {item.tahun} )) ) : (
Tidak ada data distribusi umur yang cocok
)}
{/* Pagination */}
{ load(newPage, 10, search); window.scrollTo({ top: 0, behavior: 'smooth' }); }} total={totalPages} mt="md" mb="md" color="blue" radius="md" />
{/* Modal Konfirmasi Hapus */} setModalHapus(false)} onConfirm={handleDelete} text="Apakah anda yakin ingin menghapus data distribusi umur ini?" />
); } export default DistribusiUmurAdmin;