@@ -71,6 +71,12 @@ module.exports = function(gd, cdmodule, transitionOpts, makeOnCompleteCallback)
71
71
}
72
72
} ;
73
73
74
+ function getKey ( pt ) {
75
+ return helpers . isHierarchyRoot ( pt ) ?
76
+ '' : // don't use the dummyId
77
+ helpers . getPtId ( pt ) ;
78
+ }
79
+
74
80
function plotOne ( gd , cd , element , transitionOpts ) {
75
81
var fullLayout = gd . _fullLayout ;
76
82
var cd0 = cd [ 0 ] ;
@@ -131,13 +137,13 @@ function plotOne(gd, cd, element, transitionOpts) {
131
137
var nextOfPrevEntry = null ;
132
138
var getPrev = function ( pt , onPathbar ) {
133
139
return onPathbar ?
134
- prevLookupPathbar [ helpers . getPtId ( pt ) ] :
135
- prevLookupSlices [ helpers . getPtId ( pt ) ] ;
140
+ prevLookupPathbar [ getKey ( pt ) ] :
141
+ prevLookupSlices [ getKey ( pt ) ] ;
136
142
} ;
137
143
138
144
var getOrigin = function ( pt , onPathbar , refRect , size ) {
139
145
if ( onPathbar ) {
140
- return prevLookupPathbar [ helpers . getPtId ( hierarchy ) ] || pathbarOrigin ;
146
+ return prevLookupPathbar [ getKey ( hierarchy ) ] || pathbarOrigin ;
141
147
} else {
142
148
var ref = prevLookupSlices [ trace . level ] || refRect ;
143
149
@@ -148,13 +154,15 @@ function plotOne(gd, cd, element, transitionOpts) {
148
154
return { } ;
149
155
} ;
150
156
157
+ var isRoot = helpers . isHierarchyRoot ( entry ) ;
158
+
151
159
trace . _entryDepth = entry . data . depth ;
152
- if ( helpers . isHierarchyRoot ( entry ) ) {
160
+ if ( isRoot ) {
153
161
trace . _entryDepth ++ ;
154
162
}
155
163
156
164
// N.B. handle multiple-root special case
157
- if ( cd0 . hasMultipleRoots && helpers . isHierarchyRoot ( entry ) ) {
165
+ if ( cd0 . hasMultipleRoots && isRoot ) {
158
166
maxDepth ++ ;
159
167
}
160
168
trace . _maxDepth = maxDepth ;
@@ -506,31 +514,53 @@ function plotOne(gd, cd, element, transitionOpts) {
506
514
var selDescendants = gTrace . selectAll ( 'g.slice' ) ;
507
515
508
516
if ( ! entry ) {
509
- return selDescendants . remove ( ) && selAncestors . remove ( ) ;
517
+ selAncestors . remove ( ) ;
518
+ selDescendants . remove ( ) ;
519
+ return ;
510
520
}
511
521
512
522
if ( hasTransition ) {
513
523
// Important: do this before binding new sliceData!
514
524
515
525
selAncestors . each ( function ( pt ) {
516
- prevLookupPathbar [ helpers . getPtId ( pt ) ] = {
526
+ prevLookupPathbar [ getKey ( pt ) ] = {
517
527
x0 : pt . x0 ,
518
528
x1 : pt . x1 ,
519
529
y0 : pt . y0 ,
520
- y1 : pt . y1 ,
521
- transform : pt . transform
530
+ y1 : pt . y1
522
531
} ;
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
+ }
523
543
} ) ;
524
544
525
545
selDescendants . each ( function ( pt ) {
526
- prevLookupSlices [ helpers . getPtId ( pt ) ] = {
546
+ prevLookupSlices [ getKey ( pt ) ] = {
527
547
x0 : pt . x0 ,
528
548
x1 : pt . x1 ,
529
549
y0 : pt . y0 ,
530
- y1 : pt . y1 ,
531
- transform : pt . transform
550
+ y1 : pt . y1
532
551
} ;
533
552
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
+
534
564
if ( ! prevEntry && helpers . isEntry ( pt ) ) {
535
565
prevEntry = pt ;
536
566
}
0 commit comments