'use client' import colors from '@/con/colors'; import { Box, Button, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, Title } from '@mantine/core'; import { useShallowEffect } from '@mantine/hooks'; import { IconDeviceImac, IconSearch } from '@tabler/icons-react'; import { useRouter } from 'next/navigation'; import { useEffect, useState } from 'react'; import { useProxy } from 'valtio/utils'; import { BarChart } from '@mantine/charts'; import HeaderSearch from '../../_com/header'; import JudulList from '../../_com/judulList'; import jumlahPengangguranState from '../../_state/ekonomi/jumlah-pengangguran'; function DetailDataPengangguran() { const [search, setSearch] = useState("") return ( } value={search} onChange={(e) => setSearch(e.currentTarget.value)} /> ); } function ListDetailDataPengangguran({search}: {search: string}) { type DetailDataPengangguran = { id: string; month: string; year: number; educatedUnemployment: number; uneducatedUnemployment: number; percentageChange: number; totalUnemployment: number; } const [chartData, setChartData] = useState([]); const [mounted, setMounted] = useState(false); // untuk memastikan DOM sudah ready const stateDetail = useProxy(jumlahPengangguranState.jumlahPengangguran) const router = useRouter(); useShallowEffect(() => { setMounted(true) stateDetail.findMany.load() }, []) useEffect(() => { setMounted(true); if (stateDetail.findMany.data) { setChartData(stateDetail.findMany.data.map((item) => ({ id: item.id, month: item.month, year: item.year instanceof Date ? item.year.getFullYear() : Number(item.year), educatedUnemployment: Number(item.educatedUnemployment), uneducatedUnemployment: Number(item.uneducatedUnemployment), percentageChange: Number(item.percentageChange), totalUnemployment: Number(item.totalUnemployment), }))); } }, [stateDetail.findMany.data]); const filteredData = (stateDetail.findMany.data || []).filter(item => { const keyword = search.toLowerCase(); return ( item.month.toLowerCase().includes(keyword) || item.year.toString().toLowerCase().includes(keyword) ); }); if (!stateDetail.findMany.data) { return ( ) } return ( Bulan Terdidik Tidak Terdidik Detail {filteredData.map((item) => ( {item.month} {item.educatedUnemployment} {item.uneducatedUnemployment} ))}
{/* Chart */} {!mounted && !chartData ? ( Data Pengangguran Terdidik dan Tidak Terdidik Belum ada data untuk ditampilkan dalam grafik ) : ( Data Pengangguran Terdidik dan Tidak Terdidik {mounted && chartData.length > 0 && ( )} )}
); } export default DetailDataPengangguran;