diff --git a/src/pages/admin/upload/controller_admin_upload.jsx b/src/pages/admin/upload/controller_admin_upload.jsx index f5b3126..f6bfee2 100644 --- a/src/pages/admin/upload/controller_admin_upload.jsx +++ b/src/pages/admin/upload/controller_admin_upload.jsx @@ -1,6 +1,6 @@ import { useState } from "react"; import { useDispatch, useSelector } from "react-redux"; -import { setFile, setResult, setValidatedData } from "../../../store/slices/uploadSlice"; +import { setFile, setResult, setValidatedData, setPdfPageCount, setSelectedPages } from "../../../store/slices/uploadSlice"; import { uploadFile, uploadPdf, saveToDatabase } from "./service_admin_upload"; import { useNavigate } from "react-router-dom"; import * as pdfjsLib from "pdfjs-dist"; @@ -11,18 +11,16 @@ pdfjsLib.GlobalWorkerOptions.workerSrc = new URL( import * as XLSX from 'xlsx'; -// pdfjsLib.GlobalWorkerOptions.workerSrc = pdfjsWorker; - export function useUploadController() { const dispatch = useDispatch(); const navigate = useNavigate(); - const { file, result } = useSelector((state) => state.upload); + const { file, result, pdfPageCount, selectedPages } = useSelector((state) => state.upload); const [loading, setLoading] = useState(false); const [selectedTable, setSelectedTable] = useState(null); - const [selectedPages, setSelectedPages] = useState(""); + // const [selectedPages, setSelectedPages] = useState(""); const [tableTitle, setTableTitle] = useState(""); - const [pdfPageCount, setPdfPageCount] = useState(null); + // const [pdfPageCount, setPdfPageCount] = useState(null); const [selectedSheet, setSelectedSheet] = useState(null); const [sheetCount, setSheetCount] = useState(null); const [sheetNames, setSheetNames] = useState([]); @@ -38,7 +36,8 @@ export function useUploadController() { reader.onload = async (e) => { const typedArray = new Uint8Array(e.target.result); const pdf = await pdfjsLib.getDocument({ data: typedArray }).promise; - setPdfPageCount(pdf.numPages); + // setPdfPageCount(pdf.numPages); + dispatch(setPdfPageCount(pdf.numPages)); console.log(`📄 PDF terdeteksi dengan ${pdf.numPages} halaman`); }; reader.readAsArrayBuffer(f); @@ -47,9 +46,6 @@ export function useUploadController() { } } else if (ext === "xlsx" || ext === "xls") { - // const data = await f.arrayBuffer(); - // const workbook = XLSX.read(data, { type: 'array' }); - // const sheetNames = workbook.SheetNames; const data = await f.arrayBuffer(); const workbook = XLSX.read(data, { type: 'array' }); const sheetNames = workbook.SheetNames; @@ -58,7 +54,8 @@ export function useUploadController() { setSheetNames(sheetNames); } else { - setPdfPageCount(null); + // setPdfPageCount(null); + dispatch(setPdfPageCount(null)); } }; @@ -67,6 +64,7 @@ export function useUploadController() { if (!file) return; setLoading(true); try { + console.log(selectedPages); const res = await uploadFile(file, selectedPages, selectedSheet); dispatch(setResult(res)); diff --git a/src/pages/admin/upload/service_admin_upload.jsx b/src/pages/admin/upload/service_admin_upload.jsx index 708f28e..73f8392 100644 --- a/src/pages/admin/upload/service_admin_upload.jsx +++ b/src/pages/admin/upload/service_admin_upload.jsx @@ -30,7 +30,9 @@ export async function uploadFile(file, page = null, sheet = null) { const formData = new FormData(); formData.append("file", file); formData.append("page", page); - formData.append("sheet", sheet); + if (sheet != null) { + formData.append("sheet", sheet); + } try { const response = await api.post("/upload", formData, { diff --git a/src/pages/admin/upload/views_admin_upload.jsx b/src/pages/admin/upload/views_admin_upload.jsx index 3120aac..0be7452 100644 --- a/src/pages/admin/upload/views_admin_upload.jsx +++ b/src/pages/admin/upload/views_admin_upload.jsx @@ -1,9 +1,11 @@ import { useUploadController } from "./controller_admin_upload"; +import { useDispatch } from "react-redux"; import FileDropzone from "../../../components/FileDropzone"; import PdfPageSelector from "../../../components/PdfPageSelector"; import { Link } from "react-router-dom"; export default function ViewsAdminUploadStep1() { + const dispatch = useDispatch(); const { loading, file, @@ -24,7 +26,8 @@ export default function ViewsAdminUploadStep1() { const handlePageSelection = (pages) => { console.log("Halaman PDF yang dipilih:", pages); - setSelectedPages(pages); + // setSelectedPages(pages); + dispatch(setSelectedPages(pages)); }; const ext = file ? file.name.split(".").pop().toLowerCase() : ""; @@ -106,10 +109,13 @@ export default function ViewsAdminUploadStep1() {