From 884fc7088f7b3de6a7dabecf72906c0f613efeeb Mon Sep 17 00:00:00 2001 From: Zhora Shalyapin Date: Thu, 13 Mar 2025 09:26:07 +0000 Subject: [PATCH] send history files to server --- main.js | 57 +++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/main.js b/main.js index e98fd49..f49db68 100644 --- a/main.js +++ b/main.js @@ -16,12 +16,23 @@ 'use strict'; let fileInputs = { - "attachment1": "legend_photo", - "attachment4": "legend_files", + "attachment1": { + "l": "legend_photo", + "h": "history_photo" + }, + "attachment4": { + "l": "legend_files", + "h": "history_files" + }, "attachment2": "admin_photo", "attachment3": "admin_files" } + let fileInpitVariants = { + "l": "для легенды", + "h": "для ист. справки" + } + const localStorageItems = { NEED_UPDATE_ID: "needUpdateId", JUST_CREATED: "justCreated", @@ -231,10 +242,11 @@ return downloadLink } - async function sendFileDeleted(inputName) { + async function sendFileDeleted(inputName, fileInputVariant = null) { let formData = new FormData() - let normalInputName = fileInputs[inputName] + console.log(fileInputs[fileInputVariant]) + let normalInputName = fileInputVariant !== null ? fileInputs[inputName][fileInputVariant] : fileInputs[inputName] formData.set(`cp[id]`, document.querySelector("input[name='cp[id]']").value) formData.set(`cp[${normalInputName}]`, "-1") let result = await updatePoint(formData) @@ -246,17 +258,25 @@ } } - function addDisplayedFile(inputName, type, file, preview, removeLink, purpose = null) { + function parsePurpose(cell) { + return cell?.querySelector("td:nth-child(2)")?.innerHTML.match(/для[^\|]+/g)?.[0].trim() + } + + function parsefileInputVariant(cell) { + return Object.keys(fileInpitVariants).find(key => fileInpitVariants[key] === parsePurpose(cell)) + } + + function addDisplayedFile(inputName, type, file, preview, removeLink, variant = null) { if (!inputName || !file || !removeLink) return let fileListContainer - if (purpose !== null) { + if (variant !== null) { if (inputName == "attachment1" || inputName == "attachment4") { - if (purpose == "для легенды") { - let fileContainerClassName = fileInputs[inputName].replace("_", "-") + if (variant == "l") { + let fileContainerClassName = fileInputs[inputName][variant].replace("_", "-") fileListContainer = document.querySelector(`.${fileContainerClassName}-container .file-list-container`) } - else if (purpose == "для ист. справки") { + else if (variant == "h") { let filesContainer = document.querySelector(inputName == "attachment1" ? `.history-photo-container` : `.history-files-container`) fileListContainer = filesContainer.querySelector(`.file-list-container`) if (fileListContainer == null) { @@ -307,7 +327,7 @@ if (!confirm("Точно?")) return await fetch(removeLink) - await sendFileDeleted(inputName) + await sendFileDeleted(inputName, variant) removedFilesLinks.push(removeLink) fileListContainer.removeChild(fileContainer) @@ -371,7 +391,7 @@ let fileListContainer = this.parentElement.parentElement.querySelector(".file-list-container") let fileContainer = document.createElement("div") - fileContainer.classList.add("file-container") + fileContainer.classList.add("file-container", "file-container-new") const displayedFile = getHtmlElementByFileType(file) displayedFile.classList.add("preview") @@ -522,9 +542,9 @@ return } - let purpose = row.querySelector("td:nth-child(2)")?.innerHTML.match(/для[^\|]+/g)?.[0].trim() + let variant = parsefileInputVariant(row) - addDisplayedFile(fileInput, type, fileUrl, preview, deleteUrl, purpose) + addDisplayedFile(fileInput, type, fileUrl, preview, deleteUrl, variant) } } } @@ -672,10 +692,10 @@ 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 fileListContainers = [...document.querySelectorAll(".file-list-container")] + let fileInputNames = ["legend_photo", "history_photo", "legend_files", "history_files", "admin_photo", "admin_files"] + for (let [i, fileListContainer] of fileListContainers.entries()) { + formData.set(`cp[${fileInputNames[i]}]`, [...fileListContainer.children].filter(el => !el.classList.contains("file-container-new")).length) } if (formData.get("cp[id]") == '') { @@ -770,12 +790,13 @@ for (const link of links) { let shortHref = link.href.split("/").at(-1) let fileInput = document.querySelector(`tr:has(a[href$="${shortHref}"]) ~ tr:has(input[type="file"]) input[type="file"]`) + let fileInputVariant = parsefileInputVariant(document.querySelector(`tr:has(a[href$="${shortHref}"])`)) link.addEventListener("click", async e => { e.preventDefault() if (!confirm("Точно?")) return - await sendFileDeleted(fileInput.name.split("[")[0]) + await sendFileDeleted(fileInput.name.split("[")[0], fileInputVariant) location.href = link.href }) }