Skip to content

Commit 31ed977

Browse files
committed
handle text positions for out of range cases e.g. when transitioning with maxdepth
1 parent 0ad91e4 commit 31ed977

File tree

3 files changed

+28
-27
lines changed

3 files changed

+28
-27
lines changed

src/traces/treemap/draw_ancestors.js

+3-10
Original file line numberDiff line numberDiff line change
@@ -148,16 +148,9 @@ module.exports = function drawAncestors(gd, cd, entry, slices, opts) {
148148
.call(svgTextUtils.convertToTspans, gd);
149149

150150
pt.textBB = Drawing.bBox(sliceText.node());
151-
pt.transform = toMoveInsideSlice(
152-
pt.x0,
153-
pt.x1,
154-
pt.y0,
155-
pt.y1,
156-
pt.textBB,
157-
{
158-
onPathbar: true
159-
}
160-
);
151+
pt.transform = toMoveInsideSlice(pt.x0, pt.x1, pt.y0, pt.y1, pt.textBB, {
152+
onPathbar: true
153+
});
161154

162155
if(helpers.isOutsideText(trace, pt)) {
163156
// consider in/out diff font sizes

src/traces/treemap/draw_descendants.js

+24-16
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ var d3 = require('d3');
1212
var Lib = require('../../lib');
1313
var Drawing = require('../../components/drawing');
1414
var svgTextUtils = require('../../lib/svg_text_utils');
15-
15+
var TEXTPAD = require('../bar/constants').TEXTPAD;
1616
var partition = require('./partition');
1717
var styleOne = require('./style').styleOne;
1818
var constants = require('./constants');
@@ -164,13 +164,28 @@ module.exports = function drawDescendants(gd, cd, entry, slices, opts) {
164164
s.attr('data-notex', 1);
165165
});
166166

167+
var _x0 = pt.x0;
168+
var _x1 = pt.x1;
169+
var _y0 = pt.y0;
170+
var _y1 = pt.y1;
171+
167172
var tx;
168-
if(isHeader) {
169-
if(noRoomForHeader) return;
173+
if(_x0 < _x1 && _y0 < _y1) {
174+
if(isHeader) {
175+
if(noRoomForHeader) return;
170176

171-
tx = helpers.getPtLabel(pt);
172-
} else {
173-
tx = formatSliceLabel(pt, entry, trace, cd, fullLayout) || ' ';
177+
tx = helpers.getPtLabel(pt);
178+
} else {
179+
tx = formatSliceLabel(pt, entry, trace, cd, fullLayout) || ' ';
180+
}
181+
} else { // handle text positions for out of range cases e.g. with maxdepth
182+
tx = ' ';
183+
184+
var expand = 2 * TEXTPAD;
185+
_x0 -= expand;
186+
_x1 += expand;
187+
_y0 -= expand;
188+
_y1 += expand;
174189
}
175190

176191
sliceText.text(tx)
@@ -180,16 +195,9 @@ module.exports = function drawDescendants(gd, cd, entry, slices, opts) {
180195
.call(svgTextUtils.convertToTspans, gd);
181196

182197
pt.textBB = Drawing.bBox(sliceText.node());
183-
pt.transform = toMoveInsideSlice(
184-
pt.x0,
185-
pt.x1,
186-
pt.y0,
187-
pt.y1,
188-
pt.textBB,
189-
{
190-
isHeader: isHeader
191-
}
192-
);
198+
pt.transform = toMoveInsideSlice(_x0, _x1, _y0, _y1, pt.textBB, {
199+
isHeader: isHeader
200+
});
193201

194202
if(helpers.isOutsideText(trace, pt)) {
195203
// consider in/out diff font sizes

test/jasmine/tests/treemap_test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1225,7 +1225,7 @@ describe('Test treemap tweening:', function() {
12251225
'M284.375,188.5L548.375,188.5L548.375,308.5L284.375,308.5Z'
12261226
);
12271227
_assert('move B text to new position', 'transform', 'B', [220.25126, 0]);
1228-
_assert('enter b text to new position', 'transform', 'b', [287.375195, 5]);
1228+
_assert('enter b text to new position', 'transform', 'b', [284.66071, 35714285714286]);
12291229
})
12301230
.catch(failTest)
12311231
.then(done);

0 commit comments

Comments
 (0)