upload_otomation_fe
+ Upload Automation
diff --git a/src/pages/admin/upload/controller_admin_upload.jsx b/src/pages/admin/upload/controller_admin_upload.jsx
index 23e8e4b..aff20e1 100644
--- a/src/pages/admin/upload/controller_admin_upload.jsx
+++ b/src/pages/admin/upload/controller_admin_upload.jsx
@@ -64,7 +64,7 @@ export function useUploadController() {
if (!file) return;
setLoading(true);
try {
- const res = await uploadFile(file, selectedPages);
+ const res = await uploadFile(file, selectedPages, selectedSheet);
dispatch(setResult(res));
console.log('gtw',res);
diff --git a/src/pages/admin/upload/rules/views_admin_rules_upload.jsx b/src/pages/admin/upload/rules/views_admin_rules_upload.jsx
index a9a3520..9141903 100644
--- a/src/pages/admin/upload/rules/views_admin_rules_upload.jsx
+++ b/src/pages/admin/upload/rules/views_admin_rules_upload.jsx
@@ -16,19 +16,68 @@ export default function ViewsAdminUploadRules() {
🗂️ Format File yang Diizinkan
- Hanya mendukung .csv,{" "}
- .xlsx,{" "}
- .pdf, dan{" "}
- .zip.
+ Format file yang didukung:.csv,{" "}
+ .xlsx,{" "}
+ .pdf, dan{" "}
+ .zip.
-
+ {/*
Format .zip digunakan untuk data spasial seperti{" "}
.shp atau .gdb (harus berisi struktur lengkap:
.shp, .shx, .dbf, .prj).
+
*/}
+
Untuk file .xlsx:
+
+
Jika file memiliki lebih dari satu sheet, pengguna wajib memilih satu sheet saja untuk diunggah.
+
Pastikan sheet yang dipilih berisi tabel data utama yang ingin diproses.
+
-
- Setiap file yang diunggah hanya akan diproses sebagai satu tabel.
- Jika file berisi banyak sheet atau layer, sistem akan mengambil sheet/layer pertama.
+
+
Untuk file .pdf:
+
+
Jika dokumen memiliki lebih dari satu halaman, pengguna hanya dapat memilih maksimal 3 halaman untuk diproses.
+
Jika dari halaman yang dipilih terdeteksi lebih dari satu tabel, pengguna wajib memilih satu tabel yang akan digunakan.
+
+
+
+
Untuk file .zip:
+
+ Digunakan untuk data spasial seperti{" "}
+ .shp atau .gdb.
+ zip minimal harus berisi berikut:
+
+
+ .shp :
+
+
file.shp
+
file.shx
+
file.dbf
+
+
+
+ .gdb :
+
+
file.gdb
+
file.gdbtable
+
file.gdbindexes
+
+
+
+
+
+
Aturan umum untuk semua file:
+
+
Data wajib memiliki kolom koordinat seperti latitude, longitude, atau geometry.
+
Jika tidak memiliki kolom koordinat, maka wajib memiliki kolom wilayah dengan nama salah satu atau kombinasi dari:
+
+
desa / kelurahan
+
kecamatan
+
kota / kabupaten
+
+
+
Geometry akan diambil secara otomatis dari referensi data batas wilayah (Satu Peta).
+
Jika tidak ditemukan kolom koordinat maupun kolom wilayah yang valid, maka tabel dinyatakan tidak valid dan tidak dapat diproses.
+
@@ -37,16 +86,20 @@ export default function ViewsAdminUploadRules() {
⚙️ Batasan & Validasi Sistem
-
Maksimal ukuran file: 50 MB.
+ {/*
Maksimal ukuran file: 50 MB.
*/}
+
+ Setiap file yang diunggah hanya akan diproses sebagai satu tabel.
+ {/* Jika file berisi banyak sheet atau layer, sistem akan mengambil sheet/layer pertama atau layer pilihan. */}
+
Pastikan nama file tidak mengandung spasi atau karakter khusus seperti{" "}
/ \ : * ? " < > |.
-
+ {/*
Hindari penggunaan nama tabel yang terlalu panjang; sistem akan
membuat nama tabel otomatis berdasarkan file Anda, misalnya:{" "}
data_kabbandung_myfile_20251009.
-
+ */}
Setelah file diunggah, sistem akan menampilkan struktur tabel hasil deteksi{" "}
(kolom dan jumlah baris). Cek kembali sebelum menyimpan ke database.
@@ -107,7 +160,7 @@ export default function ViewsAdminUploadRules() {
- Diperbarui terakhir: 28 Oktober 2025
+ Diperbarui terakhir: 04 November 2025
diff --git a/src/pages/admin/upload/service_admin_upload.jsx b/src/pages/admin/upload/service_admin_upload.jsx
index 2df4f12..708f28e 100644
--- a/src/pages/admin/upload/service_admin_upload.jsx
+++ b/src/pages/admin/upload/service_admin_upload.jsx
@@ -26,10 +26,11 @@
import api from "../../../services/api";
-export async function uploadFile(file, page = null) {
+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);
try {
const response = await api.post("/upload", formData, {