From 1466f245792bd42e87b551f6c3bd3f8fb38b2e78 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Sun, 18 Mar 2018 23:52:58 +0100 Subject: [PATCH] Minor UI fix --- assets/js/page_image_detail.js | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/assets/js/page_image_detail.js b/assets/js/page_image_detail.js index 220e6b6..5e71833 100644 --- a/assets/js/page_image_detail.js +++ b/assets/js/page_image_detail.js @@ -19,31 +19,18 @@ const save = document.querySelector("#save"); const updateForm = document.querySelector(".update-form"); let lastTimeOut = null; -let lastSaved = null; -let hasChangedEver = false; +let hasChanged = false; +let isSaving = false; -const currentState = () => { +const doSave = () => { const data = new FormData(document.forms.namedItem("upload")); data.append("from_js", "true"); - return data; -}; - -const formDataToJson = (data) => { - const result = {}; - if (data != null) { - for (let key of data.keys()) { - result[key] = data.getAll(key); - } - } - return result; -}; - -const doSave = () => { - const data = currentState(); save.value = "Saving…"; + hasChanged = false; + isSaving = true; postData(location.href, data).then((json) => { save.value = "Saved"; - lastSaved = formDataToJson(data); + isSaving = false; }) }; @@ -51,7 +38,7 @@ const scheduleSave = () => { if (lastTimeOut !== null) { clearTimeout(lastTimeOut); } - hasChangedEver = true; + hasChanged = true; lastTimeOut = setTimeout(doSave, 300) }; @@ -60,7 +47,7 @@ const fakeTitleListener = (event) => { document.title = event.target.innerText + " | i.k8r"; actualTitle.value = fakeTitle.innerText; }); - hasChangedEver = true; + hasChanged = true; scheduleSave(); }; @@ -94,8 +81,7 @@ save.addEventListener("click", (e) => { }); window.addEventListener("beforeunload", (e) => { - const state = formDataToJson(currentState()); - if (hasChangedEver && lastSaved !== state) { + if (isSaving || hasChanged) { const message = "Your changes have not been saved. Are you sure you want to leave?"; e.preventDefault(); e.returnValue = message; -- GitLab