X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=therapies%2Fautosave.js;fp=therapies%2Fautosave.js;h=bf6727492bcd649ec198d1bbdd9c9656814d31c7;hb=6d2d03223a03794d2cef013b2b204b1a4eb983a0;hp=0000000000000000000000000000000000000000;hpb=c035ac5cd677c1c016143901de4e6a2965829610;p=lobster diff --git a/therapies/autosave.js b/therapies/autosave.js new file mode 100644 index 0000000..bf67274 --- /dev/null +++ b/therapies/autosave.js @@ -0,0 +1,48 @@ +var button = document.querySelector('#savebutton'); +var formdata_old = ''; +var formdata = ''; + +function postsubmit(){ + if ( this.status == 200 ) { + console.log('successful auto submit of form data'); + button.setAttribute('style', 'display: none;'); + } else { + console.log('!!! Error response while auto submitting form data'); + button.setAttribute('style', 'display: block;'); + } +} +function failsubmit(){ + console.log('!!! Timeout while auto submitting form data'); + button.setAttribute('style', 'display: block;'); +} + +function formencode(fd){ + var send; + send='autosubmit=false'; + for (var tup of fd.entries()){ + send += '&' + encodeURIComponent(tup[0]) + '=' + encodeURIComponent(tup[1]); + } + return send; +} + +function formsend(){ + var request = new XMLHttpRequest(); + request.open('post', '/therapies/update_therapy.sh'); + request.timeout = 5000; + request.onload = postsubmit; + request.ontimeout = failsubmit; + request.onerror = failsubmit; + request.onabort = failsubmit; + + formdata = formencode(new FormData(document.querySelector('#report'))); + + if ( ! (formdata == formdata_old) ) { + console.log( 'send' ); + request.send( formdata ); + formdata_old = formdata; + } +} + +formdata_old = formencode(new FormData(document.querySelector('#report'))); +button.setAttribute('style', 'display: none;'); +setInterval(formsend, 500);