@@ -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