Skip to content

Commit 8f1fde1

Browse files
committed
use extractOpts in extractScale
... and add makeColorScaleFuncFromTrace wrapper to DRY things up a little bit.
1 parent 3e5bec8 commit 8f1fde1

File tree

7 files changed

+29
-39
lines changed

7 files changed

+29
-39
lines changed

Diff for: src/components/colorscale/helpers.js

+15-17
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ function extractOpts(cont) {
104104

105105
return out;
106106
}
107+
107108
/**
108109
* Extract colorscale into numeric domain and color range.
109110
*
@@ -112,24 +113,19 @@ function extractOpts(cont) {
112113
* - cmin/zmin {number}
113114
* - cmax/zmax {number}
114115
* - reversescale {boolean}
115-
* @param {object} opts
116-
* - cLetter {string} 'c' (for cmin/cmax) or 'z' (for zmin/zmax)
117116
*
118117
* @return {object}
119118
* - domain {array}
120119
* - range {array}
121120
*/
122-
function extractScale(cont, opts) {
123-
var cLetter = opts.cLetter;
124-
125-
var scl = cont.reversescale ?
126-
flipScale(cont.colorscale) :
127-
cont.colorscale;
121+
function extractScale(cont) {
122+
var cOpts = extractOpts(cont);
123+
var cmin = cOpts.min;
124+
var cmax = cOpts.max;
128125

129-
// minimum color value (used to clamp scale)
130-
var cmin = cont[cLetter + 'min'];
131-
// maximum color value (used to clamp scale)
132-
var cmax = cont[cLetter + 'max'];
126+
var scl = cOpts.reversescale ?
127+
flipScale(cOpts.colorscale) :
128+
cOpts.colorscale;
133129

134130
var N = scl.length;
135131
var domain = new Array(N);
@@ -141,10 +137,7 @@ function extractScale(cont, opts) {
141137
range[i] = si[1];
142138
}
143139

144-
return {
145-
domain: domain,
146-
range: range
147-
};
140+
return {domain: domain, range: range};
148141
}
149142

150143
function flipScale(scl) {
@@ -220,6 +213,10 @@ function makeColorScaleFunc(specs, opts) {
220213
return sclFunc;
221214
}
222215

216+
function makeColorScaleFuncFromTrace(trace, opts) {
217+
return makeColorScaleFunc(extractScale(trace), opts);
218+
}
219+
223220
function colorArray2rbga(colorArray) {
224221
var colorObj = {
225222
r: colorArray[0],
@@ -236,5 +233,6 @@ module.exports = {
236233
extractOpts: extractOpts,
237234
extractScale: extractScale,
238235
flipScale: flipScale,
239-
makeColorScaleFunc: makeColorScaleFunc
236+
makeColorScaleFunc: makeColorScaleFunc,
237+
makeColorScaleFuncFromTrace: makeColorScaleFuncFromTrace
240238
};

Diff for: src/components/colorscale/index.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ module.exports = {
3333

3434
hasColorscale: helpers.hasColorscale,
3535
extractOpts: helpers.extractOpts,
36-
flipScale: helpers.flipScale,
3736
extractScale: helpers.extractScale,
38-
makeColorScaleFunc: helpers.makeColorScaleFunc
37+
flipScale: helpers.flipScale,
38+
makeColorScaleFunc: helpers.makeColorScaleFunc,
39+
makeColorScaleFuncFromTrace: helpers.makeColorScaleFuncFromTrace
3940
};

Diff for: src/lib/gl_format_color.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,7 @@ function formatColor(containerIn, opacityIn, len) {
4747
var sclFunc, getColor, getOpacity, colori, opacityi;
4848

4949
if(containerIn.colorscale !== undefined) {
50-
sclFunc = Colorscale.makeColorScaleFunc(
51-
Colorscale.extractScale(containerIn, {cLetter: 'c'})
52-
);
50+
sclFunc = Colorscale.makeColorScaleFuncFromTrace(containerIn);
5351
} else {
5452
sclFunc = validateColor;
5553
}

Diff for: src/traces/choropleth/style.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,7 @@ function styleTrace(gd, calcTrace) {
2424
var marker = trace.marker || {};
2525
var markerLine = marker.line || {};
2626

27-
var sclFunc = Colorscale.makeColorScaleFunc(
28-
Colorscale.extractScale(trace, {cLetter: 'z'})
29-
);
27+
var sclFunc = Colorscale.makeColorScaleFuncFromTrace(trace);
3028

3129
locs.each(function(d) {
3230
d3.select(this)

Diff for: src/traces/heatmap/plot.js

+2-5
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ var tinycolor = require('tinycolor2');
1414

1515
var Registry = require('../../registry');
1616
var Lib = require('../../lib');
17-
var Colorscale = require('../../components/colorscale');
17+
var makeColorScaleFuncFromTrace = require('../../components/colorscale').makeColorScaleFuncFromTrace;
1818
var xmlnsNamespaces = require('../../constants/xmlns_namespaces');
1919

2020
module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
@@ -140,10 +140,7 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
140140
canvas.height = canvasH;
141141
var context = canvas.getContext('2d');
142142

143-
var sclFunc = Colorscale.makeColorScaleFunc(
144-
Colorscale.extractScale(trace, {cLetter: 'z'}),
145-
{ noNumericCheck: true, returnArray: true }
146-
);
143+
var sclFunc = makeColorScaleFuncFromTrace(trace, {noNumericCheck: true, returnArray: true});
147144

148145
// map brick boundaries to image pixels
149146
var xpx,

Diff for: src/traces/scattermapbox/convert.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,7 @@ function makeCircleOpts(calcTrace) {
157157
var colorFn;
158158
if(arrayColor) {
159159
if(Colorscale.hasColorscale(trace, 'marker')) {
160-
colorFn = Colorscale.makeColorScaleFunc(
161-
Colorscale.extractScale(marker, {cLetter: 'c'})
162-
);
160+
colorFn = Colorscale.makeColorScaleFuncFromTrace(marker);
163161
} else {
164162
colorFn = Lib.identity;
165163
}

Diff for: test/jasmine/tests/colorscale_test.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -647,11 +647,11 @@ describe('Test colorscale:', function() {
647647
it('should constrain color array values between cmin and cmax', function() {
648648
var trace = {
649649
colorscale: scale,
650-
pmin: 2,
651-
pmax: 3
650+
cmin: 2,
651+
cmax: 3
652652
};
653653

654-
var specs = Colorscale.extractScale(trace, {cLetter: 'p'});
654+
var specs = Colorscale.extractScale(trace);
655655
var sclFunc = Colorscale.makeColorScaleFunc(specs);
656656

657657
var color1 = sclFunc(1);
@@ -669,11 +669,11 @@ describe('Test colorscale:', function() {
669669
var trace = {
670670
colorscale: scale,
671671
reversescale: true,
672-
pmin: 2,
673-
pmax: 3
672+
zmin: 2,
673+
zmax: 3
674674
};
675675

676-
var specs = Colorscale.extractScale(trace, {cLetter: 'p'});
676+
var specs = Colorscale.extractScale(trace);
677677
var sclFunc = Colorscale.makeColorScaleFunc(specs);
678678

679679
var color1 = sclFunc(1);

0 commit comments

Comments
 (0)