81 lines
3.1 KiB
JavaScript
81 lines
3.1 KiB
JavaScript
import { Dropzone } from "dropzone";
|
|
import GlobalConfig from "../global-config";
|
|
Dropzone.autoDiscover = false;
|
|
|
|
var previewTemplate,
|
|
dropzone,
|
|
dropzonePreviewNode = document.querySelector("#dropzone-preview-list");
|
|
|
|
const uploadButton = document.getElementById("btnUploadBusinessIndustry");
|
|
const spinner = document.getElementById("spinner");
|
|
|
|
const toastNotification = document.getElementById("toastNotification");
|
|
const toast = new bootstrap.Toast(toastNotification);
|
|
|
|
let menuId = document.getElementById("menuId").value;
|
|
|
|
(dropzonePreviewNode.id = ""),
|
|
dropzonePreviewNode &&
|
|
((previewTemplate = dropzonePreviewNode.parentNode.innerHTML),
|
|
dropzonePreviewNode.parentNode.removeChild(dropzonePreviewNode),
|
|
(dropzone = new Dropzone(".dropzone", {
|
|
url: `${GlobalConfig.apiHost}/api/api-business-industries/upload`,
|
|
method: "post",
|
|
acceptedFiles: ".xls,.xlsx", // Use acceptedFiles for better validation
|
|
previewTemplate: previewTemplate,
|
|
previewsContainer: "#dropzone-preview",
|
|
autoProcessQueue: false, // Disable auto post
|
|
headers: {
|
|
Authorization: `Bearer ${document
|
|
.querySelector('meta[name="api-token"]')
|
|
.getAttribute("content")}`,
|
|
},
|
|
init: function () {
|
|
this.on("success", function (file, response) {
|
|
document.getElementById("toast-message").innerText =
|
|
response.message;
|
|
toast.show();
|
|
setTimeout(() => {
|
|
window.location.href = `/data/business-industries?menu_id=${menuId}`;
|
|
}, 2000);
|
|
});
|
|
this.on("error", function (file, errorMessage) {
|
|
console.error("Error uploading file:", file);
|
|
console.error("Error message:", errorMessage);
|
|
|
|
document.getElementById("toast-message").innerText =
|
|
errorMessage.message;
|
|
toast.show();
|
|
uploadButton.disabled = false;
|
|
spinner.classList.add("d-none");
|
|
});
|
|
},
|
|
})));
|
|
|
|
// Add event listener to control the submission manually
|
|
document
|
|
.querySelector("#btnUploadBusinessIndustry")
|
|
.addEventListener("click", function () {
|
|
console.log("Ini adalah value dropzone", dropzone.files[0]);
|
|
const formData = new FormData();
|
|
|
|
if (dropzone.files.length > 0) {
|
|
formData.append("file", dropzone.files[0]);
|
|
dropzone.processQueue(); // Ini akan manual memicu upload
|
|
uploadButton.disabled = true;
|
|
spinner.classList.remove("d-none");
|
|
} else {
|
|
document.getElementById("toast-message").innerText =
|
|
"Please add a file first.";
|
|
toast.show();
|
|
uploadButton.disabled = false;
|
|
spinner.classList.add("d-none");
|
|
}
|
|
});
|
|
|
|
dropzone.on("addedfile", function (file) {});
|
|
|
|
dropzone.on("complete", function (file) {
|
|
dropzone.removeFile(file);
|
|
});
|