Skip to content

Commit e339bf5

Browse files
committed
Avoid using random ids in recording position of empty root
- do not display the edges of the empty root unless hovered - replace empty string with space to have better transitions
1 parent 1c6e47b commit e339bf5

14 files changed

+52
-17
lines changed

src/traces/treemap/draw_ancestors.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ module.exports = function drawAncestors(gd, cd, entry, slices, opts) {
139139
s.attr('data-notex', 1);
140140
});
141141

142-
var tx = helpers.getLabelStr(pt.data.data.label);
142+
var tx = helpers.getLabelStr(pt.data.data.label) || ' ';
143143

144144
sliceText.text(tx)
145145
.classed('slicetext', true)

src/traces/treemap/draw_descendants.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ module.exports = function drawDescendants(gd, cd, entry, slices, opts) {
166166

167167
if(isHeader && noRoomForHeader) return;
168168

169-
var tx = formatSliceLabel(pt, entry, trace, cd, fullLayout);
169+
var tx = formatSliceLabel(pt, entry, trace, cd, fullLayout) || ' ';
170170

171171
sliceText.text(tx)
172172
.classed('slicetext', true)

src/traces/treemap/plot.js

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@ module.exports = function(gd, cdmodule, transitionOpts, makeOnCompleteCallback)
7171
}
7272
};
7373

74+
function getKey(pt) {
75+
return helpers.isHierarchyRoot(pt) ?
76+
'' : // don't use the dummyId
77+
helpers.getPtId(pt);
78+
}
79+
7480
function plotOne(gd, cd, element, transitionOpts) {
7581
var fullLayout = gd._fullLayout;
7682
var cd0 = cd[0];
@@ -131,13 +137,13 @@ function plotOne(gd, cd, element, transitionOpts) {
131137
var nextOfPrevEntry = null;
132138
var getPrev = function(pt, onPathbar) {
133139
return onPathbar ?
134-
prevLookupPathbar[helpers.getPtId(pt)] :
135-
prevLookupSlices[helpers.getPtId(pt)];
140+
prevLookupPathbar[getKey(pt)] :
141+
prevLookupSlices[getKey(pt)];
136142
};
137143

138144
var getOrigin = function(pt, onPathbar, refRect, size) {
139145
if(onPathbar) {
140-
return prevLookupPathbar[helpers.getPtId(hierarchy)] || pathbarOrigin;
146+
return prevLookupPathbar[getKey(hierarchy)] || pathbarOrigin;
141147
} else {
142148
var ref = prevLookupSlices[trace.level] || refRect;
143149

@@ -148,13 +154,15 @@ function plotOne(gd, cd, element, transitionOpts) {
148154
return {};
149155
};
150156

157+
var isRoot = helpers.isHierarchyRoot(entry);
158+
151159
trace._entryDepth = entry.data.depth;
152-
if(helpers.isHierarchyRoot(entry)) {
160+
if(isRoot) {
153161
trace._entryDepth++;
154162
}
155163

156164
// N.B. handle multiple-root special case
157-
if(cd0.hasMultipleRoots && helpers.isHierarchyRoot(entry)) {
165+
if(cd0.hasMultipleRoots && isRoot) {
158166
maxDepth++;
159167
}
160168
trace._maxDepth = maxDepth;
@@ -506,31 +514,53 @@ function plotOne(gd, cd, element, transitionOpts) {
506514
var selDescendants = gTrace.selectAll('g.slice');
507515

508516
if(!entry) {
509-
return selDescendants.remove() && selAncestors.remove();
517+
selAncestors.remove();
518+
selDescendants.remove();
519+
return;
510520
}
511521

512522
if(hasTransition) {
513523
// Important: do this before binding new sliceData!
514524

515525
selAncestors.each(function(pt) {
516-
prevLookupPathbar[helpers.getPtId(pt)] = {
526+
prevLookupPathbar[getKey(pt)] = {
517527
x0: pt.x0,
518528
x1: pt.x1,
519529
y0: pt.y0,
520-
y1: pt.y1,
521-
transform: pt.transform
530+
y1: pt.y1
522531
};
532+
533+
if(pt.transform) {
534+
prevLookupPathbar[getKey(pt)].transform = {
535+
textX: pt.transform.textX,
536+
textY: pt.transform.textY,
537+
targetX: pt.transform.targetX,
538+
targetY: pt.transform.targetY,
539+
scale: pt.transform.scale,
540+
rotate: pt.transform.rotate
541+
};
542+
}
523543
});
524544

525545
selDescendants.each(function(pt) {
526-
prevLookupSlices[helpers.getPtId(pt)] = {
546+
prevLookupSlices[getKey(pt)] = {
527547
x0: pt.x0,
528548
x1: pt.x1,
529549
y0: pt.y0,
530-
y1: pt.y1,
531-
transform: pt.transform
550+
y1: pt.y1
532551
};
533552

553+
if(pt.transform) {
554+
prevLookupSlices[getKey(pt)].transform = {
555+
textX: pt.transform.textX,
556+
textY: pt.transform.textY,
557+
targetX: pt.transform.targetX,
558+
targetY: pt.transform.targetY,
559+
scale: pt.transform.scale,
560+
rotate: pt.transform.rotate
561+
};
562+
}
563+
534564
if(!prevEntry && helpers.isEntry(pt)) {
535565
prevEntry = pt;
536566
}

src/traces/treemap/style.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,13 @@ function styleOne(s, pt, trace, opts) {
5050
lineWidth = trace._hovered.marker.line.width;
5151
opacity = trace._hovered.marker.opacity;
5252
} else {
53-
lineColor = Lib.castOption(trace, ptNumber, 'marker.line.color') || Color.defaultLine;
54-
lineWidth = Lib.castOption(trace, ptNumber, 'marker.line.width') || 0;
53+
if(helpers.isHierarchyRoot(pt)) {
54+
lineColor = 'rgba(0,0,0,0)';
55+
lineWidth = 0;
56+
} else {
57+
lineColor = Lib.castOption(trace, ptNumber, 'marker.line.color') || Color.defaultLine;
58+
lineWidth = Lib.castOption(trace, ptNumber, 'marker.line.width') || 0;
59+
}
5560

5661
opacity =
5762
trace._hasColorscale || helpers.isLeaf(pt) ? 1 :
-41 Bytes
Loading
Loading
Loading
15 Bytes
Loading
-10 Bytes
Loading
-278 Bytes
Loading

0 commit comments

Comments
 (0)