X-Git-Url: http://git.shiar.nl/minimedit.git/blobdiff_plain/00480c926f002a6bbc7ebd742e8450bc1b1a6f9d..91e2369bd5eb8b18bd555704dd4a6f7f976cfc84:/progress.js 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); + } + } + }); } });