add button for save and new
This commit is contained in:
parent
9d09389203
commit
debdf611dc
126
main.js
126
main.js
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user