add button for save and new

This commit is contained in:
Zhora Shalyapin 2025-02-26 10:16:06 +00:00
parent 9d09389203
commit debdf611dc

126
main.js
View File

@ -613,56 +613,86 @@
e.preventDefault()
})
}
async function sendForm(onSend) {
let formData = new FormData(document.querySelector("form"))
let fileContainers = [...document.querySelectorAll(".file-list-container")]
let fileInputNames = ["legend_photo", "legend_files", "admin_photo", "admin_files"]
for (let [i, fileContainer] of fileContainers.entries()) {
formData.set(`cp[${fileInputNames[i]}]`, fileContainer.children.length)
}
let props = document.querySelectorAll("input[name^=\"prop_\"]");
for (let prop of props) {
let parent = prop.parentElement
let propName
if (parent.tagName === "DIV") {
propName = parent.parentElement.querySelector("label").textContent
}
else if (parent.tagName === "TD") {
propName = parent.parentElement.querySelector("td:first-child").textContent
}
formData.set(`propname[${prop.name}]`, propName)
}
let result = await sendData(formData)
try {
console.log(result.ok)
}
catch (e) {
console.log(e)
}
finally {
onSend()
}
}
function createSaveAndNewButton() {
let saveAndNewButton = document.createElement("button")
saveAndNewButton.textContent = "+"
saveAndNewButton.type = "button"
saveAndNewButton.classList.add("safe-action")
saveAndNewButton.addEventListener("click", () => {
sendForm(() => {
let cpNumber = document.querySelector(`input[name="cp[number]"]`).value
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)
document.querySelector("input[name=\"save_go\"]").click()
})
})
return saveAndNewButton
}
function createSendButtons() {
if (document.querySelector("button.safe-action")) return
if (document.querySelector(".pseudo-save")) return
let saveButtons = [...document.querySelectorAll("input[name=\"save_go\"]"), ...document.querySelectorAll("input[name=\"save_exit\"]")]
let saveButtons = [
...document.querySelectorAll("input[name=\"save_go\"]"),
...document.querySelectorAll("input[name=\"save_exit\"]")
]
for (let saveButton of saveButtons) {
let pseudoSaveButton = document.createElement("button")
pseudoSaveButton.type = "button"
pseudoSaveButton.textContent = saveButton.value
pseudoSaveButton.classList.add("safe-action")
pseudoSaveButton.addEventListener("click", async () => {
let formData = new FormData(document.querySelector("form"))
pseudoSaveButton.classList.add("safe-action", "pseudo-save")
pseudoSaveButton.addEventListener("click", async () => await sendForm(() => saveButton.click()))
let fileContainers = [...document.querySelectorAll(".file-list-container")]
let fileInputNames = ["legend_photo", "legend_files", "admin_photo", "admin_files"]
for (let [i, fileContainer] of fileContainers.entries()) {
formData.set(`cp[${fileInputNames[i]}]`, fileContainer.children.length)
}
let props = document.querySelectorAll("input[name^=\"prop_\"]");
for (let prop of props) {
let parent = prop.parentElement
let propName
if (parent.tagName === "DIV") {
propName = parent.parentElement.querySelector("label").textContent
}
else if (parent.tagName === "TD") {
propName = parent.parentElement.querySelector("td:first-child").textContent
}
formData.set(`propname[${prop.name}]`, propName)
}
let result = await sendData(formData)
try {
console.log(result.ok)
}
catch (e) {
console.log(e)
}
finally {
saveButton.click()
}
})
saveButton.style.display = "none"
saveButton.parentElement.insertBefore(pseudoSaveButton, saveButton)
}
document.querySelectorAll("input[name=\"save_go\"]").forEach(el => el.after(createSaveAndNewButton()))
}
function addUglyDeleteListener() {
@ -1018,6 +1048,26 @@
/* HEAD */
let justCreated = localStorage.getItem("justCreated")
let prevCreated = localStorage.getItem("prevCreated")
if (justCreated !== null) {
localStorage.setItem("prevCreated", justCreated)
localStorage.removeItem("justCreated")
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")
localStorage.removeItem("prevCreated")
localStorage.removeItem("lattitude")
localStorage.removeItem("longitude")
}
let styleSheet = document.createElement("style")
styleSheet.textContent = styles
document.head.appendChild(styleSheet)