X-Git-Url: http://git.shiar.net/minimedit.git/blobdiff_plain/00480c926f002a6bbc7ebd742e8450bc1b1a6f9d..f8eb3c4b73b7cc139ab421517dc034d351ae00f5:/progress.js?ds=sidebyside
diff --git a/progress.js b/progress.js
index b93d61f..601fec0 100644
--- a/progress.js
+++ b/progress.js
@@ -2,6 +2,12 @@ function showsize(bytes) {
return (bytes / 1024 / 1024).toFixed(2);
}
+function enablesubmit(form) {
+ let submit = form.querySelector('input[type="submit"]:disabled');
+ if (!submit) return;
+ submit.disabled = false;
+}
+
function trackupload(input) {
var progress = document.getElementById('progress');
if (!progress) {
@@ -26,32 +32,30 @@ function trackupload(input) {
if (e.target.status == 200) {
progress.textContent = 'voltooid';
progress.innerHTML += ' (' + showsize(input.files[0].size) + ' MB)';
- input.value = '';
+ window.location.assign(e.target.response);
}
else {
progress.textContent = 'fout';
progress.innerHTML += ': ' + e.target.responseText + '';
+ enablesubmit(input.form);
}
progress.style.width = '100%';
input.parentNode.removeChild(cancel);
}, false);
ajax.addEventListener('error', function (e) {
progress.textContent = 'mislukt: ' + e.target.responseText;
+ enablesubmit(input.form);
}, false);
ajax.addEventListener('abort', function (e) {
progress.textContent = 'afgebroken';
input.parentNode.removeChild(cancel);
input.parentNode.removeChild(progress.parentNode);
+ enablesubmit(input.form);
}, false);
ajax.open('POST', input.form.action);
ajax.setRequestHeader('Accept', 'text/plain')
-
- var form = new FormData();
- for (let file of input.files) {
- form.append('image[]', file);
- }
- ajax.send(form);
+ ajax.send(new FormData(input.form));
var cancel = document.createElement('BUTTON');
cancel.textContent = 'Afbreken';
@@ -61,12 +65,17 @@ function trackupload(input) {
}
document.addEventListener('DOMContentLoaded', e => {
- for (let row of document.forms[0].elements) {
- if (row.name == 'image[]') {
- row.form.onsubmit = () => {
- trackupload(row);
- return false;
- };
- }
+ for (let form of document.forms) {
+ form.addEventListener('submit', e => {
+ if (e.explicitOriginalTarget) {
+ e.explicitOriginalTarget.disabled = true;
+ }
+ if (upload = e.target.querySelector('input[type="file"]')) {
+ if (upload.value) {
+ e.preventDefault();
+ trackupload(upload);
+ }
+ }
+ });
}
});