From eb8518afab90ad908af966625a4344f079fbd0cb Mon Sep 17 00:00:00 2001 From: Adam Bem Date: Wed, 1 Mar 2023 12:40:30 +0100 Subject: [PATCH] XML Formatter QoL improvements (#88) - Rewritten backend methods for prettifing and minimizing XMLs - Added "Clear" and "Insert default XML" buttons in XML Formatter. - Added place to display error messages in case of any Co-authored-by: Adam Bem Reviewed-on: https://gitea.release11.com/R11/release11-tools-web/pulls/88 --- Backend-libXML/Parser.py | 22 +++-- Frontend/assets/css/tools/r11form.css | 4 +- Frontend/assets/scripts/tools/scripts.js | 18 +++- Frontend/tools/xmlFormatter.html | 119 ++++------------------- 4 files changed, 48 insertions(+), 115 deletions(-) diff --git a/Backend-libXML/Parser.py b/Backend-libXML/Parser.py index 827b356..67ebfc1 100644 --- a/Backend-libXML/Parser.py +++ b/Backend-libXML/Parser.py @@ -14,7 +14,9 @@ def prettify(source: str) -> str: prolog_end = source.find("?>") + 2 prolog = source[prolog_start:prolog_end] + "\n" source = source[prolog_end: ] - xml = etree.XML(source) + + parser = etree.XMLParser(remove_blank_text=True) + xml = etree.fromstring(source, parser=parser) return prolog + etree.tostring(xml, pretty_print=True).decode() def minimize(source: str) -> str: @@ -23,18 +25,18 @@ def minimize(source: str) -> str: :param source: XML :return: minimized XML """ - result = source - to_remove = [" ", " ", "\t", "\n"] - to_substitute = [(" <", "<"), ("> ", ">"), ("", ">")] + prolog = "" + prolog_start = source.find("") + 2 + prolog = source[prolog_start:prolog_end] + source = source[prolog_end: ] - for e in to_substitute: - result = result.replace(e[0], e[1]) - - return result + parser = etree.XMLParser(remove_blank_text=True) + xml = etree.fromstring(source, parser=parser) + return prolog + etree.tostring(xml, pretty_print=False).decode() def xpath(source: str, xpath: str) -> str: diff --git a/Frontend/assets/css/tools/r11form.css b/Frontend/assets/css/tools/r11form.css index e54e151..5e9728e 100644 --- a/Frontend/assets/css/tools/r11form.css +++ b/Frontend/assets/css/tools/r11form.css @@ -330,8 +330,8 @@ height: 300px; } -.textarea-800 { - height: 800px; +.textarea-700 { + height: 700px; } .centered-content { diff --git a/Frontend/assets/scripts/tools/scripts.js b/Frontend/assets/scripts/tools/scripts.js index 76e82c8..3660e48 100644 --- a/Frontend/assets/scripts/tools/scripts.js +++ b/Frontend/assets/scripts/tools/scripts.js @@ -148,24 +148,32 @@ function performRequest(endpoint, checkXML, checkTransform){ } function performFormatRequest(endpoint, checkXML, sourceId, targetId){ + const sourceElement = document.getElementById(sourceId); + const targetElement = document.getElementById(targetId); + const infoElement = document.getElementById("formatinfo"); const port = 8082; - var xmlData = document.getElementById(sourceId).value.trim(); + var xmlData = sourceElement.value.trim(); var empty = false; if (defaultStrings.includes(xmlData) && checkXML) { - document.getElementById(sourceId).style.backgroundColor = color_red; + sourceElement.style.backgroundColor = color_red; xmlData = ""; empty = true; } if (!empty) { restRequest(port, endpoint, xmlData, "").then(function(result) { + console.log(result); if (result.status == "OK") { - document.getElementById(targetId).value = result.result; - document.getElementById(targetId).style.backgroundColor = null; + targetElement.value = result.result; + targetElement.style.backgroundColor = null; + infoElement.innerText = ' Computed'.concat(" in ", result.time, "ms."); + infoElement.style.color = "#30aa58"; } else { - document.getElementById(targetId).style.backgroundColor = color_red; + targetElement.style.backgroundColor = color_red; + infoElement.innerText = result.result; + infoElement.style.color = "#aa3030"; } }); diff --git a/Frontend/tools/xmlFormatter.html b/Frontend/tools/xmlFormatter.html index 9803e0f..7ac84d2 100644 --- a/Frontend/tools/xmlFormatter.html +++ b/Frontend/tools/xmlFormatter.html @@ -14,23 +14,34 @@
-

Online XML Formatter v0.21.37 BETA -

+

Online XML Formatter

- - +
+
+
+ +
+
+ + +
+ +
+

- -
@@ -49,105 +60,17 @@
- - - - - - -