"use client"; import { RouterAdminInvestasi } from "@/app/lib/router_admin/router_admin_investasi"; import { MODEL_INVESTASI } from "@/app_modules/investasi/_lib/interface"; import { Button, Center, Group, Pagination, Paper, ScrollArea, Stack, Table, Text, TextInput, Title, } from "@mantine/core"; import { IconDetails, IconEye, IconEyeCheck, IconInfoCircle, IconSearch } from "@tabler/icons-react"; import _ from "lodash"; import { useRouter } from "next/navigation"; import { useState } from "react"; import ComponentAdminGlobal_HeaderTamplate from "../../_admin_global/header_tamplate"; import ComponentAdminGlobal_IsEmptyData from "../../_admin_global/is_empty_data"; import { adminInvestasi_funGetAllPublish } from "../fun/get/get_all_publish"; import { ComponentAdminGlobal_TitlePage } from "../../_admin_global/_component"; import { MainColor } from "@/app_modules/_global/color"; import { AccentColor, AdminColor } from "@/app_modules/_global/color/color_pallet"; import { apiGetAdminInvestasiByStatus } from "../_lib/api_fetch_admin_investasi"; import { useShallowEffect } from "@mantine/hooks"; import { clientLogger } from "@/util/clientLogger"; import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; export default function Admin_TablePublishInvestasi() { return ( <> {/*
{JSON.stringify(listPublish, null, 2)}
*/}
); } function TableView() { const router = useRouter(); const [data, setData] = useState(null); const [nPage, setNPage] = useState(1); const [activePage, setActivePage] = useState(1); const [isSearch, setSearch] = useState(""); const [isLoading, setLoading] = useState(false); const [idData, setIdData] = useState(""); const [origin, setOrigin] = useState(""); useShallowEffect(() => { if (typeof window !== "undefined") { setOrigin(window.location.origin); } }, []) useShallowEffect(() => { const loadInitialData = async () => { try { const response = await apiGetAdminInvestasiByStatus({ status: "Publish", page: `${activePage}`, search: isSearch, }); if (response?.success && response?.data?.data) { setData(response.data.data); setNPage(response.data.nPage || 1); } else { console.error("Invalid data format received:", response); setData([]); } } catch (error) { clientLogger.error("Error get data table publish", error); setData([]); } }; loadInitialData(); }, [activePage, isSearch]); const onSearch = async (searchTerm: string) => { setSearch(searchTerm); setActivePage(1); } const onPageClick = (page: number) => { setActivePage(page) } const renderTableBody = () => { if(!Array.isArray(data) || data.length === 0) { return (
Tidak ada data
); } return data.map((e, i) => (
{e.author.username}
{e.title}
{_.toNumber(e.progress).toFixed(2)} %
{new Intl.NumberFormat("id-ID", { maximumFractionDigits: 10, }).format(+e.sisaLembar)}
{new Intl.NumberFormat("id-ID", { maximumFractionDigits: 10, }).format(+e.totalLembar)}
{e.Investasi_Invoice.length}
)); } return ( <> } radius={"xl"} placeholder={"Cari nama proyek"} onChange={(val) => { onSearch(val.currentTarget.value); }} /> } /> {/* Publish } radius={"xl"} placeholder="Cari nama proyek" onChange={(val) => { onSearch(val.currentTarget.value); }} /> */} {!data ? ( ) : ( {renderTableBody()}
Username
Nama Proyek
Progres
Sisa Saham
Total Saham
Validasi
Aksi
{ onPageClick(val); }} />
)}
); }