From cfe28689ff6cf08ce557688968421950d5ff8e95 Mon Sep 17 00:00:00 2001 From: izawartka <59137928+izawartka@users.noreply.github.com> Date: Sun, 17 Aug 2025 18:04:01 +0200 Subject: [PATCH] Added metadata export +Added basic metadata to the exported svg --- src/helpers/constants.js | 1 + src/helpers/exportHelper.js | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/helpers/constants.js b/src/helpers/constants.js index 574dd57..54ed8f4 100644 --- a/src/helpers/constants.js +++ b/src/helpers/constants.js @@ -1,5 +1,6 @@ const Constants = { buildVersion: '1.6.2', + originalPublicBuildUrl: 'https://maseuko.pl/soft/td2-visualizer-2/', // do NOT change map: { zoomSensitivity: 0.002, zoomMin: 0.03, diff --git a/src/helpers/exportHelper.js b/src/helpers/exportHelper.js index 688d81e..7c01467 100644 --- a/src/helpers/exportHelper.js +++ b/src/helpers/exportHelper.js @@ -1,3 +1,5 @@ +import Constants from "./constants"; + const applyStyles = ['fill', 'stroke', 'stroke-width', 'font-size', 'font-family', 'text-anchor', 'dominant-baseline']; function processExportNode(svgNode, currentGroupStyles = {}) { @@ -105,6 +107,23 @@ function serializeAndDownload(svgNode, filename) { URL.revokeObjectURL(url); } +function addMetadata(svg) { + const metadata = document.createElementNS('http://www.w3.org/2000/svg', 'metadata'); + const rdf = document.createElementNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'rdf:RDF'); + const description = document.createElementNS('http://purl.org/dc/elements/1.1/', 'dc:description'); + description.textContent = `Exported using TD2 Visualizer v${Constants.buildVersion}`; + const source = document.createElementNS('http://purl.org/dc/elements/1.1/', 'dc:source'); + source.textContent = Constants.originalPublicBuildUrl; + + rdf.appendChild(description); + rdf.appendChild(source); + metadata.appendChild(rdf); + svg.appendChild(metadata); + + svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg'); + svg.setAttribute('version', '1.1'); +} + function exportSvg(filename) { const mapElement = document.getElementsByClassName('map')[0]; if (!mapElement) return false; @@ -119,8 +138,7 @@ function exportSvg(filename) { mapElement.appendChild(exportContainer); exportContainer.appendChild(svg); - svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg'); - svg.setAttribute('version', '1.1'); + addMetadata(svg); processExportNode(svg); removeNonVisibleObjects(svg);