diff --git a/src/pattern.js b/src/pattern.js index df507eef899..4a6e768b0d3 100644 --- a/src/pattern.js +++ b/src/pattern.js @@ -21,7 +21,8 @@ export default function Pattern(config = false) { // Data containers this.settings = { - mode: "draft" + mode: "draft", + idPrefix: "fs-" }; this.options = {}; this.store = new Store(); diff --git a/src/svg.js b/src/svg.js index 25df11cbdc1..b7095c88875 100644 --- a/src/svg.js +++ b/src/svg.js @@ -47,6 +47,7 @@ Svg.prototype.debug = function() {}; /** Renders a draft object as SVG */ Svg.prototype.render = function(pattern) { + this.idPrefix = pattern.settings.idPrefix; this.preRender(); if (!pattern.settings.embed) { this.attributes.add("width", pattern.width + "mm"); @@ -59,11 +60,14 @@ Svg.prototype.render = function(pattern) { this.svg += this.renderStyle(); this.svg += this.renderScript(); this.svg += this.renderDefs(); - this.svg += this.openGroup("draftContainer"); + this.svg += this.openGroup(this.idPrefix + "container"); for (let partId in pattern.parts) { let part = pattern.parts[partId]; if (part.render && pattern.needs(partId)) { - this.svg += this.openGroup(this.getUid(), part.attributes); + this.svg += this.openGroup( + `${this.idPrefix}part-${partId}`, + part.attributes + ); this.svg += this.renderPart(part); this.svg += this.closeGroup(); } @@ -109,7 +113,7 @@ Svg.prototype.renderScript = function() { /** Returns SVG code for the defs block */ Svg.prototype.renderDefs = function() { - let svg = ''; + let svg = ""; this.indent(); svg += this.nl() + this.defs; this.outdent(); @@ -147,8 +151,9 @@ Svg.prototype.renderPart = function(part) { /** Returns SVG code for a Path object */ Svg.prototype.renderPath = function(path) { - if (!path.attributes.get("id")) path.attributes.add("id", this.getUid()); - path.attributes.add("d", path.asPathstring()); + if (!path.attributes.get("id")) + path.attributes.add("id", this.idPrefix + this.getUid()); + path.attributes.set("d", path.asPathstring()); return `${this.nl()}${this.renderPathText( path diff --git a/tests/fixtures/render.js b/tests/fixtures/render.js index f7ff7e8c254..2a206a90bce 100644 --- a/tests/fixtures/render.js +++ b/tests/fixtures/render.js @@ -16,15 +16,15 @@ var render = { ]]> - + - - + + - + - + + - + - + + - - + + - + - + - + + - - + + - + - + - + + - - + + This is a test - + - + - + + - - + + This is a testwith text onmultiple lines - + - + - + + - - + + This is a testwith text onmultiple lines - + - + - + + - - - -This is another test + + + +This is another test - + - + - + + - - - -This is another test + + + +This is another test - + - + - + + - - - -This is another test + + + +This is another test - + - + - + + - - + + This is a snippet - + - +