diff --git a/js/2.0.2/createTemplate.js b/js/2.0.2/createTemplate.js index a399bf0..6f6f028 100644 --- a/js/2.0.2/createTemplate.js +++ b/js/2.0.2/createTemplate.js @@ -39,7 +39,10 @@ function createTemplate(template = false) { let outputDiv = document.getElementById("output"); let submitContainerDiv = document.getElementById("submitContainer"); let sidebarDiv = document.getElementById("sidebar"); - + let fileInfoDiv = document.getElementById("outputInfo"); + + fileInfoDiv.innerHTML = ""; + fileInfoDiv.replaceWith(fileInfoDiv.cloneNode(true)); mainFormDiv.innerHTML = ""; mainFormDiv.replaceWith(mainFormDiv.cloneNode(true)); outputDiv.innerHTML = ""; diff --git a/js/2.0.2/files.js b/js/2.0.2/files.js index 54b7e85..27c7330 100644 --- a/js/2.0.2/files.js +++ b/js/2.0.2/files.js @@ -88,28 +88,6 @@ function loadFileDiv(fileName, template, pos) { storeData("userInputForce", retrieveData(fileName, template)); loadTemplate(template, false, true); - - //append TS info - let fileInfoDiv = document.getElementById("outputInfo"); - let tF = retrieveData("templateFiles"); - - console.log(tF[pos].metadata.ts_save.current_date); - - let tsCreate = tF[pos].metadata.ts_create; - tsCreate = tsCreate.current_time_long+" "+tsCreate.current_date+"."+tsCreate.current_year; - let created = ""; - if (tsCreate != undefined) { - created = "created at: "+tsCreate; - } - - let tsSave = tF[pos].metadata.ts_save; - tsSave = tsSave.current_time_long+" "+tsSave.current_date+"."+tsSave.current_year; - let lastSaved = ""; - if (tF[pos].metadata.ts_save != "") { - lastSaved = " | last saved at: "+tsSave; - } - fileInfoDiv.innerHTML = "
"+created+lastSaved+" | template: "+template+"
"; - fileInfoDiv.style.display = "block"; } @@ -180,12 +158,42 @@ function loadFileDivCallBack() { fileDisplay.appendChild(div); - let ts = document.createElement("p"); - ts.innerHTML = "" - - //fileDisplay.appendChild(ts); document.getElementById("mainForm").appendChild(fileDisplay); + //append TS info + let fileInfoDiv = document.getElementById("outputInfo"); + + let pos = ""; + tF = retrieveData("templateFiles") + for (let tFi of tF) { + if (tFi.fileName == fN) { + pos = parseInt(tFi.pos); + } + } + + let tsCreate = tF[pos].metadata.ts_create; + tsCreate = tsCreate.current_time_long+" "+tsCreate.current_date+"."+tsCreate.current_year; + let created = ""; + if (tF[pos].metadata.ts_create != undefined) { + created = "Created at: "+tsCreate+"
"; + } + + let tsSave = tF[pos].metadata.ts_save; + tsSave = tsSave.current_time_long+" "+tsSave.current_date+"."+tsSave.current_year; + let lastSaved = ""; + if (tF[pos].metadata.ts_save != "") { + lastSaved = "Last saved at: "+tsSave+"
"; + } + + let tsCopy = tF[pos].metadata.ts_copy; + tsCopy = tsCopy.current_time_long+" "+tsCopy.current_date+"."+tsCopy.current_year; + let lastCopy = ""; + if (tF[pos].metadata.ts_copy != "") { + lastCopy = "Last copied at: "+tsCopy+"
"; + } + fileInfoDiv.innerHTML = "Fileinformation:
"+created+lastSaved+lastCopy+"Template: "+lT+"
"; + fileInfoDiv.style.display = "block"; + //fix min height of file display try { document.getElementById("fileDisplay").style.cssText = "min-height: 300px;"; @@ -227,6 +235,7 @@ function clearFileData(storData) { document.getElementById("mainForm").innerHTML = ""; document.getElementById("output").innerHTML = ""; + document.getElementById("outputInfo").innerHTML = ""; document.getElementById("submitContainer").innerHTML = ""; document.getElementById("sidebar").innerHTML = ""; document.getElementById("mainForm").innerHTML = mainFormPlaceholder(); diff --git a/js/2.0.2/form.js b/js/2.0.2/form.js index 58ff37e..b0c15d5 100644 --- a/js/2.0.2/form.js +++ b/js/2.0.2/form.js @@ -80,7 +80,7 @@ function buildForm(templateInput, loadOnly = false) { let outputDiv = document.getElementById("output"); let submitContainerDiv = document.getElementById("submitContainer"); let sidebarDiv = document.getElementById("sidebar"); - //sidebarDiv.replaceWith(sidebarDiv.cloneNode(true)); + let fileInfoDiv = document.getElementById("outputInfo"); mainFormDiv.innerHTML = ""; mainFormDiv.replaceWith(mainFormDiv.cloneNode(true)); @@ -89,6 +89,9 @@ function buildForm(templateInput, loadOnly = false) { submitContainerDiv.innerHTML = ""; submitContainerDiv.replaceWith(submitContainerDiv.cloneNode(true)); sidebarDiv.innerHTML = ""; + fileInfoDiv.innerHTML = ""; + fileInfoDiv.replaceWith(fileInfoDiv.cloneNode(true)); + fileInfoDiv.style.display = "none"; //finally build html code for Form and siddebar and add it to dom if needed if (loadOnly) {return}; @@ -221,7 +224,7 @@ function formEvts() { if (e.target && e.target.tagName === "INPUT") { switch (e.target.value) { case "Copy": - createStorageObj(); + createStorageObj("copy"); parseFormOnSubmit(); e.target.className = e.target.className.replace(" w3-grey", " w3-flat-carrot"); e.target.style.pointerEvents = "none"; @@ -234,7 +237,7 @@ function formEvts() { }, 5000); break; case "Save": - createStorageObj(); + createStorageObj("save"); e.target.className = e.target.className.replace(" w3-grey", " w3-flat-nephritis"); e.target.style.pointerEvents = "none"; modalNotifier(activeState.fileName + " saved", activeState.settings.notifierPause); @@ -253,10 +256,12 @@ function formEvts() { document.getElementById("sidebar").addEventListener("click", (e) => { if (e.target) { if (e.target.id == "sb-submit") { + createStorageObj("save"); parseFormOnSubmit(); modalNotifier("File saved and copied to clipboard", activeState.settings.notifierPause); } if (e.target.id == "sb-setform") { + createStorageObj("setform"); let dataArray = parseFormOnSubmit(true); let lT = activeState.loadedTemplate; setTemplatePreset(lT, JSON.stringify(dataArray)); diff --git a/js/2.0.2/init.js b/js/2.0.2/init.js index 4a83506..d865453 100644 --- a/js/2.0.2/init.js +++ b/js/2.0.2/init.js @@ -146,7 +146,7 @@ function eventListeners() { if (activeState.activePage == "template") { inputRead.read(e); if (e.ctrlKey && e.key == "s") { - createStorageObj(); + createStorageObj("copy"); parseFormOnSubmit(); modalNotifier("File copied to clipboard", activeState.settings.notifierPause); let copyButton = document.getElementById("fromCopyBtn"); diff --git a/js/2.0.2/parseForm.js b/js/2.0.2/parseForm.js index 0c6efbf..5083874 100644 --- a/js/2.0.2/parseForm.js +++ b/js/2.0.2/parseForm.js @@ -1,5 +1,4 @@ -import { sanitize } from "./scripts.js"; -import { storeData, clearData, retrieveData } from "./storage.js"; +import { storeData, clearData, retrieveData, setCurrentFileName } from "./storage.js"; function parseFormOnSubmit(returnJSON = false, parseOnly = false) { //event.preventDefault; @@ -25,26 +24,7 @@ function parseFormOnSubmit(returnJSON = false, parseOnly = false) { } } else { - let x = document.getElementById("mainFormObj"); - - if (x != null) { - for (let i = 0; i < x.length; i++) { - dataArray.push({ - value: x.elements[i].value, - name: x.elements[i].name, - }); - } - } - - //set filename to active state according to userFileName field from loadTemplate - let userFileNameField = document.getElementById("userFileName"); - let userFileName = sanitize(userFileNameField.value); - let userFileNamePH = userFileNameField.getAttribute("placeholder"); - if (userFileName.length != 0) { - activeState.fileName = userFileName; - } else if (userFileNamePH != null) { - activeState.fileName = userFileNamePH; - } + dataArray = retrieveData("userInput"); } diff --git a/js/2.0.2/scripts.js b/js/2.0.2/scripts.js index 3b1fa82..f927498 100644 --- a/js/2.0.2/scripts.js +++ b/js/2.0.2/scripts.js @@ -175,7 +175,7 @@ export const inputRead = { i.classList.add("fa", "fa-save"); this.target.appendChild(i); this.lastExecId = setTimeout(() => { - createStorageObj(); + createStorageObj("save"); this.target.style.borderBottom = "none"; this.target.innerHTML = ""; let i = document.createElement("i"); diff --git a/js/2.0.2/settings.js b/js/2.0.2/settings.js index 4a8535e..d411ebb 100644 --- a/js/2.0.2/settings.js +++ b/js/2.0.2/settings.js @@ -32,7 +32,10 @@ const buildSettings = () => { let outputDiv = document.getElementById("output"); let submitContainerDiv = document.getElementById("submitContainer"); let sidebarDiv = document.getElementById("sidebar"); + let fileInfoDiv = document.getElementById("outputInfo"); + fileInfoDiv.innerHTML = ""; + fileInfoDiv.replaceWith(fileInfoDiv.cloneNode(true)); mainFormDiv.innerHTML = ""; mainFormDiv.replaceWith(mainFormDiv.cloneNode(true)); outputDiv.innerHTML = ""; diff --git a/js/2.0.2/storage.js b/js/2.0.2/storage.js index bf0cec5..7782b59 100644 --- a/js/2.0.2/storage.js +++ b/js/2.0.2/storage.js @@ -52,7 +52,7 @@ function debug(mode, key, data) { return data; } -function createStorageObj() { +function createStorageObj(ref = "none") { let x = document.getElementById("mainFormObj"); let dataArray = []; if (x == null) { @@ -66,20 +66,8 @@ function createStorageObj() { } //console.log(this, dataArray); - - let userFileNameField = document.getElementById("userFileName"); - let userFileName = sanitize(userFileNameField.value); - let userFileNamePH = userFileNameField.getAttribute("placeholder"); - if (userFileName.length != 0) { - activeState.fileName = userFileName; - //clear old data as file switches to new filename - if (userFileNamePH.length != 0) { - clearData(userFileNamePH); - popFromTemplateFiles(userFileNamePH); - } - } else if (userFileNamePH.length != 0) { - activeState.fileName = userFileNamePH; - } + //set current filename according to filenamefield + setCurrentFileName(); //set savetime in templateFiles if (activeState.fileName != "") { @@ -88,7 +76,15 @@ function createStorageObj() { let c = 0; for (let tFi of tF) { if (tFi.fileName == activeState.fileName) { - tF[c].metadata.ts_save = getCurrentDate(); + switch (ref) { + case "save": + tF[c].metadata.ts_save = getCurrentDate(); + break; + case "copy": + console.log("copy"); + tF[c].metadata.ts_copy = getCurrentDate(); + break; + } storeData("templateFiles", tF); } c += 1; @@ -119,11 +115,10 @@ function storeData(name, data) { function retrieveData(name, template = "none") { if (passwordHash == "") return null; if (name == "userInput") { - let tF = retrieveData("templateFiles"); - if (tF == null) { - return []; + if (activeState.fileName != "") { + name = activeState.fileName; } else { - name = tF[tF.length - 1].fileName; + return []; } } if (name == "userInputForce") { @@ -172,7 +167,7 @@ function clearData(name, template = "none") { store.removeItem(key); } -function getFileName(ref = "none") { +function getFileName() { let currentFileName = activeState.fileName; let lT = activeState.loadedTemplate; if (currentFileName == "none" || currentFileName == "") { @@ -185,13 +180,13 @@ function getFileName(ref = "none") { const metadata = { ts_create: getCurrentDate(), ts_save: "", + ts_copy: "", id: cyrb53(currentFileName), }; if (tF.length != 0) { for (let tFi of tF) { if (tFi.fileName == currentFileName) { - console.log("found", tFi); return currentFileName; } } @@ -199,7 +194,7 @@ function getFileName(ref = "none") { fileName: currentFileName, template: lT, metadata: metadata, - pos: tF.length - 1, + pos: tF.length, }); } else { tF = [ @@ -316,6 +311,23 @@ function clearStorage() { store.clear(); } +function setCurrentFileName() { + activeState.fileName = ""; + let userFileNameField = document.getElementById("userFileName"); + let userFileName = sanitize(userFileNameField.value); + let userFileNamePH = userFileNameField.getAttribute("placeholder"); + if (userFileName.length != 0) { + activeState.fileName = userFileName; + //clear old data as file switches to new filename + if (userFileNamePH.length != 0) { + clearData(userFileNamePH); + popFromTemplateFiles(userFileNamePH); + } + } else if (userFileNamePH.length != 0) { + activeState.fileName = userFileNamePH; + } +} + export { createStorageObj, storeData, @@ -326,4 +338,5 @@ export { importBookShelf, storeSettings, clearStorage, + setCurrentFileName }; diff --git a/template/Simple-form.txt b/template/Simple-form.txt index 09bc733..79a81e2 100644 --- a/template/Simple-form.txt +++ b/template/Simple-form.txt @@ -1 +1 @@ -[{"value":"Folgetermin Sozialdienst","name":"Termin_Sozialdienst"},{"value":"Pat.","name":"Involvierte_Personen"},{"value":"","name":"Eintrag_in_Listenform"},{"value":"!none","name":"Procedere_einblenden"},{"value":"","name":"cl-Procedere:!l"}] \ No newline at end of file +[{"value":"Folgetermin Sozialdienst","name":"Termin_Sozialdienst"},{"value":"Pat.","name":"Involvierte_Personen"},{"value":"","name":""},{"value":"","name":""},{"value":"","name":""},{"value":"","name":""},{"value":"","name":""},{"value":"","name":""},{"value":"","name":""},{"value":"","name":""},{"value":"","name":""},{"value":"","name":"Eintrag_in_Listenform"},{"value":"!none","name":"Procedere_einblenden"},{"value":"","name":""},{"value":"","name":""},{"value":"","name":""},{"value":"","name":""},{"value":"","name":""},{"value":"","name":""},{"value":"","name":""},{"value":"","name":""},{"value":"","name":""},{"value":"","name":"cl-Procedere:!l"}] \ No newline at end of file