This commit is contained in:
jaya
2025-09-16 14:40:01 +07:00
parent 3bf563bb82
commit fae5b28244
2 changed files with 58 additions and 14 deletions

View File

@@ -41,19 +41,58 @@ export default function AddDocumentModal({ isOpen, onClose }) {
const handleAddOption = (fieldId) => {setFields(fields.map(field =>field.id === fieldId? { ...field, options: [...field.options, { id: Date.now(), value: '' }] }: field));};
const handleOptionChange = (fieldId, optionId, event) => {const { value } = event.target;setFields(fields.map(field =>field.id === fieldId? { ...field, options: field.options.map(opt => opt.id === optionId ? { ...opt, value } : opt) }: field));};
const handleRemoveOption = (fieldId, optionId) => {setFields(fields.map(field =>field.id === fieldId? { ...field, options: field.options.filter(opt => opt.id !== optionId) }: field));};
const handleSave = () => {
const newDocumentType = {
template: selectedTemplate,
name: docTypeName,
fields: fields.map(({ id, name, type, options }) => ({
name,
type,
...(type === 'Selection' && { options: options.map(opt => opt.value) })
}))
};
console.log("Menyimpan data JSON:", JSON.stringify(newDocumentType, null, 2));
onClose();
setSelectedTemplate(null);
const handleSave = async () => {
// Validasi nama tipe dokumen
if (!docTypeName.trim()) {
alert("Nama tipe dokumen wajib diisi");
return;
}
// Siapkan expectation sesuai format backend
const expectation = {};
fields.forEach(field => {
if (!field.name.trim()) return;
if (field.type === "Selection") {
expectation[field.name] = {
type: "selection",
options: field.options.map(opt => opt.value).filter(Boolean)
};
} else if (field.type === "Number") {
expectation[field.name] = "number";
} else if (field.type === "Date") {
expectation[field.name] = "date";
} else {
expectation[field.name] = "text";
}
});
try {
const org = localStorage.getItem('selected_organization');
if (!org) throw new Error("Organisasi belum dipilih");
const { organization_id } = JSON.parse(org);
const res = await fetch("https://bot.kediritechnopark.com/webhook/create-data-type", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
organization_id,
nama_tipe: docTypeName,
expectation,
}),
});
if (!res.ok) {
const errData = await res.json().catch(() => ({}));
throw new Error(errData.message || "Gagal menambah jenis dokumen");
}
// Reset state dan tutup modal
setSelectedTemplate(null);
setDocTypeName('');
setFields([]);
onClose();
// Jika DashboardPage Anda memakai onSuccess, panggil juga di sini:
// if (typeof onSuccess === "function") onSuccess();
} catch (err) {
alert(err.message);
}
};
if (!isOpen) return null;

View File

@@ -19,7 +19,7 @@ export default function InputDataPage() {
const fileInputRef = useRef(null);
const cameraInputRef = useRef(null);
const [isDragging, setIsDragging] = useState(false);
console.log(expectation)
// --- PERUBAHAN: State baru untuk progress upload ---
const [uploadProgress, setUploadProgress] = useState(0);
@@ -47,6 +47,7 @@ export default function InputDataPage() {
const totalFiles = filesToUpload.length;
const successfulUploads = [];
const failedUploads = [];
const allResults = []; // <-- Variabel untuk mengumpulkan semua hasil
for (let i = 0; i < totalFiles; i++) {
const file = filesToUpload[i];
@@ -71,6 +72,7 @@ export default function InputDataPage() {
const resultJson = await response.json();
successfulUploads.push({ file: file.name, result: resultJson });
allResults.push(resultJson); // <-- Kumpulkan hasil response di sini
console.log(`Sukses mengupload ${file.name}:`, resultJson);
} catch (error) {
@@ -82,6 +84,9 @@ export default function InputDataPage() {
setIsUploading(false);
setUploadProgress(0);
// allResults sekarang berisi array hasil response dari semua file
console.log("Semua hasil response:", allResults);
// Beri ringkasan hasil upload
alert(`Selesai! Berhasil: ${successfulUploads.length}, Gagal: ${failedUploads.length}`);