"use client" import { globalRole, WARNA } from '@/module/_global'; import { ActionIcon, Avatar, Badge, Box, Card, Center, Divider, Flex, Grid, Group, Text, TextInput, Title } from '@mantine/core'; import { useRouter, useSearchParams } from 'next/navigation'; import React, { useState } from 'react'; import { HiMagnifyingGlass, HiMiniPresentationChartBar, HiOutlineListBullet, HiSquares2X2 } from 'react-icons/hi2'; import { MdAccountCircle } from 'react-icons/md'; import { RiCircleFill } from 'react-icons/ri'; import { funGetAllProject } from '../lib/api_project'; import toast from 'react-hot-toast'; import { useShallowEffect } from '@mantine/hooks'; import { IDataProject } from '../lib/type_project'; import { funGetAllGroup, IDataGroup } from '@/module/group'; import { useHookstate } from '@hookstate/core'; export default function ListProject() { const [isList, setIsList] = useState(false) const router = useRouter() const [isData, setData] = useState([]) const [loading, setLoading] = useState(true); const searchParams = useSearchParams() const status = searchParams.get('status') const group = searchParams.get('group') const [searchQuery, setSearchQuery] = useState('') const roleLogin = useHookstate(globalRole) const [nameGroup, setNameGroup] = useState('') const fetchData = async () => { try { setLoading(true) const response = await funGetAllProject('?status=' + status + '&search=' + searchQuery + '&group=' + group) if (response.success) { setData(response?.data) setNameGroup(response.filter.name) } else { toast.error(response.message); } setLoading(false); } catch (error) { toast.error("Gagal mendapatkan kegiatan, coba lagi nanti"); console.error(error); } finally { setLoading(false); } }; useShallowEffect(() => { fetchData(); }, [status, searchQuery]); const handleList = () => { setIsList(!isList) } return ( } placeholder="Pencarian" onChange={(event) => setSearchQuery(event.currentTarget.value)} value={searchQuery} /> {isList ? ( ) : ( )} {roleLogin.get() == 'supadmin' && Filter by: {nameGroup}} Total Kegiatan {isData.length} {isList ? ( {isData.map((v, i) => { return ( router.push(`/project/${v.id}`)}>
{v.title}
); })}
) : ( {isData.map((v, i) => { return ( router.push(`/project/${v.id}`)}> {v.title} {v.desc} { v.status === 0 ? 'Segera' : v.status === 1 ? 'Dikerjakan' : v.status === 2 ? 'Selesai' : v.status === 3 ? 'Dibatalkan' : "" } { v.member > 0 ? '+' + (v.member - 1) : "0" } ); })} )}
); }