'use client' import colors from '@/con/colors'; import { Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text } from '@mantine/core'; import { useShallowEffect } from '@mantine/hooks'; import { IconDeviceImacCog, IconPlus, IconSearch } from '@tabler/icons-react'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; import { useProxy } from 'valtio/utils'; import HeaderSearch from '../../../_com/header'; import PendapatanAsliDesa from '../../../_state/ekonomi/PADesa'; function APBDesa() { const [search, setSearch] = useState(""); return ( } value={search} onChange={(e) => setSearch(e.currentTarget.value)} /> ); } function ListAPBDesa({ search }: { search: string }) { const apbDesaState = useProxy(PendapatanAsliDesa.ApbDesa); const router = useRouter(); const { data, page, totalPages, loading, load, } = apbDesaState.findMany; const formatRupiah = (value: number) => new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", minimumFractionDigits: 0, }).format(value); useShallowEffect(() => { load(page, 10, search); }, [page, search]); const filteredData = data || []; if (loading || !data) { return ( ); } return ( List APB Desa Tahun Pembiayaan Belanja Pendapatan Aksi {filteredData.length > 0 ? ( filteredData.map((item) => ( {item.tahun} {formatRupiah( item.pembiayaan.reduce( (sum, val) => sum + Number(val.value), 0 ) )} {formatRupiah( item.belanja.reduce( (sum, val) => sum + Number(val.value), 0 ) )} {formatRupiah( item.pendapatan.reduce( (sum, val) => sum + Number(val.value), 0 ) )} )) ) : (
Tidak ada data APB Desa yang cocok
)}
{ load(newPage, 10); window.scrollTo({ top: 0, behavior: "smooth" }); }} total={totalPages} mt="md" mb="md" color="blue" radius="md" />
); } export default APBDesa;