import { storeData, clearData, retrieveData, createStorageObj, } from "./storage.js"; import { loadTemplate } from "./web.js"; import parseFormOnSubmit from "./parseForm.js"; import { modalNotifier } from "./evts.js"; function buildFile() { createStorageObj(); //set current page value in activeState object activeState.activePage = "files"; //set templateFiles array let tF = JSON.parse(retrieveData("templateFiles")); if (tF == null || tF.length == 0) { //console.log("none yet"); modalNotifier("there are no saved texts yet"); return; } if (screen.width < 993) { document.getElementById("siteTitle").innerHTML = "Saved files"; } else { document.getElementById("siteTitle").innerHTML = "TG"; } //hide set Form button document.getElementById("setFormButton").style.display = "none"; //reset page and event listeners let mainFormDiv = document.getElementById("mainForm"); let outputDiv = document.getElementById("output"); let submitContainerDiv = document.getElementById("submitContainer"); let sidebarDiv = document.getElementById("sidebar"); mainFormDiv.innerHTML = ""; mainFormDiv.replaceWith(mainFormDiv.cloneNode(true)); outputDiv.innerHTML = ""; outputDiv.replaceWith(outputDiv.cloneNode(true)); submitContainerDiv.innerHTML = ""; submitContainerDiv.replaceWith(submitContainerDiv.cloneNode(true)); sidebarDiv.innerHTML = ""; sidebarDiv.replaceWith(sidebarDiv.cloneNode(true)); document.getElementById("mainForm").innerHTML = mainFormPlaceholder(); document.getElementById("sidebar").appendChild(loadFileSidebar(tF)); document.getElementById("sidebar").addEventListener("click", (e) => { if (e.target && e.target.matches("li.w3-bar-item")) { let fileName = e.target.dataset.file; let template = e.target.dataset.template; clickLoadFileDiv(fileName, template); } }); } function loadFileDiv(fileName, template) { activeState.fileName = fileName; activeState.loadedTemplate = template; storeData("userInputForce", retrieveData(fileName, template)); loadTemplate(template, false, true); } function loadFileDivCallBack() { let tF = JSON.parse(retrieveData("templateFiles")); document.getElementById("sidebar").appendChild(loadFileSidebar(tF)); let lT = activeState.loadedTemplate; let fN = activeState.fileName; let storageName = fN + "_m21_" + lT; let fileDisplay = document.createElement("DIV"); fileDisplay.classList.add( "w3-row-padding", "w3-padding-24", "w3-container", "w3-flat-clouds" ); fileDisplay.id = "fileDisplayWrapper"; //start building submitContainer with edit copy and delete let editButton = document.createElement("input"); editButton.setAttribute("type", "submit"); editButton.setAttribute("value", "Edit"); editButton.classList.add("w3-button"); editButton.classList.add("w3-grey"); document.getElementById("submitContainer").appendChild(editButton); document .getElementById("submitContainer") .appendChild(document.createTextNode(" ")); let copyButton = document.createElement("input"); copyButton.setAttribute("type", "submit"); copyButton.setAttribute("value", "Copy"); copyButton.classList.add("w3-button"); copyButton.classList.add("w3-grey"); document.getElementById("submitContainer").appendChild(copyButton); document .getElementById("submitContainer") .appendChild(document.createTextNode(" ")); let deleteButton = document.createElement("input"); deleteButton.setAttribute("type", "submit"); deleteButton.setAttribute("value", "Delete"); deleteButton.classList.add("w3-button"); deleteButton.classList.add("w3-red"); document.getElementById("submitContainer").appendChild(deleteButton); if (screen.width > 992) { document.getElementById("siteTitle").innerHTML = lT.replace(/_/g, " "); } else { document.getElementById("siteTitle").innerHTML = "TG"; } let title = document.createElement("div"); title.classList.add("w3-panel"); let titleText = document.createElement("h2"); titleText.innerText = fN.replace(/_/g, " "); titleText.style.margin = "0px"; title.appendChild(titleText); fileDisplay.appendChild(title); let div = document.createElement("div"); div.appendChild(parseFormOnSubmit(false, true)); fileDisplay.appendChild(div); document.getElementById("mainForm").appendChild(fileDisplay); //add events formEvts(storageName); } function clickLoadFileDiv(fileName, template) { if (fileName == "_overflow") return; if (fileName == "_clearAll") { clearAllFiles(); return; } document.getElementById("mainForm").innerHTML = ""; loadFileDiv(fileName, template); } function clearFileData(storData) { let fileName = storData.split("_m21_")[0]; let tF = JSON.parse(retrieveData("templateFiles")); let newArray = []; for (let obj of tF) { if (obj.fileName != fileName) { newArray.push(obj); } } storeData("templateFiles", JSON.stringify(newArray)); clearData(fileName); clearData("userInput"); document.getElementById("mainForm").innerHTML = ""; document.getElementById("output").innerHTML = ""; document.getElementById("submitContainer").innerHTML = ""; document.getElementById("sidebar").innerHTML = ""; document.getElementById("mainForm").innerHTML = mainFormPlaceholder(); document.getElementById("sidebar").appendChild(loadFileSidebar(newArray)); } function loadFileSidebar(tF) { let sidebarList = document.createElement("ul"); sidebarList.classList.add("w3-ul"); let c = 0; let sidebarItemsAmount = 10; let sidebarListItem; for (let obj of tF.reverse()) { sidebarListItem = document.createElement("li"); sidebarListItem.classList.add( "w3-bar-item", "w3-padding-large", "w3-button" ); sidebarListItem.style.borderBottom = "1px solid #ddd"; sidebarListItem.id = "sb-" + obj.fileName.replace(/:/g, "_"); if (c > sidebarItemsAmount) { sidebarListItem.setAttribute("data-template", '_overflow'); sidebarListItem.setAttribute("data-file", '_overflow'); sidebarListItem.classList.add("w3-flat-clouds"); sidebarListItem.classList.remove("w3-button"); sidebarListItem.style.borderRight = "1px solid rgb(221, 221, 221)" sidebarListItem.innerHTML = tF.length - sidebarItemsAmount + " files not shown"; sidebarList.appendChild(sidebarListItem); break; } sidebarListItem.innerHTML = obj.fileName.replace(/_/g, " "); sidebarListItem.setAttribute("data-file", obj.fileName); sidebarListItem.setAttribute("data-template", obj.template); sidebarList.appendChild(sidebarListItem); c++; } sidebarListItem = document.createElement("li"); sidebarListItem.classList.add( "w3-bar-item", "w3-padding-large", "w3-button" ); sidebarListItem.style.borderBottom = "1px solid #ddd"; sidebarListItem.setAttribute("data-template", '_clearAll'); sidebarListItem.setAttribute("data-file", '_clearAll'); sidebarListItem.classList.add("w3-flat-pomegranate", "w3-bottom"); sidebarListItem.style.borderRight = "1px solid rgb(221, 221, 221)"; sidebarListItem.style.width = "300px"; sidebarListItem.innerHTML = "Clear all files"; sidebarList.appendChild(sidebarListItem); return sidebarList; } function mainFormPlaceholder(msg = "Select a file") { return "
" + msg + "