From: Bastian Dehn Date: Sun, 30 Jun 2024 08:00:00 +0000 (+0200) Subject: js seperated from html X-Git-Tag: 1.3.0^2~10 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=5256c2b8165ae3c412c5451eb743b35cf47b37eb;p=feierabend.git js seperated from html --- diff --git a/src/xmlviewer/viewer.html b/src/xmlviewer/viewer.html index b93c536..1b4088e 100644 --- a/src/xmlviewer/viewer.html +++ b/src/xmlviewer/viewer.html @@ -5,158 +5,10 @@ +
-
diff --git a/src/xmlviewer/viewer.js b/src/xmlviewer/viewer.js new file mode 100644 index 0000000..6ee8dc0 --- /dev/null +++ b/src/xmlviewer/viewer.js @@ -0,0 +1,147 @@ +function addColorClass(element, quota) { + if (quota >= 1) + element.classList.add("red"); + else if (quota >= 0.666666667) + element.classList.add("yellow"); + else if (quota >= -0.666666667) + element.classList.add("green"); + else if (quota <= -0.666666667) + element.classList.add("yellow"); + else if (quota <= -1) + element.classList.add("red"); +} + +function loadFile() { + const fileinput = document.getElementById("filepath"); + const element = document.getElementById("content"); + element.innerHTML = ''; + const filereader = new FileReader(); + filereader.onload = data => { + const parser = new DOMParser(); + const xmldoc = parser.parseFromString(data.target.result, "text/xml"); + + const rootNode = xmldoc.children[0] + + const tableElement = document.createElement("table"); + const MAX_OVERDAYS = 7.5; + let trElement; + let tdElement; + let saldo; + let timeArray; + let maxWorktime; + let quota; + + const captionElement = document.createElement("caption"); + captionElement.innerText = `Zeitkonto - Anfangssaldo: ${rootNode.getAttribute("anfangssaldo")}` + tableElement.append(captionElement); + + trElement = document.createElement("tr"); + + tdElement = document.createElement("th"); + tdElement.setAttribute("colspan", 2); + tdElement.innerText = "Datum"; + trElement.append(tdElement); + + tdElement = document.createElement("th"); + tdElement.innerText = "Anfang" + trElement.append(tdElement); + + tdElement = document.createElement("th"); + tdElement.innerText = "Ende"; + trElement.append(tdElement); + + tdElement = document.createElement("th"); + tdElement.innerText = "Pause"; + trElement.append(tdElement); + + tdElement = document.createElement("th"); + tdElement.innerText = "Soll"; + trElement.append(tdElement); + + tdElement = document.createElement("th"); + tdElement.innerText = "Ist"; + trElement.append(tdElement); + + tdElement = document.createElement("th"); + tdElement.innerText = "Stunden"; + trElement.append(tdElement); + + tdElement = document.createElement("th"); + tdElement.innerText = "Saldo"; + trElement.append(tdElement); + + tableElement.append(trElement) + const count = rootNode.childElementCount; + for (let i = 0; i < count; i++) { + timeArray = rootNode.children[i].getAttribute("sollarbeitszeit").split(":"); + maxWorktime = timeArray[0] * 3600; + maxWorktime += timeArray[1] * 60; + maxWorktime *= MAX_OVERDAYS; + timeArray = rootNode.children[i].getAttribute("saldo").split(":"); + saldo = timeArray[0] * 3600; + saldo += timeArray[1] * 60; + quota = saldo / maxWorktime; + + trElement = document.createElement("tr"); + + tdElement = document.createElement("td"); + tdElement.setAttribute("data-cell", "Wochentag"); + tdElement.innerText = rootNode.children[i].getAttribute("wochentag"); + addColorClass(tdElement, quota); + trElement.append(tdElement); + + tdElement = document.createElement("td"); + tdElement.setAttribute("data-cell", "Datum"); + tdElement.innerText = rootNode.children[i].getAttribute("datum"); + addColorClass(tdElement, quota); + trElement.append(tdElement); + + tdElement = document.createElement("td"); + tdElement.setAttribute("data-cell", "Anfang"); + tdElement.innerText = rootNode.children[i].getAttribute("begin"); + addColorClass(tdElement, quota); + trElement.append(tdElement); + + tdElement = document.createElement("td"); + tdElement.setAttribute("data-cell", "Ende"); + tdElement.innerText = rootNode.children[i].getAttribute("ende"); + addColorClass(tdElement, quota); + trElement.append(tdElement); + + tdElement = document.createElement("td"); + tdElement.setAttribute("data-cell", "Pause"); + tdElement.innerText = rootNode.children[i].getAttribute("pause"); + addColorClass(tdElement, quota); + trElement.append(tdElement); + + tdElement = document.createElement("td"); + tdElement.setAttribute("data-cell", "Soll"); + tdElement.innerText = rootNode.children[i].getAttribute("sollarbeitszeit"); + addColorClass(tdElement, quota); + trElement.append(tdElement); + + tdElement = document.createElement("td"); + tdElement.setAttribute("data-cell", "Ist"); + tdElement.innerText = rootNode.children[i].getAttribute("arbeitszeit"); + addColorClass(tdElement, quota); + trElement.append(tdElement); + + tdElement = document.createElement("td"); + tdElement.setAttribute("data-cell", "Stunden"); + tdElement.innerText = rootNode.children[i].getAttribute("stunden"); + addColorClass(tdElement, quota); + trElement.append(tdElement); + + tdElement = document.createElement("td"); + tdElement.setAttribute("data-cell", "Saldo"); + tdElement.innerText = rootNode.children[i].getAttribute("saldo"); + addColorClass(tdElement, quota); + trElement.append(tdElement); + + tableElement.append(trElement) + } + + element.append(tableElement); + }; + filereader.readAsText(fileinput.files[0]); +} \ No newline at end of file