'use client' import { LayoutDrawer, LayoutNavbarNew, SkeletonSingle, WARNA } from '@/module/_global'; import { ActionIcon, Avatar, Box, Card, Center, Divider, Flex, Grid, Group, Skeleton, Text, TextInput, Title } from '@mantine/core'; import { useRouter, useSearchParams } from 'next/navigation'; import React, { useState } from 'react'; import { HiMenu } from 'react-icons/hi'; import { HiMagnifyingGlass, HiMiniPresentationChartBar, HiMiniUserGroup, HiOutlineListBullet, HiSquares2X2 } from 'react-icons/hi2'; import { MdAccountCircle } from 'react-icons/md'; import DrawerDivision from './drawer_division'; import { useShallowEffect } from '@mantine/hooks'; import { IDataDivison } from '../lib/type_division'; import { funGetAllDivision } from '../lib/api_division'; import toast from 'react-hot-toast'; import { funGetAllGroup, IDataGroup } from '@/module/group'; export default function ListDivision() { const [isList, setIsList] = useState(false) const router = useRouter() const [openDrawer, setOpenDrawer] = useState(false) const [data, setData] = useState([]) const [jumlah, setJumlah] = useState(0) const [searchQuery, setSearchQuery] = useState('') const searchParams = useSearchParams() const group = searchParams.get('group') const [loading, setLoading] = useState(true) const handleList = () => { setIsList(!isList) } const fetchData = async (search: string) => { try { setData([]); setLoading(true); const response = await funGetAllDivision('?search=' + search + '&group=' + group) if (response.success) { setData(response.data) setJumlah(response.data.length) } else { toast.error(response.message); } setLoading(false); } catch (error) { toast.error("Gagal mendapatkan divisi, coba lagi nanti"); console.error(error); } finally { setLoading(false); } }; function searchDivision(search: string) { setSearchQuery(search) fetchData(search) } useShallowEffect(() => { fetchData(searchQuery) }, [searchQuery]) const [checked, setChecked] = useState([]); const groupNameMap = (groupId: string) => { const groupName = checked.find((group) => group.id === groupId)?.name; return groupName || '-'; }; async function getAllGroupFilter() { try { const response = await funGetAllGroup('?active=true') if (response.success) { setChecked(response.data); } else { toast.error(response.message); } } catch (error) { console.error(error); toast.error("Gagal mendapatkan grup, coba lagi nanti"); } } useShallowEffect(() => { getAllGroupFilter(); }, []); return ( (setOpenDrawer(true))} bg={WARNA.bgIcon} size="lg" radius="lg" aria-label="Settings"> } /> } placeholder="Pencarian" value={searchQuery} onChange={(val) => { searchDivision(val.target.value) }} /> {isList ? ( ) : ( )} {/* {group && Filter by: {group}} */} {group && Filter by: {groupNameMap(group)}} {loading ? <> : Total Divisi {jumlah} } {isList ? ( {loading ? Array(6) .fill(null) .map((_, i) => ( )) : data?.map((v: any, i: any) => { return ( router.push(`/division/${v.id}`)}>
{v.name}
); }) }
) : ( {loading ? Array(6) .fill(null) .map((_, i) => ( )) : data?.map((v: any, i: any) => { return ( router.push(`/division/${v.id}`)}> {v.name} {v.desc} +{v.jumlah_member - 1} ); }) } )}
setOpenDrawer(false)}>
); }