// app/admin/upload/_components/step-3-table-picker.tsx "use client"; import { useEffect, useState } from "react"; import { useUploadContext } from "../_context/upload-context"; import uploadApi from "@/shared/services/map-upload"; import { Button } from "@/shared/components/ui/button"; import { toast } from "sonner"; export default function StepTablePicker() { const { state, setState, goToStep } = useUploadContext(); const [selectedTableIdx, setSelectedTableIdx] = useState(0); const [loading, setLoading] = useState(false); const tables = state.result?.data.tables || []; const activeTable = selectedTableIdx !== null ? tables[selectedTableIdx] : null; const handleNext = async () => { if (!activeTable) return; setLoading(true); try { // Kirim tabel yang dipilih kembali ke backend untuk diproses final const res = await uploadApi.processPdf(activeTable, state.file?.name || "doc.pdf", state.fileDesc); setState(prev => ({ ...prev, result: res })); // Update result dengan hasil final (metadata, preview, dll) goToStep("VALIDATE", { replace: true }); } catch (err: any) { toast.error(err.message || "Gagal memproses tabel"); } finally { setLoading(false); } }; return (
{/* Sidebar List Tabel */}

Daftar Tabel Terdeteksi

{tables.map((t: any, idx: number) => (
setSelectedTableIdx(idx)} className={`p-3 rounded border cursor-pointer text-sm ${ selectedTableIdx === idx ? "bg-blue-50 border-blue-500" : "bg-white hover:bg-gray-50" }`} > Tabel {t.title || idx + 1}
))}
{/* Preview Data Tabel */}
{activeTable ? (
{activeTable.columns?.map((col: string, i: number) => ( ))} {/* {activeTable.rows?.slice(0, 20).map((row: any[], i: number) => ( */} {activeTable.rows?.map((row: any[], i: number) => ( {activeTable.columns?.map((_: any, colIdx: number) => ( ))} ))}
{col}
{row[colIdx]}
{/*

Menampilkan 20 baris pertama.

*/}
) : (
Pilih tabel untuk melihat preview
)}
); }