'use client' import colors from '@/con/colors'; import { BarChart } from '@mantine/charts'; import { Box, Button, Center, Group, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, Title, Tooltip, Pagination, Flex, } from '@mantine/core'; import { useShallowEffect } from '@mantine/hooks'; import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react'; import { useRouter } from 'next/navigation'; import { useEffect, useState } from 'react'; import { useProxy } from 'valtio/utils'; import HeaderSearch from '../../_com/header'; import { ModalKonfirmasiHapus } from '../../_com/modalKonfirmasiHapus'; import demografiPekerjaan from '../../_state/ekonomi/demografi-pekerjaan'; function DemografiPekerjaan() { const [search, setSearch] = useState(''); return ( } value={search} onChange={(e) => setSearch(e.currentTarget.value)} /> ); } function ListDemografiPekerjaan({ search }: { search: string }) { type DemografiPekerjaan = { id: string; pekerjaan: string; lakiLaki: number; perempuan: number; }; const router = useRouter(); const stateDemografi = useProxy(demografiPekerjaan); const [chartData, setChartData] = useState([]); const [mounted, setMounted] = useState(false); const [modalHapus, setModalHapus] = useState(false); const [selectedId, setSelectedId] = useState(null); const { data, page, totalPages, loading, load, } = stateDemografi.findMany; const handleDelete = () => { if (selectedId) { stateDemografi.delete.byId(selectedId); setModalHapus(false); setSelectedId(null); } }; useShallowEffect(() => { setMounted(true); load(page, 10, search); }, [page, search]); useEffect(() => { if (data) { setChartData( data.map((item) => ({ id: item.id, pekerjaan: item.pekerjaan, lakiLaki: Number(item.lakiLaki), perempuan: Number(item.perempuan), })) ); } }, [data]); const filteredData = data || []; if (loading || !data) { return ( ); } return ( List Demografi Pekerjaan Pekerjaan Laki - Laki Perempuan Edit Hapus {filteredData.length > 0 ? ( filteredData.map((item) => ( {item.pekerjaan} {item.lakiLaki} {item.perempuan} )) ) : (
Tidak ada data demografi pekerjaan yang cocok
)}
{/* Pagination */}
{ load(newPage, 10, search); window.scrollTo({ top: 0, behavior: 'smooth' }); }} total={totalPages} mt="md" mb="md" color="blue" radius="md" />
{/* Chart */} Grafik Demografi Pekerjaan {mounted && chartData.length > 0 ? ( ) : ( Belum ada data untuk ditampilkan dalam grafik )} Laki - Laki Perempuan {/* Modal Konfirmasi Hapus */} setModalHapus(false)} onConfirm={handleDelete} text="Apakah anda yakin ingin menghapus demografi pekerjaan ini?" />
); } export default DemografiPekerjaan;