Skip to content

Commit 57dec38

Browse files
committed
move getTransform function to Lib and use it in bar and treemap
1 parent 13e0449 commit 57dec38

File tree

7 files changed

+53
-52
lines changed

7 files changed

+53
-52
lines changed

src/lib/index.js

+29
Original file line numberDiff line numberDiff line change
@@ -1179,3 +1179,32 @@ lib.isHidden = function(gd) {
11791179
var display = window.getComputedStyle(gd).display;
11801180
return !display || display === 'none';
11811181
};
1182+
1183+
lib.getTextTransform = function(opts) {
1184+
var textX = opts.textX;
1185+
var textY = opts.textY;
1186+
var targetX = opts.targetX;
1187+
var targetY = opts.targetY;
1188+
var scale = opts.scale;
1189+
var rotate = opts.rotate;
1190+
1191+
var transformScale;
1192+
var transformRotate;
1193+
var transformTranslate;
1194+
1195+
if(scale < 1) transformScale = 'scale(' + scale + ') ';
1196+
else {
1197+
scale = 1;
1198+
transformScale = '';
1199+
}
1200+
1201+
transformRotate = (rotate) ?
1202+
'rotate(' + rotate + ' ' + textX + ' ' + textY + ') ' : '';
1203+
1204+
// Note that scaling also affects the center of the text box
1205+
var translateX = (targetX - scale * textX);
1206+
var translateY = (targetY - scale * textY);
1207+
transformTranslate = 'translate(' + translateX + ' ' + translateY + ')';
1208+
1209+
return transformTranslate + transformScale + transformRotate;
1210+
};

src/traces/bar/plot.js

