Skip to content

Commit 460ca28

Browse files
committed
non-offset image, whether snapshot or image testing
1 parent 99b2548 commit 460ca28

File tree

1 file changed

+17
-22
lines changed

1 file changed

+17
-22
lines changed

src/traces/parcoords/base_plot.js

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
'use strict';
1010

11+
var d3 = require('d3');
1112
var Plots = require('../../plots/plots');
1213
var Registry = require('../../registry');
1314
var xmlnsNamespaces = require('../../constants/xmlns_namespaces');
@@ -34,43 +35,37 @@ exports.clean = function(newFullData, newFullLayout, oldFullData, oldFullLayout)
3435
oldFullLayout._paperdiv.selectAll('.parcoords-line-layers').remove();
3536
oldFullLayout._paperdiv.selectAll('.parcoords').remove();
3637
oldFullLayout._paperdiv.selectAll('.parcoords').remove();
38+
oldFullLayout._glimages.selectAll('*').remove();
3739
};
3840

3941
exports.toSVG = function(gd) {
4042

41-
function canvasToImage(canvas) {
43+
var bodyStyle = window.getComputedStyle(document.body, null);
44+
var imageRoot = gd._fullLayout._glimages;
45+
var root = d3.selectAll('.svg-container');
46+
var canvases = root.filter(function(d, i) {return i === 0;})
47+
.selectAll('.parcoords-lines.context, .parcoords-lines.focus');
48+
var snapshot = root[0].length > 1;
49+
50+
function canvasToImage() {
51+
var canvas = this;
4252
var rect = canvas.getBoundingClientRect();
43-
var bodyStyle = window.getComputedStyle(document.body, null);
4453
var canvasStyle = window.getComputedStyle(canvas, null);
4554
var canvasContentOriginX = parseFloat(canvasStyle.getPropertyValue('padding-left')) + rect.left;
4655
var canvasContentOriginY = parseFloat(canvasStyle.getPropertyValue('padding-top')) + rect.top;
47-
4856
var imageData = canvas.toDataURL('image/png');
49-
var image = gd._fullLayout._glimages.append('svg:image');
57+
var image = imageRoot.append('svg:image');
5058

5159
image.attr({
5260
xmlns: xmlnsNamespaces.svg,
5361
'xlink:href': imageData,
54-
x: canvasContentOriginX - parseFloat(bodyStyle.getPropertyValue('margin-left')),
55-
y: canvasContentOriginY - parseFloat(bodyStyle.getPropertyValue('margin-top')),
62+
x: canvasContentOriginX - (snapshot ? 0 : parseFloat(bodyStyle.getPropertyValue('margin-left'))),
63+
y: canvasContentOriginY - (snapshot ? 0 : parseFloat(bodyStyle.getPropertyValue('margin-top'))),
5664
width: parseFloat(canvasStyle.getPropertyValue('width')),
57-
height: parseFloat(canvasStyle.getPropertyValue('height'))
65+
height: parseFloat(canvasStyle.getPropertyValue('height')),
66+
preserveAspectRatio: 'none'
5867
});
5968
}
6069

61-
var canvases = Array.prototype.slice.call(document.querySelectorAll('.parcoords-lines.context, .parcoords-lines.focus'));
62-
63-
/*
64-
var svgs = Array.prototype.slice.call(document.querySelectorAll('.main-svg'));
65-
document.querySelectorAll('.axisTitle')[0].setAttribute('text-anchor', 'begin');
66-
document.querySelectorAll('.axisTitle')[0].style['font-size'] = '16px';
67-
document.querySelectorAll('.axisTitle')[0].innerHTML = svgs.length;
68-
svgs.forEach(function(s) {
69-
//s.style.opacity = 0.1;
70-
//s.style.display = 'none'
71-
//s.parentElement.removeChild(s)
72-
})
73-
*/
74-
75-
canvases.forEach(canvasToImage);
70+
canvases.each(canvasToImage);
7671
};

0 commit comments

Comments
 (0)