Skip to content

Commit 6695e76

Browse files
committed
export a few things in Pie.calc that sunburst will reuse
1 parent 450ceda commit 6695e76

File tree

1 file changed

+36
-28
lines changed

1 file changed

+36
-28
lines changed

src/traces/pie/calc.js

+36-28
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@ var tinycolor = require('tinycolor2');
1515
var Color = require('../../components/color');
1616
var helpers = require('./helpers');
1717

18-
exports.calc = function calc(gd, trace) {
18+
var pieExtendedColorWays = {};
19+
20+
function calc(gd, trace) {
1921
var vals = trace.values;
2022
var hasVals = isArrayOrTypedArray(vals) && vals.length;
2123
var labels = trace.labels;
2224
var colors = trace.marker.colors || [];
2325
var cd = [];
2426
var fullLayout = gd._fullLayout;
25-
var colorMap = fullLayout._piecolormap;
2627
var allThisTraceLabels = {};
2728
var vTotal = 0;
2829
var hiddenLabels = fullLayout.hiddenlabels || [];
@@ -36,18 +37,7 @@ exports.calc = function calc(gd, trace) {
3637
}
3738
}
3839

39-
function pullColor(color, label) {
40-
if(!color) return false;
41-
42-
color = tinycolor(color);
43-
if(!color.isValid()) return false;
44-
45-
color = Color.addOpacity(color, color.getAlpha());
46-
if(!colorMap[label]) colorMap[label] = color;
47-
48-
return color;
49-
}
50-
40+
var pullColor = makePullColorFn(fullLayout._piecolormap);
5141
var seriesLen = (hasVals ? vals : labels).length;
5242

5343
for(i = 0; i < seriesLen; i++) {
@@ -121,7 +111,21 @@ exports.calc = function calc(gd, trace) {
121111
}
122112

123113
return cd;
124-
};
114+
}
115+
116+
function makePullColorFn(colorMap) {
117+
return function pullColor(color, id) {
118+
if(!color) return false;
119+
120+
color = tinycolor(color);
121+
if(!color.isValid()) return false;
122+
123+
color = Color.addOpacity(color, color.getAlpha());
124+
if(!colorMap[id]) colorMap[id] = color;
125+
126+
return color;
127+
};
128+
}
125129

126130
/*
127131
* `calc` filled in (and collated) explicit colors.
@@ -130,45 +134,41 @@ exports.calc = function calc(gd, trace) {
130134
* This is done after sorting, so we pick defaults
131135
* in the order slices will be displayed
132136
*/
133-
exports.crossTraceCalc = function(gd) {
137+
function crossTraceCalc(gd) {
134138
var fullLayout = gd._fullLayout;
135139
var calcdata = gd.calcdata;
136140
var pieColorWay = fullLayout.piecolorway;
137141
var colorMap = fullLayout._piecolormap;
138142

139143
if(fullLayout.extendpiecolors) {
140-
pieColorWay = generateExtendedColors(pieColorWay);
144+
pieColorWay = generateExtendedColors(pieColorWay, pieExtendedColorWays);
141145
}
142146
var dfltColorCount = 0;
143147

144-
var i, j, cd, pt;
145-
for(i = 0; i < calcdata.length; i++) {
146-
cd = calcdata[i];
148+
for(var i = 0; i < calcdata.length; i++) {
149+
var cd = calcdata[i];
147150
if(cd[0].trace.type !== 'pie') continue;
148151

149-
for(j = 0; j < cd.length; j++) {
150-
pt = cd[j];
152+
for(var j = 0; j < cd.length; j++) {
153+
var pt = cd[j];
151154
if(pt.color === false) {
152155
// have we seen this label and assigned a color to it in a previous trace?
153156
if(colorMap[pt.label]) {
154157
pt.color = colorMap[pt.label];
155-
}
156-
else {
158+
} else {
157159
colorMap[pt.label] = pt.color = pieColorWay[dfltColorCount % pieColorWay.length];
158160
dfltColorCount++;
159161
}
160162
}
161163
}
162164
}
163-
};
165+
}
164166

165167
/**
166168
* pick a default color from the main default set, augmented by
167169
* itself lighter then darker before repeating
168170
*/
169-
var extendedColorWays = {};
170-
171-
function generateExtendedColors(colorList) {
171+
function generateExtendedColors(colorList, extendedColorWays) {
172172
var i;
173173
var colorString = JSON.stringify(colorList);
174174
var pieColors = extendedColorWays[colorString];
@@ -187,3 +187,11 @@ function generateExtendedColors(colorList) {
187187

188188
return pieColors;
189189
}
190+
191+
module.exports = {
192+
calc: calc,
193+
crossTraceCalc: crossTraceCalc,
194+
195+
makePullColorFn: makePullColorFn,
196+
generateExtendedColors: generateExtendedColors
197+
};

0 commit comments

Comments
 (0)