From 2e76a800f55dd916e5ca4b0ab892946cf69734e5 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Mon, 18 Jul 2022 14:06:29 +1000 Subject: [PATCH] You can now download modified IDSes via the webapp --- src/ifctester/webapp/www/app.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/ifctester/webapp/www/app.js b/src/ifctester/webapp/www/app.js index 34f063706f..fe56432c2a 100644 --- a/src/ifctester/webapp/www/app.js +++ b/src/ifctester/webapp/www/app.js @@ -7,6 +7,7 @@ var xs = 'http://www.w3.org/2001/XMLSchema'; class IDSContainer extends HTMLElement { connectedCallback() { + this.filename = 'specifications.ids'; this.ids = null; this.containerId = crypto.randomUUID(); } @@ -805,7 +806,7 @@ class IDSLoader extends HTMLElement { var inputElement = document.createElement("input"); inputElement.idsLoader = this; inputElement.type = "file"; - inputElement.accept = '.xml'; + inputElement.accept = '.ids,.xml'; inputElement.multiple = false; inputElement.addEventListener("change", this.loadFile) inputElement.dispatchEvent(new MouseEvent("click")); @@ -813,6 +814,8 @@ class IDSLoader extends HTMLElement { loadFile(e) { var self = this.idsLoader; + var container = self.closest('ids-container') + container.filename = this.files[0].name; var read = new FileReader(); read.readAsBinaryString(this.files[0]); read.onloadend = function() { @@ -844,6 +847,18 @@ class IDSSave extends HTMLElement { click() { var xmlString = new XMLSerializer().serializeToString(this.closest('ids-container').ids); console.log(xmlString); + var container = this.closest('ids-container') + this.download(container.filename, xmlString); + } + + download(filename, text) { + var element = document.createElement('a'); + element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); + element.setAttribute('download', filename); + element.style.display = 'none'; + document.body.appendChild(element); + element.click(); + document.body.removeChild(element); } }