import { useUploadController } from "./controller_admin_upload"; import { useDispatch } from "react-redux"; import LoadingOverlay from "../../../components/LoadingOverlay"; import FileDropzone from "../../../components/FileDropzone"; import PdfPageSelector from "../../../components/PdfPageSelector"; import { Link } from "react-router-dom"; import { useEffect } from "react"; import { reset } from "../../../store/slices/uploadSlice"; export default function ViewsAdminUploadStep1() { const dispatch = useDispatch(); const { loading, file, result, pdfPageCount, selectedPages, selectedTable, sheetCount, sheetNames, selectedSheet, setSelectedPages, setSelectedTable, setSelectedSheet, handleFileSelect, handleUpload, handleNextPdf } = useUploadController(); const handlePageSelection = (pages) => { console.log("Halaman PDF yang dipilih:", pages); // setSelectedPages(pages); dispatch(setSelectedPages(pages)); }; const ext = file ? file.name.split(".").pop().toLowerCase() : ""; useEffect(() => { dispatch(reset()) }, []) return (

Upload Data

Panduan upload →

{/* Dropzone */} {/* {!file && ( )} */} {file && (
{/* Info File */}

📎 {file.name}

{ext === "pdf" && pdfPageCount && (

File PDF {pdfPageCount} halaman.

)}
{/* Selector Halaman (hanya untuk PDF dengan > 1 halaman) */} {ext === "pdf" && pdfPageCount > 1 && (
)} {(ext === "xlsx" || ext === "xls") && sheetCount > 1 && ( <>
    {sheetNames.map((name, i) => (
  • setSelectedSheet(name)} className={`flex items-center gap-2 p-3 cursor-pointer hover:bg-blue-50 transition ${ selectedSheet === name ? "bg-blue-100 font-semibold" : "" }`} > {name}
  • ))}

*Pilih sheet yang akan dimasukan

)} {/* Tombol Upload */}
1) ? 'hidden' : 'block' }`}>
)} {result && result.file_type === ".pdf" && result.tables?.length > 1 && (

Hasil Analisis Backend

{/*
    {result.tables.map((t, i) => (
  • setSelectedTable(t)} className={`flex items-center gap-2 p-3 cursor-pointer hover:bg-blue-50 transition ${ selectedTable?.title === t.title ? "bg-blue-100 font-semibold" : "" }`} > {t.title}
  • ))}
*/}
    {result.tables.map((t, i) => (
  • setSelectedTable(t)} className={`group relative border border-gray-200 rounded-lg cursor-pointer overflow-hidden transition-all duration-200 hover:shadow-sm hover:border-blue-300 ${ selectedTable?.title === t.title ? "bg-blue-50 border-blue-400" : "bg-white" }`} > {/* Header nama tabel */}
    📄 Tabel {t.title}
    {/* Mini preview kolom */}
    {t.columns?.map((col, idx) => ( ))}
    {col}
    {/* Highlight bar animasi */}
  • ))}

*Pilih tabel yang akan di proses ke database

)} {result && result.file_type === ".pdf" && result.tables?.length == 0 && (

Tidak Ditemukan Tabel Valid

Pastikan file pdf berisi tabel yang memiliki kolom geometry dan bukan hasil scan.

)}
); }