]> git.plutz.net Git - lobster/blob - therapies/autosave.js
bf6727492bcd649ec198d1bbdd9c9656814d31c7
[lobster] / therapies / autosave.js
1 var button = document.querySelector('#savebutton');
2 var formdata_old = '';
3 var formdata = '';
4
5 function postsubmit(){
6   if ( this.status == 200 ) {
7     console.log('successful auto submit of form data');
8     button.setAttribute('style', 'display: none;');
9   } else {
10     console.log('!!! Error response while auto submitting form data');
11     button.setAttribute('style', 'display: block;');
12   }
13 }
14 function failsubmit(){
15   console.log('!!! Timeout while auto submitting form data');
16   button.setAttribute('style', 'display: block;');
17 }
18
19 function formencode(fd){
20     var send;
21     send='autosubmit=false';
22     for (var tup of fd.entries()){
23       send += '&' + encodeURIComponent(tup[0]) + '=' + encodeURIComponent(tup[1]);
24     }
25     return send;
26 }
27
28 function formsend(){
29   var request = new XMLHttpRequest();
30   request.open('post', '/therapies/update_therapy.sh');
31   request.timeout = 5000;
32   request.onload = postsubmit;
33   request.ontimeout = failsubmit;
34   request.onerror = failsubmit;
35   request.onabort = failsubmit;
36
37   formdata = formencode(new FormData(document.querySelector('#report')));
38
39   if ( ! (formdata == formdata_old) ) {
40     console.log( 'send' );
41     request.send( formdata );
42     formdata_old = formdata;
43   }
44 }
45
46 formdata_old = formencode(new FormData(document.querySelector('#report')));
47 button.setAttribute('style', 'display: none;');
48 setInterval(formsend, 500);