]> git.plutz.net Git - lobster/blob - therapies/autosave.js
introduce transaction id for therapy updates
[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     document.querySelector('#report input[name="tid"]').setAttribute('value', this.response);
8     console.log('successful auto submit of form data');
9     button.setAttribute('style', 'display: none;');
10   } else {
11     console.log('!!! Error response while auto submitting form data');
12     button.setAttribute('style', 'display: block;');
13   }
14 }
15 function failsubmit(){
16   console.log('!!! Timeout while auto submitting form data');
17   button.setAttribute('style', 'display: block;');
18 }
19
20 function formencode(fd){
21     var send;
22     send='autosubmit=true';
23     for (var tup of fd.entries()){
24       send += '&' + encodeURIComponent(tup[0]) + '=' + encodeURIComponent(tup[1]);
25     }
26     return send;
27 }
28
29 function formsend(){
30   var request = new XMLHttpRequest();
31   request.open('post', '/therapies/update_therapy.sh');
32   request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
33   request.timeout = 5000;
34   request.onload = postsubmit;
35   request.ontimeout = failsubmit;
36   request.onerror = failsubmit;
37   request.onabort = failsubmit;
38
39   formdata = formencode(new FormData(document.querySelector('#report')));
40
41   if ( ! (formdata == formdata_old) ) {
42     console.log( 'send' );
43     request.send( formdata );
44     formdata_old = formdata;
45   }
46 }
47
48 formdata_old = formencode(new FormData(document.querySelector('#report')));
49 button.setAttribute('style', 'display: none;');
50 setInterval(formsend, 500);