From bb942aa9b604b93c15048003795f4df77d9bb008 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 9 Sep 2016 23:20:48 -0400 Subject: [PATCH] Add only a single defs element to surface --- modules/svg/layers.js | 8 ++++++-- test/spec/svg/layers.js | 7 +++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/svg/layers.js b/modules/svg/layers.js index e43cc53f7..998c789d2 100644 --- a/modules/svg/layers.js +++ b/modules/svg/layers.js @@ -29,8 +29,12 @@ export function Layers(projection, context) { .attr('class', 'surface') .merge(svg); - svg - .append('defs'); + var defs = svg.selectAll('.surface-defs') + .data([0]); + + defs.enter() + .append('defs') + .attr('class', 'surface-defs'); var groups = svg.selectAll('.data-layer') .data(layers); diff --git a/test/spec/svg/layers.js b/test/spec/svg/layers.js index ca79b45a2..82db8c3fd 100644 --- a/test/spec/svg/layers.js +++ b/test/spec/svg/layers.js @@ -16,6 +16,13 @@ describe('iD.svg.Layers', function () { expect(container.selectAll('svg')).to.be.classed('surface'); }); + it('creates surface defs', function () { + container.call(iD.svg.Layers(projection, context)); + var nodes = container.selectAll('svg defs').nodes(); + expect(nodes.length).to.eql(1); + expect(d3.select(nodes[0])).to.be.classed('surface-defs'); + }); + it('creates default data layers', function () { container.call(iD.svg.Layers(projection, context)); var nodes = container.selectAll('svg .data-layer').nodes();