radfusion/resources/assets/vendor/libs/dropzone/dropzone.js

69 lines
2.2 KiB
JavaScript

import Dropzone from "dropzone/dist/dropzone";
Dropzone.autoDiscover = false;
// File upload progress animation
Dropzone.prototype.uploadFiles = function (files) {
const minSteps = 6;
const maxSteps = 60;
const timeBetweenSteps = 100;
const bytesPerStep = 100000;
const isUploadSuccess = true;
const self = this;
for (let i = 0; i < files.length; i++) {
const file = files[i];
const totalSteps = Math.round(
Math.min(maxSteps, Math.max(minSteps, file.size / bytesPerStep)),
);
for (let step = 0; step < totalSteps; step++) {
const duration = timeBetweenSteps * (step + 1);
setTimeout(
(function (file, totalSteps, step) {
return function () {
file.upload = {
progress: (100 * (step + 1)) / totalSteps,
total: file.size,
bytesSent: ((step + 1) * file.size) / totalSteps,
};
self.emit(
"uploadprogress",
file,
file.upload.progress,
file.upload.bytesSent,
);
if (file.upload.progress === 100) {
if (isUploadSuccess) {
file.status = Dropzone.SUCCESS;
self.emit("success", file, "success", null);
} else {
file.status = Dropzone.ERROR;
self.emit(
"error",
file,
"Some upload error",
null,
);
}
self.emit("complete", file);
self.processQueue();
}
};
})(file, totalSteps, step),
duration,
);
}
}
};
try {
window.Dropzone = Dropzone;
} catch (e) {}
export { Dropzone };