aboutsummaryrefslogtreecommitdiff
path: root/assets
diff options
context:
space:
mode:
Diffstat (limited to 'assets')
-rw-r--r--assets/js/edit.js60
-rw-r--r--assets/js/worker.js37
2 files changed, 24 insertions, 73 deletions
diff --git a/assets/js/edit.js b/assets/js/edit.js
index b0f8915..92a09b1 100644
--- a/assets/js/edit.js
+++ b/assets/js/edit.js
@@ -1,25 +1,20 @@
let form;
let unsavedChanges = false;
const pageurl = basepath + pageid;
-const myWorker = new Worker(jspath + 'worker.js');
window.onload = () => {
form = document.getElementById('update');
let inputs = form.elements;
for (i = 0; i < inputs.length; i++) {
- inputs[i].onchange = changeHandler;
inputs[i].oninput = changeHandler;
}
- form.onsubmit = submitHandler;
+ form.addEventListener("submit", function (event) {
+ event.preventDefault();
+ submitHandler(this);
+ });
window.onkeydown = keyboardHandler;
window.onbeforeunload = confirmExit;
-
- myWorker.postMessage({
- type: 'init',
- pageurl: pageurl,
- });
- myWorker.postMessage({ type: 'stillEditing' });
};
/**
@@ -29,12 +24,11 @@ window.onload = () => {
function keyboardHandler(e) {
if (e.composed) {
if (e.ctrlKey) {
- // console.log(e.key);
switch (e.key) {
+ // ctrl + s
case 's':
e.preventDefault();
- unsavedChanges = false;
- form.submit();
+ submitHandler(form);
return false;
}
}
@@ -43,18 +37,32 @@ function keyboardHandler(e) {
/**
* Manage change event
- * @param {Event} e
+ * @param {InputEvent} e
*/
function changeHandler(e) {
+ if(e.target.classList.contains("toggle")) {
+ return;
+ }
unsavedChanges = true;
}
/**
* Manage submit event
- * @param {Event} e
+ * @param {HTMLFormElement} form
*/
-function submitHandler(e) {
- unsavedChanges = false;
+function submitHandler(form) {
+ var xhr = new XMLHttpRequest();
+ var fd = new FormData(form);
+
+ xhr.addEventListener("load", function(event) {
+ unsavedChanges = false;
+ alert("updated");
+ });
+ xhr.addEventListener("error", function(event) {
+ alert('Error while trying to update.');
+ });
+ xhr.open(form.method, form.action);
+ xhr.send(fd);
}
/**
@@ -63,26 +71,6 @@ function submitHandler(e) {
*/
function confirmExit(e) {
if (unsavedChanges) {
- const url = pageurl + '/removeeditby';
- console.log('send quit editing')
- fetch(url, { method: 'POST' })
- .then(handleErrors)
- .then((response) => {
- console.log(response);
- setTimeout(() => {
- myWorker.postMessage({ type: 'stillEditing' });
- }, 1500);
- });
return 'You have unsaved changes, do you really want to leave this page?';
- } else {
- myWorker.postMessage({ type: 'quitEditing' });
- }
-}
-
-async function handleErrors(response) {
- if (!response.ok) {
- const data = await response.json();
- throw Error(`${response.statusText}. ${data.message}`);
}
- return response.json();
}
diff --git a/assets/js/worker.js b/assets/js/worker.js
deleted file mode 100644
index d60fdf1..0000000
--- a/assets/js/worker.js
+++ /dev/null
@@ -1,37 +0,0 @@
-let pageurl;
-
-onmessage = function (e) {
- switch (e.data.type) {
- case 'init':
- pageurl = e.data.pageurl;
- break;
- case 'stillEditing':
- stillEditing();
- break;
- case 'quitEditing':
- quitEditing();
- break;
- };
-}
-
-function stillEditing() {
- console.log('send still editing');
- const url = pageurl + '/editby';
- const req = new XMLHttpRequest();
- req.open('POST', url, false);
- req.send(null);
-
- const res = JSON.parse(req.responseText);
- console.log(res);
-}
-
-function quitEditing() {
- console.log('send quit editing');
- const url = pageurl + '/removeeditby';
- const req = new XMLHttpRequest();
- req.open('POST', url, false);
- req.send(null);
-
- const res = JSON.parse(req.responseText);
- console.log(res);
-} \ No newline at end of file