@@ -21,13 +21,18 @@ module.exports = function calc(gd, trace) {
21
21
var colors = trace . marker . colors ;
22
22
var cd = [ ] ;
23
23
var fullLayout = gd . _fullLayout ;
24
+ var colorWay = fullLayout . colorway ;
24
25
var colorMap = fullLayout . _piecolormap ;
25
26
var allThisTraceLabels = { } ;
26
27
var vTotal = 0 ;
27
28
var hiddenLabels = fullLayout . hiddenlabels || [ ] ;
28
29
29
30
var i , v , label , hidden , pt ;
30
31
32
+ if ( ! fullLayout . _piecolorway && colorWay !== Color . defaults ) {
33
+ fullLayout . _piecolorway = generateDefaultColors ( colorWay ) ;
34
+ }
35
+
31
36
if ( trace . dlabel ) {
32
37
labels = new Array ( vals . length ) ;
33
38
for ( i = 0 ; i < vals . length ; i ++ ) {
@@ -107,7 +112,10 @@ module.exports = function calc(gd, trace) {
107
112
pt . color = colorMap [ pt . label ] ;
108
113
}
109
114
else {
110
- colorMap [ pt . label ] = pt . color = nextDefaultColor ( fullLayout . _piedefaultcolorcount ) ;
115
+ colorMap [ pt . label ] = pt . color = nextDefaultColor (
116
+ fullLayout . _piedefaultcolorcount ,
117
+ fullLayout . _piecolorway
118
+ ) ;
111
119
fullLayout . _piedefaultcolorcount ++ ;
112
120
}
113
121
}
@@ -148,22 +156,29 @@ module.exports = function calc(gd, trace) {
148
156
*/
149
157
var pieDefaultColors ;
150
158
151
- function nextDefaultColor ( index ) {
159
+ function nextDefaultColor ( index , pieColorWay ) {
152
160
if ( ! pieDefaultColors ) {
153
161
// generate this default set on demand (but then it gets saved in the module)
154
162
var mainDefaults = Color . defaults ;
155
- pieDefaultColors = mainDefaults . slice ( ) ;
163
+ pieDefaultColors = generateDefaultColors ( mainDefaults ) ;
164
+ }
156
165
157
- var i ;
166
+ var pieColors = pieColorWay || pieDefaultColors ;
167
+ return pieColors [ index % pieColors . length ] ;
168
+ }
158
169
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 ;
162
172
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 ( ) ) ;
166
181
}
167
182
168
- return pieDefaultColors [ index % pieDefaultColors . length ] ;
183
+ return pieColors ;
169
184
}
0 commit comments