"use client"; import { useEffect, useState } from "react"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; // pastikan path sesuai import { format } from "date-fns"; import { id } from "date-fns/locale"; import { Badge } from "@/components/ui/badge"; import { listDataImage, listDataTeks } from "@/service/content"; import { Button } from "../ui/button"; import { getCookiesDecrypt } from "@/lib/utils"; import Swal from "sweetalert2"; import withReactContent from "sweetalert2-react-content"; import { useParams, useRouter, useSearchParams } from "next/navigation"; import { Edit, Eye, Trash, View } from "lucide-react"; export default function DocumentTable() { const [dataTable, setDataTable] = useState([]); const [loading, setLoading] = useState(false); const router = useRouter(); const searchParams = useSearchParams(); const params = useParams(); const locale = params?.locale; const MySwal = withReactContent(Swal); const [totalData, setTotalData] = useState(1); const [showData, setShowData] = useState("10"); const [page, setPage] = useState(1); const [totalPage, setTotalPage] = useState(1); const [search, setSearch] = useState(""); const userId = getCookiesDecrypt("uie"); const userLevelId = getCookiesDecrypt("ulie"); const [categories, setCategories] = useState([]); const [selectedCategories, setSelectedCategories] = useState([]); const [categoryFilter, setCategoryFilter] = useState(""); const [statusFilter, setStatusFilter] = useState([]); const [startDate, setStartDate] = useState(""); const [endDate, setEndDate] = useState(""); const [filterByCreator, setFilterByCreator] = useState(""); const [filterBySource, setFilterBySource] = useState(""); const [filterByCreatorGroup, setFilterByCreatorGroup] = useState(""); const roleId = getCookiesDecrypt("urie"); async function fetchData() { const formattedStartDate = startDate ? format(new Date(startDate), "yyyy-MM-dd") : ""; const formattedEndDate = endDate ? format(new Date(endDate), "yyyy-MM-dd") : ""; try { const isForSelf = Number(roleId) === 4; setLoading(true); const res = await listDataTeks( showData, page - 1, isForSelf, !isForSelf, categoryFilter, statusFilter, statusFilter?.sort().join(",").includes("1") ? userLevelId : "", filterByCreator, filterBySource, formattedStartDate, formattedEndDate, search, filterByCreatorGroup ); // isi parameter sesuai kebutuhan API const contentData = res?.data?.data?.content || []; // Tambahkan nomor urut const formattedData = contentData.map((item: any, index: number) => ({ no: index + 1, ...item, })); setDataTable(formattedData); } catch (error) { console.error("Error fetching data:", error); } finally { setLoading(false); } } useEffect(() => { fetchData(); }, []); const getStatusBadge = (status: number) => { switch (status) { case 1: return Done; case 2: return Queue; case 3: return Trigger Error; default: return Unknown; } }; return (
No Title Category Created At Creator Name Creator Group Status Action {loading ? ( Loading... ) : dataTable.length > 0 ? ( dataTable.map((item: any) => ( {item.no} {item.title} {item.categoryName} {item.createdAt ? format(new Date(item.createdAt), "dd-MM-yyyy HH:mm", { locale: id, }) : "-"} {item.creatorName} {item.creatorGroup} {getStatusBadge(item.status)} )) ) : ( No data found )}
); }