From f6ef0494734941c65926e98ddf3f1e76769db0fc Mon Sep 17 00:00:00 2001 From: Zhora Shalyapin Date: Thu, 27 Feb 2025 10:24:04 +0000 Subject: [PATCH] fix missing id on first save --- main.js | 79 +++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 57 insertions(+), 22 deletions(-) diff --git a/main.js b/main.js index 7af5a96..0a81e91 100644 --- a/main.js +++ b/main.js @@ -23,6 +23,16 @@ "attachment3": "admin_files" } + const localStorageItems = { + NEED_UPDATE_ID: "needUpdateId", + JUST_CREATED: "justCreated", + PREV_CREATED: "prevCreated", + LATTITUDE: "lattitude", + LONGITUDE: "longitude", + ALWAYS_PRETTIFY: "always", + REDIRECT_EXIT: "redirectExit" + } + const ZOOM = 17 const METERS = 510 @@ -525,9 +535,9 @@ } } if (this.checked) - localStorage.setItem("always", "+") + localStorage.setItem(localStorageItems.ALWAYS_PRETTIFY, "+") else - localStorage.removeItem("always") + localStorage.removeItem(localStorageItems.ALWAYS_PRETTIFY) }) alwaysPrettify.appendChild(alwaysPrettifyCheckbox) @@ -623,6 +633,10 @@ formData.set(`cp[${fileInputNames[i]}]`, fileContainer.children.length) } + if (formData.get("cp[id]") == '') { + localStorage.setItem(localStorageItems.NEED_UPDATE_ID, true) + } + let props = document.querySelectorAll("input[name^=\"prop_\"]"); for (let prop of props) { let parent = prop.parentElement @@ -662,9 +676,9 @@ let lattitude = document.querySelector(`input[name="cp[lattitude]"]`).value let longitude = document.querySelector(`input[name="cp[longitude]"]`).value - localStorage.setItem("justCreated", cpNumber) - localStorage.setItem("lattitude", lattitude) - localStorage.setItem("longitude", longitude) + localStorage.setItem(localStorageItems.JUST_CREATED, cpNumber) + localStorage.setItem(localStorageItems.LATTITUDE, lattitude) + localStorage.setItem(localStorageItems.LONGITUDE, longitude) document.querySelector("input[name=\"save_go\"]").click() }) @@ -676,23 +690,27 @@ function createSendButtons() { if (document.querySelector(".pseudo-save")) return - let saveButtons = [ - ...document.querySelectorAll("input[name=\"save_go\"]"), - ...document.querySelectorAll("input[name=\"save_exit\"]") - ] + let saveAndStayButtons = document.querySelectorAll("input[name=\"save_go\"]") + let saveAndExitButtons = document.querySelectorAll("input[name=\"save_exit\"]") + let saveButtons = [...saveAndStayButtons, ...saveAndExitButtons] for (let saveButton of saveButtons) { let pseudoSaveButton = document.createElement("button") pseudoSaveButton.type = "button" pseudoSaveButton.textContent = saveButton.value pseudoSaveButton.classList.add("safe-action", "pseudo-save") - pseudoSaveButton.addEventListener("click", async () => await sendForm(() => saveButton.click())) + pseudoSaveButton.addEventListener("click", async () => await sendForm(() => { + if (saveButton.name == "save_exit") { + localStorage.setItem(localStorageItems.REDIRECT_EXIT, true) + } + saveAndStayButtons[0].click() + })) saveButton.style.display = "none" saveButton.parentElement.insertBefore(pseudoSaveButton, saveButton) } - document.querySelectorAll("input[name=\"save_go\"]").forEach(el => el.after(createSaveAndNewButton())) + saveAndStayButtons.forEach(el => el.after(createSaveAndNewButton())) } function addUglyDeleteListener() { @@ -1048,24 +1066,41 @@ /* HEAD */ - let justCreated = localStorage.getItem("justCreated") - let prevCreated = localStorage.getItem("prevCreated") + let justCreated = localStorage.getItem(localStorageItems.JUST_CREATED) + let prevCreated = localStorage.getItem(localStorageItems.PREV_CREATED) + let needUpdateId = localStorage.getItem(localStorageItems.NEED_UPDATE_ID) + let exit = localStorage.getItem(localStorageItems.REDIRECT_EXIT) + + if (needUpdateId) { + let formData = new FormData() + formData.set("cp[id]", new URLSearchParams(document.location.search).get("cp_id")) + formData.set("cp[number]", document.querySelector(`input[name="cp[number]"]`).value) + formData.set("update_id", true) + sendData(formData).then(() => localStorage.removeItem(localStorageItems.NEED_UPDATE_ID)) + } + + if (exit) { + localStorage.removeItem(localStorageItems.REDIRECT_EXIT) + + window.location.href = "https://rst.runcity.org/msk2025/cp_mgmt/" + return + } if (justCreated !== null) { - localStorage.setItem("prevCreated", justCreated) - localStorage.removeItem("justCreated") + localStorage.setItem(localStorageItems.PREV_CREATED, justCreated) + localStorage.removeItem(localStorageItems.JUST_CREATED) window.location.href = "https://rst.runcity.org/msk2025/cp_mgmt/?action=edit" return } if (prevCreated !== null) { - document.querySelector(`input[name="cp[number]"]`).value = parseInt(localStorage.getItem("prevCreated")) + 1 - document.querySelector(`input[name="cp[lattitude]"]`).value = localStorage.getItem("lattitude") - document.querySelector(`input[name="cp[longitude]"]`).value = localStorage.getItem("longitude") + document.querySelector(`input[name="cp[number]"]`).value = parseInt(localStorage.getItem(localStorageItems.PREV_CREATED)) + 1 + document.querySelector(`input[name="cp[lattitude]"]`).value = localStorage.getItem(localStorageItems.LATTITUDE) + document.querySelector(`input[name="cp[longitude]"]`).value = localStorage.getItem(localStorageItems.LONGITUDE) - localStorage.removeItem("prevCreated") - localStorage.removeItem("lattitude") - localStorage.removeItem("longitude") + localStorage.removeItem(localStorageItems.PREV_CREATED) + localStorage.removeItem(localStorageItems.LATTITUDE) + localStorage.removeItem(localStorageItems.LONGITUDE) } let styleSheet = document.createElement("style") @@ -1375,7 +1410,7 @@ /* PRETTIFY CHECKBOX */ - if (localStorage.getItem("always")) { + if (localStorage.getItem(localStorageItems.ALWAYS_PRETTIFY)) { document.querySelector(`input[name^="always-prettify-0"]`).click() prettify(form, oldTable, container, insertedFileRows) }