]> git.plutz.net Git - lobster/blobdiff - therapies/autosave.js
auto submit therapy form data
[lobster] / therapies / autosave.js
diff --git a/therapies/autosave.js b/therapies/autosave.js
new file mode 100644 (file)
index 0000000..bf67274
--- /dev/null
@@ -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);