]> git.plutz.net Git - lobster/blob - therapies/autosave.js
adapt to current cgilite lib
[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.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
32   request.timeout = 5000;
33   request.onload = postsubmit;
34   request.ontimeout = failsubmit;
35   request.onerror = failsubmit;
36   request.onabort = failsubmit;
37
38   formdata = formencode(new FormData(document.querySelector('#report')));
39
40   if ( ! (formdata == formdata_old) ) {
41     console.log( 'send' );
42     request.send( formdata );
43     formdata_old = formdata;
44   }
45 }
46
47 formdata_old = formencode(new FormData(document.querySelector('#report')));
48 button.setAttribute('style', 'display: none;');
49 setInterval(formsend, 500);