separate functions

This commit is contained in:
Zhora Shalyapin 2025-03-13 15:40:27 +00:00
parent 047c1046c2
commit 52bcc73b25

803
main.js
View File

@ -136,6 +136,12 @@
document.head.appendChild(script) document.head.appendChild(script)
} }
function addStylesToHead(styles) {
let styleSheet = document.createElement("style")
styleSheet.textContent = styles
document.head.appendChild(styleSheet)
}
const sleep = ms => new Promise(res => setTimeout(res, ms)); const sleep = ms => new Promise(res => setTimeout(res, ms));
function isEditCpPage() { function isEditCpPage() {
@ -642,8 +648,6 @@
alwaysPrettify.appendChild(alwaysPrettifyCheckbox) alwaysPrettify.appendChild(alwaysPrettifyCheckbox)
i++
return alwaysPrettify return alwaysPrettify
} }
@ -820,6 +824,45 @@
saveAndStayButtons.forEach(el => el.after(createSaveAndNewButton())) saveAndStayButtons.forEach(el => el.after(createSaveAndNewButton()))
} }
function redirectIfNeeded() {
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)
updatePoint(formData).then(() => localStorage.removeItem(localStorageItems.NEED_UPDATE_ID))
}
if (exit) {
localStorage.removeItem(localStorageItems.REDIRECT_EXIT)
location.href = location.href.replace(location.search, '')
return
}
if (justCreated !== null) {
localStorage.setItem(localStorageItems.PREV_CREATED, justCreated)
localStorage.removeItem(localStorageItems.JUST_CREATED)
location.href = location.href.replace(location.search, "?action=edit")
return
}
if (prevCreated !== null) {
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(localStorageItems.PREV_CREATED)
localStorage.removeItem(localStorageItems.LATTITUDE)
localStorage.removeItem(localStorageItems.LONGITUDE)
}
}
function addUglyDeleteListener() { function addUglyDeleteListener() {
let links = [...document.querySelectorAll("a[href*='del_stored']")] let links = [...document.querySelectorAll("a[href*='del_stored']")]
@ -859,6 +902,394 @@
}) })
} }
function getRows() {
return [...document.querySelectorAll('#props > tbody > tr')]
}
function getInsertedFileRows(rows) {
let insertedFileRows = new Map()
let i = 0
while (i < rows.length) {
if ([23, 27, 31, 35].includes(i) && rows[i].querySelector(`input[type="file"]`) == null) {
if (!insertedFileRows.has(i)) {
insertedFileRows.set(i, [rows[i]])
}
else {
let savedRows = insertedFileRows.get(i)
savedRows.push(rows[i])
insertedFileRows.set(i, savedRows)
}
rows.splice(i, 1)
}
else {
i++
}
}
return insertedFileRows
}
function makeContainer() {
let container = document.createElement('div')
container.id = "new"
return container
}
function makeHeader(rows) {
let headerContainer = createFrom(rows, "header", [
{ index: 2, name: "№", desc: "" },
{ index: 8, name: "Название" }
])
let copyLink = document.createElement("div")
copyLink.innerHTML = new Property(rows[2]).desc
headerContainer.append(copyLink)
return headerContainer
}
function bindDeleteButton() {
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)
}
function makeTopAndBottomButtons(rows, form, oldTable, container, insertedFileRows) {
let topButtonsContainer = createFrom(rows, "buttons", [
{ index: 0 }
])
let bottomButtonsContainer = topButtonsContainer.cloneNode(true)
document.querySelectorAll("#props tr:is(:first-child, :last-child) th").forEach((el, index) => {
let rowContentWrapper = document.createElement("div")
rowContentWrapper.classList.add("buttons-row__content-wrapper")
while ([...el.children].length > 0) {
let child = el.firstChild
rowContentWrapper.appendChild(child)
}
let prettifyButton = document.createElement("button")
prettifyButton.type = "button"
prettifyButton.textContent = "Сделать красиво"
prettifyButton.addEventListener("click", () => {
prettify(form, oldTable, container, insertedFileRows)
})
rowContentWrapper.appendChild(prettifyButton)
rowContentWrapper.appendChild(createAlwaysPrettifyInput(index))
el.appendChild(rowContentWrapper)
})
;[topButtonsContainer, bottomButtonsContainer].forEach((el, index) => {
let unglifyButton = document.createElement("button")
unglifyButton.type = "button"
unglifyButton.textContent = "Сделать некрасиво"
unglifyButton.addEventListener("click", () => {
uglify(form, container, oldTable)
})
let topRowContentWrapper = el.querySelector("div > div > div")
topRowContentWrapper.appendChild(unglifyButton)
topRowContentWrapper.appendChild(createAlwaysPrettifyInput(index))
})
return [topButtonsContainer, bottomButtonsContainer]
}
function makeTopOptions(rows) {
return createFrom(rows, "options", [
{ index: 3 },
{ index: 4, name: "КП-загадка" },
{ index: 16, name: "Этапник" },
{ index: 7, name: "Пиктограмма" },
{ index: 12, name: "Нужна ИС" },
{ index: 17, name: "Спрятать ИС" },
{ index: 14, name: "Основной КП" },
{ index: 10, name: "Широта" },
{ index: 11, name: "Долгота" },
{ index: 5, name: "Старт" },
{ index: 6, name: "Финиш" },
{ index: 15, name: "Знак" }
])
}
function makeComment(rows) {
return createFrom(rows, "comment", [
{ index: 9, desc: "" }
])
}
function makeLegend(rows) {
let legendContainer = document.createElement("div")
legendContainer.classList.add("legend-container")
/* LEGEND DESC */
let legendDescContainer = document.createElement("div")
legendDescContainer.classList.add("legend-container__desc")
let legendDescHeader = document.createElement("div")
legendDescHeader.classList.add("legend-container__desc-header")
const LEGEND_RU_LABEL = "Русский"
const LEGEND_EN_LABEL = "Английский"
let legendLang = document.createElement("div")
legendLang.classList.add("legend-desc__lang")
legendLang.textContent = LEGEND_RU_LABEL
legendDescHeader.appendChild(legendLang)
let legendEnSwitchContainer = createFrom(rows, "legend-switch-container", [
{ index: 48 }
])
legendEnSwitchContainer.addEventListener("click", event => {
hide([legendRuDescContainer, legendRuHiddenDescContainer, legendEnSwitchContainer])
show([legendEnDescContainer, legendEnHiddenDescContainer, legendRuSwitchContainer])
legendLang.textContent = LEGEND_EN_LABEL
})
legendDescHeader.appendChild(legendEnSwitchContainer)
let copyDescButton = document.createElement("button")
copyDescButton.type = "button"
copyDescButton.textContent = "Копировать"
copyDescButton.addEventListener("click", () => {
let ruInputs = [...container.querySelectorAll(":is(input, textarea)[name^=\"cp_strings\[ru\]\"]")]
let enInputs = [...container.querySelectorAll(":is(input, textarea)[name^=\"cp_strings\[en\]\"]")]
for (const [i, enInput] of enInputs.entries()) {
enInput.value = ruInputs[i].value
}
})
let legendRuSwitchContainer = createFrom(rows, "legend-switch-container hidden", [
{ index: 39 }
])
legendRuSwitchContainer.addEventListener("click", event => {
hide([legendEnDescContainer, legendEnHiddenDescContainer, legendRuSwitchContainer])
show([legendRuDescContainer, legendRuHiddenDescContainer, legendEnSwitchContainer])
legendLang.textContent = LEGEND_RU_LABEL
})
legendDescHeader.appendChild(legendRuSwitchContainer)
legendDescHeader.appendChild(copyDescButton)
let legendRuDescContainer = createFrom(rows, "legend-desc", [
{ index: 40, desc: "" },
{ index: 41, desc: "" },
{ index: 42, desc: "" },
{ index: 43, desc: "" }
])
let legendRuHiddenDescContainer = createFrom(rows, "legend-desc collapsible collapsed", [
{ index: 44, desc: "" },
{ index: 45, desc: "" },
{ index: 46, desc: "" },
{ index: 47, desc: "" },
])
let legendEnDescContainer = createFrom(rows, "legend-desc hidden", [
{ index: 49, desc: "" },
{ index: 50, desc: "" },
{ index: 51, desc: "" },
{ index: 52, desc: "" }
])
let legendEnHiddenDescContainer = createFrom(rows, "legend-desc collapsible collapsed hidden", [
{ index: 53, desc: "" },
{ index: 54, desc: "" },
{ index: 55, desc: "" },
{ index: 56, desc: "" }
])
let hider = document.createElement("div")
let hiderButton = document.createElement("button")
hiderButton.classList.add("collapse-button")
hiderButton.setAttribute("type", "button")
hiderButton.addEventListener("click", event => {
container.querySelectorAll(".legend-desc.collapsible").forEach(element => {
element.classList.toggle("collapsed")
})
})
hider.appendChild(hiderButton)
legendDescContainer.appendChild(legendDescHeader)
legendDescContainer.appendChild(legendRuDescContainer)
legendDescContainer.appendChild(legendRuHiddenDescContainer)
legendDescContainer.appendChild(legendEnDescContainer)
legendDescContainer.appendChild(legendEnHiddenDescContainer)
legendDescContainer.appendChild(hider)
legendContainer.appendChild(legendDescContainer)
return legendContainer
}
function chooseLegendAsDefaultVariant() {
document.querySelector(`#props input[name="new_file_type1"][value="l"]`).click()
document.querySelector(`#props input[name="new_file_type4"][value="l"]`).click()
}
function makeLegendFiles(rows) {
let legendFilesContainer = document.createElement("div")
legendFilesContainer.classList.add("legend-container__files")
let imagesForLegendContainer = createFrom(rows, "files-container legend-photo-container", [
{ index: 23, name: "Фото в легенде" }
])
legendFilesContainer.appendChild(imagesForLegendContainer)
let imagesForHistoryContainer = createFrom(rows, "files-container history-photo-container", [
{ name: "Фото для ИС" }
])
legendFilesContainer.appendChild(imagesForHistoryContainer)
let audioForLegendContainer = createFrom(rows, "files-container legend-files-container", [
{ index: 27, name: "Файлы в легенде" }
])
legendFilesContainer.appendChild(audioForLegendContainer)
let audioForHistoryContainer = createFrom(rows, "files-container history-files-container", [
{ name: "Файлы для ИС" }
])
legendFilesContainer.appendChild(audioForHistoryContainer)
return legendFilesContainer
}
function makeAdminFiles(rows) {
let adminFilesContainer = document.createElement('div')
adminFilesContainer.classList.add('admin-files-container')
let imagesForAdminContainer = createFrom(rows, "files-container admin-photo-container", [
{ index: 31, name: "Фото в админке" }
])
adminFilesContainer.appendChild(imagesForAdminContainer)
let audioForAdminContainer = createFrom(rows, "files-container admin-files-container", [
{ index: 35, name: "Файлы в админке" }
])
adminFilesContainer.appendChild(audioForAdminContainer)
return adminFilesContainer
}
function makeBottomOptions(rows) {
return createFromMulti(rows, "options bottom-options", {
from: 59,
to: rows.length - 3
})
}
function makeDialog() {
let dialog = document.createElement("dialog")
dialog.id = "dialog"
document.body.appendChild(dialog)
dialog.addEventListener("click", e => {
if (e.target == dialog) {
e.target.close()
}
})
dialog.addEventListener("close", e => {
e.target.innerHTML = ""
})
}
function formatMap() {
if (map !== undefined && L !== undefined) {
let content = document.querySelector("#content")
let contentWrapper = document.createElement("div")
contentWrapper.id = "content-wrapper"
contentWrapper.appendChild(document.querySelector("form"))
contentWrapper.appendChild(document.querySelector("#map-wrapper"))
content.appendChild(contentWrapper)
let panToCenter = document.createElement("button")
panToCenter.type = "button"
panToCenter.textContent = "В центр"
panToCenter.addEventListener("click", () => {
let lat = document.querySelector("input[name=\"cp\[lattitude\]\"").value
let lon = document.querySelector("input[name=\"cp\[longitude\]\"").value
map.setView(new L.LatLng(parseFloat(lat), parseFloat(lon)), 16)
})
document.querySelector("#map_controls").appendChild(panToCenter)
}
}
function checkIfAlwaysPrettify(form, oldTable, container, insertedFileRows) {
if (localStorage.getItem(localStorageItems.ALWAYS_PRETTIFY)) {
document.querySelector(`input[name^="always-prettify-0"]`).click()
prettify(form, oldTable, container, insertedFileRows)
}
}
function prettifyEditCpPage() {
addCss("https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css")
addCss("https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css")
/* NEW DEFALUT VALUES */
chooseLegendAsDefaultVariant()
/* CONTAINER */
let form = document.querySelector('form')
let rows = getRows()
let insertedFileRows = getInsertedFileRows(rows)
let container = makeContainer()
let oldTable = document.querySelector("#props")
/* HEADER */
let headerContainer = makeHeader(rows)
/* TOP BUTTONS */
let [topButtonsContainer, bottomButtonsContainer] = makeTopAndBottomButtons(rows, form, oldTable, container, insertedFileRows)
addUglyDeleteListener()
createSendButtons()
/* LEGEND */
let legendContainer = makeLegend(rows)
legendContainer.appendChild(makeLegendFiles(rows))
/* APPEND ALL */
container.appendChild(topButtonsContainer)
container.appendChild(headerContainer)
container.appendChild(makeTopOptions(rows))
container.appendChild(makeComment(rows))
container.appendChild(legendContainer)
container.appendChild(makeAdminFiles(rows))
container.appendChild(makeBottomOptions(rows))
container.appendChild(bottomButtonsContainer)
/* MAP */
formatMap()
/* DIALOG */
makeDialog()
/* PRETTIFY CHECKBOX */
checkIfAlwaysPrettify(form, oldTable, container, insertedFileRows)
}
let styles = ` let styles = `
#props caption { #props caption {
position: sticky; position: sticky;
@ -1200,64 +1631,16 @@
/* REDIRECTS */ /* REDIRECTS */
let justCreated = localStorage.getItem(localStorageItems.JUST_CREATED) redirectIfNeeded()
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)
updatePoint(formData).then(() => localStorage.removeItem(localStorageItems.NEED_UPDATE_ID))
}
if (exit) {
localStorage.removeItem(localStorageItems.REDIRECT_EXIT)
location.href = location.href.replace(location.search, '')
return
}
if (justCreated !== null) {
localStorage.setItem(localStorageItems.PREV_CREATED, justCreated)
localStorage.removeItem(localStorageItems.JUST_CREATED)
location.href = location.href.replace(location.search, "?action=edit")
return
}
if (prevCreated !== null) {
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(localStorageItems.PREV_CREATED)
localStorage.removeItem(localStorageItems.LATTITUDE)
localStorage.removeItem(localStorageItems.LONGITUDE)
}
/* HEAD */ /* HEAD */
let styleSheet = document.createElement("style") addStylesToHead(styles)
styleSheet.textContent = styles
document.head.appendChild(styleSheet)
/* SWITCH FOR DIFFERENT PAGES */ /* SWITCH FOR DIFFERENT PAGES */
if (isDeleteCpPage()) { if (isDeleteCpPage()) {
let deleteButton = document.querySelector(`input[name="delete_go"]`) bindDeleteButton()
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 return
} }
@ -1272,317 +1655,5 @@
return return
} }
/* action=edit HEAD */ prettifyEditCpPage()
addCss("https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css")
addCss("https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css")
/* NEW DEFALUT VALUES */
document.querySelector(`#props input[name="new_file_type1"][value="l"]`).click()
document.querySelector(`#props input[name="new_file_type4"][value="l"]`).click()
/* CONTAINER */
let form = document.querySelector('form')
let rows = [...document.querySelectorAll('#props > tbody > tr')]
let insertedFileRows = new Map()
let i = 0
while (i < rows.length) {
if ([23, 27, 31, 35].includes(i) && rows[i].querySelector(`input[type="file"]`) == null) {
if (!insertedFileRows.has(i)) {
insertedFileRows.set(i, [rows[i]])
}
else {
let savedRows = insertedFileRows.get(i)
savedRows.push(rows[i])
insertedFileRows.set(i, savedRows)
}
rows.splice(i, 1)
}
else {
i++
}
}
let container = document.createElement('div')
container.id = "new"
let oldTable = document.querySelector("#props")
/* HEADER */
let headerContainer = createFrom(rows, "header", [
{ index: 2, name: "№", desc: "" },
{ index: 8, name: "Название" }
])
let copyLink = document.createElement("div")
copyLink.innerHTML = new Property(rows[2]).desc
headerContainer.append(copyLink)
/* TOP BUTTONS */
let topButtonsContainer = createFrom(rows, "buttons", [
{ index: 0 }
])
let bottomButtonsContainer = topButtonsContainer.cloneNode(true)
document.querySelectorAll("#props tr:is(:first-child, :last-child) th").forEach((el, index) => {
let rowContentWrapper = document.createElement("div")
rowContentWrapper.classList.add("buttons-row__content-wrapper")
while ([...el.children].length > 0) {
let child = el.firstChild
rowContentWrapper.appendChild(child)
}
let prettifyButton = document.createElement("button")
prettifyButton.type = "button"
prettifyButton.textContent = "Сделать красиво"
prettifyButton.addEventListener("click", () => {
prettify(form, oldTable, container, insertedFileRows)
})
rowContentWrapper.appendChild(prettifyButton)
rowContentWrapper.appendChild(createAlwaysPrettifyInput(index))
el.appendChild(rowContentWrapper)
})
;[topButtonsContainer, bottomButtonsContainer].forEach((el, index) => {
let unglifyButton = document.createElement("button")
unglifyButton.type = "button"
unglifyButton.textContent = "Сделать некрасиво"
unglifyButton.addEventListener("click", () => {
uglify(form, container, oldTable)
})
let topRowContentWrapper = el.querySelector("div > div > div")
topRowContentWrapper.appendChild(unglifyButton)
topRowContentWrapper.appendChild(createAlwaysPrettifyInput(index))
})
addUglyDeleteListener()
createSendButtons()
/* OPTIONS */
let firstContainer = createFrom(rows, "options", [
{ index: 3 },
{ index: 4, name: "КП-загадка" },
{ index: 16, name: "Этапник" },
{ index: 7, name: "Пиктограмма" },
{ index: 12, name: "Нужна ИС" },
{ index: 17, name: "Спрятать ИС" },
{ index: 14, name: "Основной КП" },
{ index: 10, name: "Широта" },
{ index: 11, name: "Долгота" },
{ index: 5, name: "Старт" },
{ index: 6, name: "Финиш" },
{ index: 15, name: "Знак" }
])
let commentContainer = createFrom(rows, "comment", [
{ index: 9, desc: "" }
])
/* LEGEND */
let legendContainer = document.createElement("div")
legendContainer.classList.add("legend-container")
/* LEGEND DESC */
let legendDescContainer = document.createElement("div")
legendDescContainer.classList.add("legend-container__desc")
let legendDescHeader = document.createElement("div")
legendDescHeader.classList.add("legend-container__desc-header")
const LEGEND_RU_LABEL = "Русский"
const LEGEND_EN_LABEL = "Английский"
let legendLang = document.createElement("div")
legendLang.classList.add("legend-desc__lang")
legendLang.textContent = LEGEND_RU_LABEL
legendDescHeader.appendChild(legendLang)
let legendEnSwitchContainer = createFrom(rows, "legend-switch-container", [
{ index: 48 }
])
legendEnSwitchContainer.addEventListener("click", event => {
hide([legendRuDescContainer, legendRuHiddenDescContainer, legendEnSwitchContainer])
show([legendEnDescContainer, legendEnHiddenDescContainer, legendRuSwitchContainer])
legendLang.textContent = LEGEND_EN_LABEL
})
legendDescHeader.appendChild(legendEnSwitchContainer)
let copyDescButton = document.createElement("button")
copyDescButton.type = "button"
copyDescButton.textContent = "Копировать"
copyDescButton.addEventListener("click", () => {
let ruInputs = [...container.querySelectorAll(":is(input, textarea)[name^=\"cp_strings\[ru\]\"]")]
let enInputs = [...container.querySelectorAll(":is(input, textarea)[name^=\"cp_strings\[en\]\"]")]
for (const [i, enInput] of enInputs.entries()) {
enInput.value = ruInputs[i].value
}
})
let legendRuSwitchContainer = createFrom(rows, "legend-switch-container hidden", [
{ index: 39 }
])
legendRuSwitchContainer.addEventListener("click", event => {
hide([legendEnDescContainer, legendEnHiddenDescContainer, legendRuSwitchContainer])
show([legendRuDescContainer, legendRuHiddenDescContainer, legendEnSwitchContainer])
legendLang.textContent = LEGEND_RU_LABEL
})
legendDescHeader.appendChild(legendRuSwitchContainer)
legendDescHeader.appendChild(copyDescButton)
let legendRuDescContainer = createFrom(rows, "legend-desc", [
{ index: 40, desc: "" },
{ index: 41, desc: "" },
{ index: 42, desc: "" },
{ index: 43, desc: "" }
])
let legendRuHiddenDescContainer = createFrom(rows, "legend-desc collapsible collapsed", [
{ index: 44, desc: "" },
{ index: 45, desc: "" },
{ index: 46, desc: "" },
{ index: 47, desc: "" },
])
let legendEnDescContainer = createFrom(rows, "legend-desc hidden", [
{ index: 49, desc: "" },
{ index: 50, desc: "" },
{ index: 51, desc: "" },
{ index: 52, desc: "" }
])
let legendEnHiddenDescContainer = createFrom(rows, "legend-desc collapsible collapsed hidden", [
{ index: 53, desc: "" },
{ index: 54, desc: "" },
{ index: 55, desc: "" },
{ index: 56, desc: "" }
])
let hider = document.createElement("div")
let hiderButton = document.createElement("button")
hiderButton.classList.add("collapse-button")
hiderButton.setAttribute("type", "button")
hiderButton.addEventListener("click", event => {
container.querySelectorAll(".legend-desc.collapsible").forEach(element => {
element.classList.toggle("collapsed")
})
})
hider.appendChild(hiderButton)
legendDescContainer.appendChild(legendDescHeader)
legendDescContainer.appendChild(legendRuDescContainer)
legendDescContainer.appendChild(legendRuHiddenDescContainer)
legendDescContainer.appendChild(legendEnDescContainer)
legendDescContainer.appendChild(legendEnHiddenDescContainer)
legendDescContainer.appendChild(hider)
legendContainer.appendChild(legendDescContainer)
/* LEGEND FILES */
let legendFilesContainer = document.createElement("div")
legendFilesContainer.classList.add("legend-container__files")
let imagesForLegendContainer = createFrom(rows, "files-container legend-photo-container", [
{ index: 23, name: "Фото в легенде" }
])
legendFilesContainer.appendChild(imagesForLegendContainer)
let imagesForHistoryContainer = createFrom(rows, "files-container history-photo-container", [
{ name: "Фото для ИС" }
])
legendFilesContainer.appendChild(imagesForHistoryContainer)
let audioForLegendContainer = createFrom(rows, "files-container legend-files-container", [
{ index: 27, name: "Файлы в легенде" }
])
legendFilesContainer.appendChild(audioForLegendContainer)
let audioForHistoryContainer = createFrom(rows, "files-container history-files-container", [
{ name: "Файлы для ИС" }
])
legendFilesContainer.appendChild(audioForHistoryContainer)
legendContainer.appendChild(legendFilesContainer)
let adminFilesContainer = document.createElement('div')
adminFilesContainer.classList.add('admin-files-container')
let imagesForAdminContainer = createFrom(rows, "files-container admin-photo-container", [
{ index: 31, name: "Фото в админке" }
])
adminFilesContainer.appendChild(imagesForAdminContainer)
let audioForAdminContainer = createFrom(rows, "files-container admin-files-container", [
{ index: 35, name: "Файлы в админке" }
])
adminFilesContainer.appendChild(audioForAdminContainer)
/* BOTTOM OPTIONS */
let bottomOptionsContainer = createFromMulti(rows, "options bottom-options", {
from: 59,
to: rows.length - 3
})
/* APPEND ALL */
container.appendChild(topButtonsContainer)
container.appendChild(headerContainer)
container.appendChild(firstContainer)
container.appendChild(commentContainer)
container.appendChild(legendContainer)
container.appendChild(adminFilesContainer)
container.appendChild(bottomOptionsContainer)
container.appendChild(bottomButtonsContainer)
/* MAP */
if (map !== undefined && L !== undefined) {
let content = document.querySelector("#content")
let contentWrapper = document.createElement("div")
contentWrapper.id = "content-wrapper"
contentWrapper.appendChild(document.querySelector("form"))
contentWrapper.appendChild(document.querySelector("#map-wrapper"))
content.appendChild(contentWrapper)
let panToCenter = document.createElement("button")
panToCenter.type = "button"
panToCenter.textContent = "В центр"
panToCenter.addEventListener("click", () => {
let lat = document.querySelector("input[name=\"cp\[lattitude\]\"").value
let lon = document.querySelector("input[name=\"cp\[longitude\]\"").value
map.setView(new L.LatLng(parseFloat(lat), parseFloat(lon)), 16)
})
document.querySelector("#map_controls").appendChild(panToCenter)
}
/* DIALOG */
let dialog = document.createElement("dialog")
dialog.id = "dialog"
document.body.appendChild(dialog)
dialog.addEventListener("click", e => {
if (e.target == dialog) {
e.target.close()
}
})
dialog.addEventListener("close", e => {
e.target.innerHTML = ""
})
/* PRETTIFY CHECKBOX */
if (localStorage.getItem(localStorageItems.ALWAYS_PRETTIFY)) {
document.querySelector(`input[name^="always-prettify-0"]`).click()
prettify(form, oldTable, container, insertedFileRows)
}
})(); })();