diff --git a/app/(modules)/admin/mapset-upload/_components/step-4-validate.tsx b/app/(modules)/admin/mapset-upload/_components/step-4-validate.tsx index 5320a0e..897cb7a 100644 --- a/app/(modules)/admin/mapset-upload/_components/step-4-validate.tsx +++ b/app/(modules)/admin/mapset-upload/_components/step-4-validate.tsx @@ -62,6 +62,7 @@ export default function StepValidate() { const table = state.result?.data; const data = { title: metadata.title, + path: state.result?.data.tmp_path, columns: table.columns, rows: table.preview, author: metadata, diff --git a/app/(modules)/admin/mapset-upload/_components/step-5-success.tsx b/app/(modules)/admin/mapset-upload/_components/step-5-success.tsx index fadac51..5aa8913 100644 --- a/app/(modules)/admin/mapset-upload/_components/step-5-success.tsx +++ b/app/(modules)/admin/mapset-upload/_components/step-5-success.tsx @@ -264,7 +264,7 @@ export default function StepSuccess() { {/* Tombol Upload Lagi (Reset Context) */} diff --git a/app/(modules)/admin/mapset-upload/_context/upload-context.tsx b/app/(modules)/admin/mapset-upload/_context/upload-context.tsx index 390a1b0..04bea61 100644 --- a/app/(modules)/admin/mapset-upload/_context/upload-context.tsx +++ b/app/(modules)/admin/mapset-upload/_context/upload-context.tsx @@ -50,7 +50,12 @@ function UploadProviderContent({ children }: { children: React.ReactNode }) { useEffect(() => { const stepParam = searchParams.get("step") as UploadStepType; const validSteps: UploadStepType[] = ["UPLOAD", "PDF_VIEWER", "TABLE_PICKER", "VALIDATE", "SUCCESS"]; - + + // if (state.step === "SUCCESS" && stepParam !== "SUCCESS") { + // reset(); + // return; + // } + if (stepParam && validSteps.includes(stepParam)) { if (stepParam !== "UPLOAD" && !state.file) { router.replace(pathname); @@ -63,11 +68,6 @@ function UploadProviderContent({ children }: { children: React.ReactNode }) { } }, [searchParams, state.file, pathname, router]); - const reset = () => { - setState(initialState); - router.push(pathname); - }; - // 2. STATE -> URL (Handle Navigation) // 🔥 Update Logic Navigation const goToStep = (newStep: UploadStepType, options?: { replace?: boolean }) => { @@ -89,6 +89,12 @@ function UploadProviderContent({ children }: { children: React.ReactNode }) { setState((prev) => ({ ...prev, step: newStep })); }; + + const reset = () => { + setState(initialState); + router.push(pathname); + }; + return ( {children} diff --git a/app/(modules)/admin/mapset-upload/_hooks/use-pdf-viewer.ts b/app/(modules)/admin/mapset-upload/_hooks/use-pdf-viewer.ts index 252da88..bf64552 100644 --- a/app/(modules)/admin/mapset-upload/_hooks/use-pdf-viewer.ts +++ b/app/(modules)/admin/mapset-upload/_hooks/use-pdf-viewer.ts @@ -283,22 +283,28 @@ export function usePdfViewer() { toast.warning("Harap pilih minimal 1 halaman untuk diproses."); return; } + setLoading(true); try { const res = await uploadApi.uploadFile( state.file!, - localSelectedPages, - null, + localSelectedPages, // Kirim array halaman: [1, 2, 5] + null, // sheet null karena ini PDF state.fileDesc ); + setState(prev => ({ ...prev, result: res })); - if (res.tables && res.tables.length > 0) { + + if (res.data.tables && res.data.tables.length > 0) { goToStep("TABLE_PICKER"); - toast.success(`Ditemukan ${res.tables.length} tabel. Silakan pilih tabel.`); - } else { + toast.success(`Ditemukan ${res.data.tables.length} tabel. Silakan pilih tabel.`); + } else if (!res.data.tables) { goToStep("VALIDATE"); toast.info("Tabel tidak terdeteksi spesifik, lanjut ke validasi."); + } else { + toast.warning(res.message); } + } catch (err: any) { console.error(err); toast.error(err.message || "Gagal memproses halaman PDF terpilih."); diff --git a/app/(modules)/admin/mapset-upload/_hooks/use-upload.ts b/app/(modules)/admin/mapset-upload/_hooks/use-upload.ts index c71cf10..1f2f62b 100644 --- a/app/(modules)/admin/mapset-upload/_hooks/use-upload.ts +++ b/app/(modules)/admin/mapset-upload/_hooks/use-upload.ts @@ -167,7 +167,6 @@ export function useUploadLogic() { const handleSaveToDatabase = async (payload: any) => { setLoading(true); try { - // Panggil API const res = await uploadApi.saveToDatabase(payload); diff --git a/shared/services/map-upload.ts b/shared/services/map-upload.ts index f2e6cc4..3397ce1 100644 --- a/shared/services/map-upload.ts +++ b/shared/services/map-upload.ts @@ -8,18 +8,21 @@ const uploadApi = { if (sheet) formData.append("sheet", sheet); formData.append("file_desc", fileDesc); - return apiHelpers.post("/upload/file", formData, { + // return apiHelpers.post("/upload/file", formData, { + return apiHelpers.post("/pipeline/analyze", formData, { headers: { "Content-Type": "multipart/form-data" }, }); }, processPdf: async (data: any, fileName: string, fileDesc: string): Promise => { const payload = { ...data, fileName, fileDesc }; - return apiHelpers.post("/upload/process-pdf", payload); + // return apiHelpers.post("/upload/process-pdf", payload); + return apiHelpers.post("/pipeline/analyze/df", payload); }, saveToDatabase: async (data: any): Promise => { - return apiHelpers.post("/upload/to-postgis", data); + // return apiHelpers.post("/upload/to-postgis", data); + return apiHelpers.post("/pipeline/publish", data); }, getStyles: async (): Promise => {