@@ -86,6 +86,13 @@ function plotOne(gd, cd, element, transitionOpts) {
86
86
var trace = cd0 . trace ;
87
87
var hierarchy = cd0 . hierarchy ;
88
88
var entry = helpers . findEntryWithLevel ( hierarchy , trace . level ) ;
89
+ var ancestorNodes = helpers . listPath ( entry . data ) ;
90
+ var numAncestors = ancestorNodes . length ;
91
+ entry . _parent = ( numAncestors ?
92
+ ancestorNodes [ numAncestors - 1 ] :
93
+ hierarchy // parent of root is itself
94
+ ) . data ;
95
+
89
96
var maxDepth = helpers . getMaxDepth ( trace ) ;
90
97
91
98
var gs = fullLayout . _size ;
@@ -482,9 +489,11 @@ exports.formatSliceLabel = function(pt, entry, trace, cd, fullLayout) {
482
489
var hierarchy = cd0 . hierarchy ;
483
490
var ref ;
484
491
var calcPercent = function ( ) {
492
+ var refData = ref . data ? ref . data . data : ref ;
493
+
485
494
return cdi . hasOwnProperty ( 'v' ) ?
486
- cdi . v / ref . data . data . v :
487
- cdi . value / ref . data . data . value ;
495
+ cdi . v / refData . v :
496
+ cdi . value / refData . value ;
488
497
} ;
489
498
490
499
if ( trace . type === 'treemap' && helpers . isHeader ( pt , trace ) ) {
@@ -504,6 +513,8 @@ exports.formatSliceLabel = function(pt, entry, trace, cd, fullLayout) {
504
513
var hasFlag = function ( flag ) { return parts . indexOf ( flag ) !== - 1 ; } ;
505
514
var thisText = [ ] ;
506
515
var tx ;
516
+ var parent = helpers . isEntry ( pt ) ? pt . _parent : pt . parent ;
517
+ var isRoot = helpers . isHierarchyRoot ( pt ) ;
507
518
508
519
if ( hasFlag ( 'label' ) && cdi . label ) {
509
520
thisText . push ( cdi . label ) ;
@@ -513,41 +524,43 @@ exports.formatSliceLabel = function(pt, entry, trace, cd, fullLayout) {
513
524
thisText . push ( helpers . formatValue ( cdi . v , separators ) ) ;
514
525
}
515
526
516
- if ( hasFlag ( 'current path' ) ) {
517
- thisText . push ( helpers . getPath ( pt . data ) ) ;
518
- }
519
-
520
- var nPercent = 0 ;
521
- if ( hasFlag ( 'percent parent' ) ) nPercent ++ ;
522
- if ( hasFlag ( 'percent entry' ) ) nPercent ++ ;
523
- if ( hasFlag ( 'percent root' ) ) nPercent ++ ;
524
- var hasMultiplePercents = nPercent > 1 ;
525
-
526
- if ( nPercent ) {
527
- var percent ;
528
- var addPercent = function ( key ) {
529
- tx = helpers . formatPercent ( percent , separators ) ;
530
-
531
- if ( hasMultiplePercents ) tx += ' of ' + key + ' ' ;
532
- thisText . push ( tx ) ;
533
- } ;
534
-
535
- var makePercent = function ( key ) {
536
- percent = calcPercent ( ) ;
537
- addPercent ( key ) ;
538
- } ;
539
-
540
- if ( hasFlag ( 'percent parent' ) && pt . parent ) {
541
- ref = pt . parent ;
542
- makePercent ( 'parent' ) ;
527
+ if ( ! isRoot ) {
528
+ if ( hasFlag ( 'current path' ) ) {
529
+ thisText . push ( helpers . getPath ( pt . data ) ) ;
543
530
}
544
- if ( hasFlag ( 'percent entry' ) && pt . parent ) {
545
- ref = entry ;
546
- makePercent ( 'entry' ) ;
547
- }
548
- if ( hasFlag ( 'percent root' ) && ( pt . parent || helpers . isLeaf ( pt ) ) ) {
549
- ref = hierarchy ;
550
- makePercent ( 'root' ) ;
531
+
532
+ var nPercent = 0 ;
533
+ if ( hasFlag ( 'percent parent' ) ) nPercent ++ ;
534
+ if ( hasFlag ( 'percent entry' ) ) nPercent ++ ;
535
+ if ( hasFlag ( 'percent root' ) ) nPercent ++ ;
536
+ var hasMultiplePercents = nPercent > 1 ;
537
+
538
+ if ( nPercent ) {
539
+ var percent ;
540
+ var addPercent = function ( key ) {
541
+ tx = helpers . formatPercent ( percent , separators ) ;
542
+
543
+ if ( hasMultiplePercents ) tx += ' of ' + key + ' ' ;
544
+ thisText . push ( tx ) ;
545
+ } ;
546
+
547
+ var makePercent = function ( key ) {
548
+ percent = calcPercent ( ) ;
549
+ addPercent ( key ) ;
550
+ } ;
551
+
552
+ if ( hasFlag ( 'percent parent' ) && parent ) {
553
+ ref = parent ;
554
+ makePercent ( 'parent' ) ;
555
+ }
556
+ if ( hasFlag ( 'percent entry' ) && parent ) {
557
+ ref = entry ;
558
+ makePercent ( 'entry' ) ;
559
+ }
560
+ if ( hasFlag ( 'percent root' ) && ( parent || helpers . isLeaf ( pt ) ) ) {
561
+ ref = hierarchy ;
562
+ makePercent ( 'root' ) ;
563
+ }
551
564
}
552
565
}
553
566
0 commit comments