@@ -35,37 +35,57 @@ function styleOne(s, pt, trace, opts) {
3535 var ptNumber = cdi . i ;
3636 var lineColor ;
3737 var lineWidth ;
38- var opacity ;
39-
40- var depthFade = function ( n ) {
41- var base = trace . marker . opacitybase ;
42- var step = trace . marker . opacitystep ;
43-
44- return n === 0 ? base :
45- Math . max ( 0 , Math . min ( 1 , n * step ) ) ;
46- } ;
38+ var fillColor = cdi . color ;
39+ var isRoot = helpers . isHierarchyRoot ( pt ) ;
40+ var opacity = 1 ;
4741
4842 if ( hovered ) {
4943 lineColor = trace . _hovered . marker . line . color ;
5044 lineWidth = trace . _hovered . marker . line . width ;
51- opacity = trace . _hovered . marker . opacity ;
5245 } else {
53- if ( helpers . isHierarchyRoot ( pt ) ) {
46+ if ( isRoot && fillColor === 'rgba(0,0,0,0)' ) {
47+ opacity = 0 ;
5448 lineColor = 'rgba(0,0,0,0)' ;
5549 lineWidth = 0 ;
5650 } else {
5751 lineColor = Lib . castOption ( trace , ptNumber , 'marker.line.color' ) || Color . defaultLine ;
5852 lineWidth = Lib . castOption ( trace , ptNumber , 'marker.line.width' ) || 0 ;
59- }
6053
61- opacity =
62- trace . _hasColorscale || helpers . isLeaf ( pt ) ? 1 :
63- pt . onPathbar ? trace . pathbar . opacity :
64- depthFade ( pt . data . depth - trace . _entryDepth ) ;
54+ if ( ! trace . _hasColorscale && ! pt . onPathbar ) {
55+ var depthfade = trace . marker . depthfade ;
56+ if ( depthfade ) {
57+ var fadedColor = Color . combine ( Color . addOpacity ( trace . _backgroundColor , 0.75 ) , fillColor ) ;
58+ var n ;
59+
60+ if ( depthfade === true ) {
61+ var maxDepth = helpers . getMaxDepth ( trace ) ;
62+ if ( isFinite ( maxDepth ) ) {
63+ if ( helpers . isLeaf ( pt ) ) {
64+ n = 0 ;
65+ } else {
66+ n = ( trace . _maxVisibleLayers ) - ( pt . data . depth - trace . _entryDepth ) ;
67+ }
68+ } else {
69+ n = pt . data . height + 1 ;
70+ }
71+ } else { // i.e. case of depthfade === 'reversed'
72+ n = pt . data . depth - trace . _entryDepth ;
73+ if ( ! trace . _atRootLevel ) n ++ ;
74+ }
75+
76+ if ( n > 0 ) {
77+ for ( var i = 0 ; i < n ; i ++ ) {
78+ var ratio = 0.5 * i / n ;
79+ fillColor = Color . combine ( Color . addOpacity ( fadedColor , ratio ) , fillColor ) ;
80+ }
81+ }
82+ }
83+ }
84+ }
6585 }
6686
6787 s . style ( 'stroke-width' , lineWidth )
68- . call ( Color . fill , cdi . color )
88+ . call ( Color . fill , fillColor )
6989 . call ( Color . stroke , lineColor )
7090 . style ( 'opacity' , opacity ) ;
7191}
0 commit comments