delete point from db on delete button pressed

This commit is contained in:
Zhora Shalyapin 2025-02-27 14:59:25 +00:00
parent 3f0dc94d9f
commit 825ebcc106

66
main.js
View File

@ -7,10 +7,6 @@
// @match https://rst.runcity.org/*/cp_mgmt* // @match https://rst.runcity.org/*/cp_mgmt*
// @icon https://www.google.com/s2/favicons?sz=64&domain=runcity.org // @icon https://www.google.com/s2/favicons?sz=64&domain=runcity.org
// @grant none // @grant none
// @require https://code.jquery.com/jquery-3.7.1.min.js
// @require https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js
// @require https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js
// @require https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js
// ==/UserScript== // ==/UserScript==
(function () { (function () {
@ -113,18 +109,35 @@
document.head.appendChild(css) document.head.appendChild(css)
} }
function addJs(link) {
let script = document.createElement("script")
script.src = link
document.head.appendChild(script)
}
function isEditCpPage() { function isEditCpPage() {
let params = new URLSearchParams(document.location.search) let params = new URLSearchParams(document.location.search)
return params.get("action") === "edit" return params.get("action") === "edit"
} }
async function sendData(formData) { function isDeleteCpPage() {
let params = new URLSearchParams(document.location.search)
return params.get("action") === "delete"
}
async function updatePoint(formData) {
return await fetch(`https://runcity.geo.rictum.ru/api/competitions/${window.location.pathname.split('/')[1]}/update`, { return await fetch(`https://runcity.geo.rictum.ru/api/competitions/${window.location.pathname.split('/')[1]}/update`, {
method: 'POST', method: 'POST',
body: formData body: formData
}) })
} }
async function deletePoint() {
return await fetch(`https://runcity.geo.rictum.ru/api/points/${new URLSearchParams(location.search).get("cp_id")}`, {
method: 'DELETE'
})
}
function copyCoordinates() { function copyCoordinates() {
let copyButton = document.createElement("button") let copyButton = document.createElement("button")
copyButton.addEventListener("click", async event => { copyButton.addEventListener("click", async event => {
@ -214,7 +227,7 @@
let normalInputName = fileInputs[inputName] let normalInputName = fileInputs[inputName]
formData.set(`cp[id]`, document.querySelector("input[name='cp[id]']").value) formData.set(`cp[id]`, document.querySelector("input[name='cp[id]']").value)
formData.set(`cp[${normalInputName}]`, "-1") formData.set(`cp[${normalInputName}]`, "-1")
let result = await sendData(formData) let result = await updatePoint(formData)
try { try {
console.log(result.ok) console.log(result.ok)
} }
@ -652,7 +665,7 @@
formData.set(`propname[${prop.name}]`, propName) formData.set(`propname[${prop.name}]`, propName)
} }
let result = await sendData(formData) let result = await updatePoint(formData)
try { try {
console.log(result.ok) console.log(result.ok)
@ -1070,7 +1083,7 @@
} }
` `
/* HEAD */ /* REDIRECTS */
let justCreated = localStorage.getItem(localStorageItems.JUST_CREATED) let justCreated = localStorage.getItem(localStorageItems.JUST_CREATED)
let prevCreated = localStorage.getItem(localStorageItems.PREV_CREATED) let prevCreated = localStorage.getItem(localStorageItems.PREV_CREATED)
@ -1082,7 +1095,7 @@
formData.set("cp[id]", new URLSearchParams(document.location.search).get("cp_id")) 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("cp[number]", document.querySelector(`input[name="cp[number]"]`).value)
formData.set("update_id", true) formData.set("update_id", true)
sendData(formData).then(() => localStorage.removeItem(localStorageItems.NEED_UPDATE_ID)) updatePoint(formData).then(() => localStorage.removeItem(localStorageItems.NEED_UPDATE_ID))
} }
if (exit) { if (exit) {
@ -1109,19 +1122,46 @@
localStorage.removeItem(localStorageItems.LONGITUDE) localStorage.removeItem(localStorageItems.LONGITUDE)
} }
/* HEAD */
let styleSheet = document.createElement("style") let styleSheet = document.createElement("style")
styleSheet.textContent = styles styleSheet.textContent = styles
document.head.appendChild(styleSheet) document.head.appendChild(styleSheet)
addCss("https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css") /* SWITCH FOR DIFFERENT PAGES */
addCss('https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css')
addCss("https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css")
if (isDeleteCpPage()) {
let deleteButton = document.querySelector(`input[name="delete_go"]`)
let pseudoDeleteButton = document.createElement("button")
pseudoDeleteButton.type = "button"
pseudoDeleteButton.textContent = deleteButton.value
pseudoDeleteButton.classList.add("unsafe-action", "pseudo-save")
pseudoDeleteButton.addEventListener("click", async () => {
await deletePoint()
deleteButton.click()
})
deleteButton.style.display = "none"
deleteButton.parentElement.insertBefore(pseudoDeleteButton, deleteButton)
return
}
if (!isEditCpPage()) { if (!isEditCpPage()) {
return return
} }
/* action=edit HEAD */
addJs("https://code.jquery.com/jquery-3.7.1.min.js")
addJs("https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js")
addJs("https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js")
addJs('https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js')
addCss("https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css")
addCss('https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css')
addCss("https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css")
/* NEW DEFALUT VALUES */ /* NEW DEFALUT VALUES */
document.querySelector(`#props input[name="new_file_type1"][value="l"]`).click() document.querySelector(`#props input[name="new_file_type1"][value="l"]`).click()
@ -1379,6 +1419,7 @@
container.appendChild(bottomButtonsContainer) container.appendChild(bottomButtonsContainer)
/* MAP */ /* MAP */
if (map !== undefined && L !== undefined) {
let content = document.querySelector("#content") let content = document.querySelector("#content")
let contentWrapper = document.createElement("div") let contentWrapper = document.createElement("div")
contentWrapper.id = "content-wrapper" contentWrapper.id = "content-wrapper"
@ -1398,6 +1439,7 @@
map.setView(new L.LatLng(parseFloat(lat), parseFloat(lon)), 16) map.setView(new L.LatLng(parseFloat(lat), parseFloat(lon)), 16)
}) })
document.querySelector("#map_controls").appendChild(panToCenter) document.querySelector("#map_controls").appendChild(panToCenter)
}
/* DIALOG */ /* DIALOG */
let dialog = document.createElement("dialog") let dialog = document.createElement("dialog")