+2-32
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ function appendBarText(gd, plotinfo, bar, calcTrace, i, x0, x1, y0, y1, opts) {
342342
trace.constraintext === 'both' ||
343343
trace.constraintext === 'outside';
344344

345-
transform = getTransform(toMoveOutsideBar(x0, x1, y0, y1, textBB, {
345+
transform = Lib.getTextTransform(toMoveOutsideBar(x0, x1, y0, y1, textBB, {
346346
isHorizontal: isHorizontal,
347347
constrained: constrained,
348348
angle: trace.textangle
@@ -352,7 +352,7 @@ function appendBarText(gd, plotinfo, bar, calcTrace, i, x0, x1, y0, y1, opts) {
352352
trace.constraintext === 'both' ||
353353
trace.constraintext === 'inside';
354354

355-
transform = getTransform(toMoveInsideBar(x0, x1, y0, y1, textBB, {
355+
transform = Lib.getTextTransform(toMoveInsideBar(x0, x1, y0, y1, textBB, {
356356
isHorizontal: isHorizontal,
357357
constrained: constrained,
358358
angle: trace.textangle,
@@ -510,35 +510,6 @@ function toMoveOutsideBar(x0, x1, y0, y1, textBB, opts) {
510510
};
511511
}
512512

513-
function getTransform(opts) {
514-
var textX = opts.textX;
515-
var textY = opts.textY;
516-
var targetX = opts.targetX;
517-
var targetY = opts.targetY;
518-
var scale = opts.scale;
519-
var rotate = opts.rotate;
520-
521-
var transformScale;
522-
var transformRotate;
523-
var transformTranslate;
524-
525-
if(scale < 1) transformScale = 'scale(' + scale + ') ';
526-
else {
527-
scale = 1;
528-
transformScale = '';
529-
}
530-
531-
transformRotate = (rotate) ?
532-
'rotate(' + rotate + ' ' + textX + ' ' + textY + ') ' : '';
533-
534-
// Note that scaling also affects the center of the text box
535-
var translateX = (targetX - scale * textX);
536-
var translateY = (targetY - scale * textY);
537-
transformTranslate = 'translate(' + translateX + ' ' + translateY + ')';
538-
539-
return transformTranslate + transformScale + transformRotate;
540-
}
541-
542513
function getText(fullLayout, calcTrace, index, xa, ya) {
543514
var trace = calcTrace[0].trace;
544515
var texttemplate = trace.texttemplate;
@@ -695,7 +666,6 @@ function calcTextinfo(calcTrace, index, xa, ya) {
695666

696667
module.exports = {
697668
plot: plot,
698-
getTransform: getTransform,
699669
toMoveInsideBar: toMoveInsideBar,
700670
toMoveOutsideBar: toMoveOutsideBar
701671
};

src/traces/funnelarea/plot.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ var Lib = require('../../lib');
1515
var svgTextUtils = require('../../lib/svg_text_utils');
1616

1717
var barPlot = require('../bar/plot');
18-
var getTransform = barPlot.getTransform;
1918
var toMoveInsideBar = barPlot.toMoveInsideBar;
2019

2120
var pieHelpers = require('../pie/helpers');
@@ -115,7 +114,7 @@ module.exports = function plot(gd, cdModule) {
115114
x0 = Math.max(pt.TL[0], pt.BL[0]);
116115
x1 = Math.min(pt.TR[0], pt.BR[0]);
117116

118-
transform = getTransform(toMoveInsideBar(x0, x1, y0, y1, textBB, {
117+
transform = Lib.getTextTransform(toMoveInsideBar(x0, x1, y0, y1, textBB, {
119118
isHorizontal: true,
120119
constrained: true,
121120
angle: 0,

src/traces/sunburst/helpers.js

-12
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
var Lib = require('../../lib');
1212
var Color = require('../../components/color');
1313
var setCursor = require('../../lib/setcursor');
14-
var getTransform = require('../bar/plot').getTransform;
1514

1615
function hasLabel(label) {
1716
return label || label === 0;
@@ -154,17 +153,6 @@ exports.hasTransition = function(transitionOpts) {
154153
return !!(transitionOpts && transitionOpts.duration > 0);
155154
};
156155

157-
exports.strTransform = function(d) {
158-
return getTransform({
159-
textX: d.transform.textX,
160-
textY: d.transform.textY,
161-
targetX: d.transform.targetX,
162-
targetY: d.transform.targetY,
163-
scale: d.transform.scale,
164-
rotate: d.transform.rotate
165-
});
166-
};
167-
168156
exports.getMaxDepth = function(trace) {
169157
return trace.maxdepth >= 0 ? trace.maxdepth : Infinity;
170158
};

src/traces/treemap/draw_ancestors.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ module.exports = function drawAncestors(gd, cd, entry, slices, opts) {
2929
var viewY = opts.viewY;
3030
var pathSlice = opts.pathSlice;
3131
var toMoveInsideSlice = opts.toMoveInsideSlice;
32+
var strTransform = opts.strTransform;
3233
var hasTransition = opts.hasTransition;
3334
var handleSlicesExit = opts.handleSlicesExit;
3435
var makeUpdateSliceInterpolator = opts.makeUpdateSliceInterpolator;
@@ -170,10 +171,10 @@ module.exports = function drawAncestors(gd, cd, entry, slices, opts) {
170171
if(hasTransition) {
171172
sliceText.transition().attrTween('transform', function(pt2) {
172173
var interp = makeUpdateTextInterpolator(pt2, upDown, refRect, [width, height]);
173-
return function(t) { return helpers.strTransform(interp(t)); };
174+
return function(t) { return strTransform(interp(t)); };
174175
});
175176
} else {
176-
sliceText.attr('transform', helpers.strTransform(pt));
177+
sliceText.attr('transform', strTransform(pt));
177178
}
178179
});
179180
};

src/traces/treemap/draw_descendants.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ module.exports = function drawDescendants(gd, cd, entry, slices, opts) {
2929
var viewY = opts.viewY;
3030
var pathSlice = opts.pathSlice;
3131
var toMoveInsideSlice = opts.toMoveInsideSlice;
32+
var strTransform = opts.strTransform;
3233
var hasTransition = opts.hasTransition;
3334
var handleSlicesExit = opts.handleSlicesExit;
3435
var makeUpdateSliceInterpolator = opts.makeUpdateSliceInterpolator;
@@ -170,10 +171,10 @@ module.exports = function drawDescendants(gd, cd, entry, slices, opts) {
170171
if(hasTransition) {
171172
sliceText.transition().attrTween('transform', function(pt2) {
172173
var interp = makeUpdateTextInterpolator(pt2, upDown, getRefRect(), [width, height]);
173-
return function(t) { return helpers.strTransform(interp(t)); };
174+
return function(t) { return strTransform(interp(t)); };
174175
});
175176
} else {
176-
sliceText.attr('transform', helpers.strTransform(pt));
177+
sliceText.attr('transform', strTransform(pt));
177178
}
178179
});
179180
};

src/traces/treemap/plot.js

+15-2
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,17 @@ function plotOne(gd, cd, element, transitionOpts) {
431431
}
432432
};
433433

434+
var strTransform = function(d) {
435+
return Lib.getTextTransform({
436+
textX: d.transform.textX,
437+
textY: d.transform.textY,
438+
targetX: d.transform.targetX,
439+
targetY: d.transform.targetY,
440+
scale: d.transform.scale,
441+
rotate: d.transform.rotate
442+
});
443+
};
444+
434445
var gTrace = d3.select(element);
435446
var selAncestors = gTrace.selectAll('g.pathbar');
436447
var selDescendants = gTrace.selectAll('g.slice');
@@ -477,7 +488,8 @@ function plotOne(gd, cd, element, transitionOpts) {
477488
makeUpdateTextInterpolator: makeUpdateTextInterpolator,
478489

479490
handleSlicesExit: handleSlicesExit,
480-
hasTransition: hasTransition
491+
hasTransition: hasTransition,
492+
strTransform: strTransform
481493
});
482494

483495
if(trace.pathbar.visible) {
@@ -496,7 +508,8 @@ function plotOne(gd, cd, element, transitionOpts) {
496508
makeUpdateTextInterpolator: makeUpdateTextInterpolator,
497509

498510
handleSlicesExit: handleSlicesExit,
499-
hasTransition: hasTransition
511+
hasTransition: hasTransition,
512+
strTransform: strTransform
500513
});
501514
}
502515
}

0 commit comments

Comments
 (0)