@@ -21,13 +21,18 @@ module.exports = function calc(gd, trace) {
2121 var colors = trace . marker . colors ;
2222 var cd = [ ] ;
2323 var fullLayout = gd . _fullLayout ;
24+ var colorWay = fullLayout . colorway ;
2425 var colorMap = fullLayout . _piecolormap ;
2526 var allThisTraceLabels = { } ;
2627 var vTotal = 0 ;
2728 var hiddenLabels = fullLayout . hiddenlabels || [ ] ;
2829
2930 var i , v , label , hidden , pt ;
3031
32+ if ( ! fullLayout . _piecolorway && colorWay !== Color . defaults ) {
33+ fullLayout . _piecolorway = generateDefaultColors ( colorWay ) ;
34+ }
35+
3136 if ( trace . dlabel ) {
3237 labels = new Array ( vals . length ) ;
3338 for ( i = 0 ; i < vals . length ; i ++ ) {
@@ -107,7 +112,10 @@ module.exports = function calc(gd, trace) {
107112 pt . color = colorMap [ pt . label ] ;
108113 }
109114 else {
110- colorMap [ pt . label ] = pt . color = nextDefaultColor ( fullLayout . _piedefaultcolorcount ) ;
115+ colorMap [ pt . label ] = pt . color = nextDefaultColor (
116+ fullLayout . _piedefaultcolorcount ,
117+ fullLayout . _piecolorway
118+ ) ;
111119 fullLayout . _piedefaultcolorcount ++ ;
112120 }
113121 }
@@ -148,22 +156,29 @@ module.exports = function calc(gd, trace) {
148156 */
149157var pieDefaultColors ;
150158
151- function nextDefaultColor ( index ) {
159+ function nextDefaultColor ( index , pieColorWay ) {
152160 if ( ! pieDefaultColors ) {
153161 // generate this default set on demand (but then it gets saved in the module)
154162 var mainDefaults = Color . defaults ;
155- pieDefaultColors = mainDefaults . slice ( ) ;
163+ pieDefaultColors = generateDefaultColors ( mainDefaults ) ;
164+ }
156165
157- var i ;
166+ var pieColors = pieColorWay || pieDefaultColors ;
167+ return pieColors [ index % pieColors . length ] ;
168+ }
158169
159- for ( i = 0 ; i < mainDefaults . length ; i ++ ) {
160- pieDefaultColors . push ( tinycolor ( mainDefaults [ i ] ) . lighten ( 20 ) . toHexString ( ) ) ;
161- }
170+ function generateDefaultColors ( colorList ) {
171+ var i ;
162172
163- for ( i = 0 ; i < Color . defaults . length ; i ++ ) {
164- pieDefaultColors . push ( tinycolor ( mainDefaults [ i ] ) . darken ( 20 ) . toHexString ( ) ) ;
165- }
173+ var pieColors = colorList . slice ( ) ;
174+
175+ for ( i = 0 ; i < colorList . length ; i ++ ) {
176+ pieColors . push ( tinycolor ( colorList [ i ] ) . lighten ( 20 ) . toHexString ( ) ) ;
177+ }
178+
179+ for ( i = 0 ; i < colorList . length ; i ++ ) {
180+ pieColors . push ( tinycolor ( colorList [ i ] ) . darken ( 20 ) . toHexString ( ) ) ;
166181 }
167182
168- return pieDefaultColors [ index % pieDefaultColors . length ] ;
183+ return pieColors ;
169184}
0 commit comments