Skip to content

Commit 1b7c0ef

Browse files
committed
centralize functions in parcoords helpers
1 parent b5d24e1 commit 1b7c0ef

File tree

3 files changed

+36
-19
lines changed

3 files changed

+36
-19
lines changed

src/traces/parcoords/helpers.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* Copyright 2012-2019, Plotly, Inc.
3+
* All rights reserved.
4+
*
5+
* This source code is licensed under the MIT license found in the
6+
* LICENSE file in the root directory of this source tree.
7+
*/
8+
9+
'use strict';
10+
11+
var isTypedArray = require('../../lib').isTypedArray;
12+
13+
exports.convertTypedArray = function(a) {
14+
return isTypedArray(a) ? Array.prototype.slice.call(a) : a;
15+
};
16+
17+
exports.isOrdinal = function(dimension) {
18+
return !!dimension.tickvals;
19+
};
20+
21+
exports.isVisible = function(dimension) {
22+
return dimension.visible || !('visible' in dimension);
23+
};

src/traces/parcoords/parcoords.js

+10-13
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,11 @@ var keyFun = gup.keyFun;
2222
var repeat = gup.repeat;
2323
var unwrap = gup.unwrap;
2424

25+
var helpers = require('./helpers');
2526
var c = require('./constants');
2627
var brush = require('./axisbrush');
2728
var lineLayerMaker = require('./lines');
2829

29-
function convertTypedArray(a) {
30-
return Lib.isTypedArray(a) ? Array.prototype.slice.call(a) : a;
31-
}
32-
33-
function visible(dimension) { return !('visible' in dimension) || dimension.visible; }
34-
3530
function dimensionExtent(dimension) {
3631
var lo = dimension.range ? dimension.range[0] : Lib.aggNums(Math.min, null, dimension.values, dimension._length);
3732
var hi = dimension.range ? dimension.range[1] : Lib.aggNums(Math.max, null, dimension.values, dimension._length);
@@ -88,7 +83,9 @@ function domainScale(height, padding, dimension, tickvals, ticktext) {
8883
.range([height - padding, padding]);
8984
}
9085

91-
function unitToPaddedPx(height, padding) { return d3.scale.linear().range([padding, height - padding]); }
86+
function unitToPaddedPx(height, padding) {
87+
return d3.scale.linear().range([padding, height - padding]);
88+
}
9289

9390
function domainToPaddedUnitScale(dimension, padFraction) {
9491
return d3.scale.linear()
@@ -140,7 +137,7 @@ function someFiltersActive(view) {
140137
function model(layout, d, i) {
141138
var cd0 = unwrap(d);
142139
var trace = cd0.trace;
143-
var lineColor = convertTypedArray(cd0.lineColor);
140+
var lineColor = helpers.convertTypedArray(cd0.lineColor);
144141
var line = trace.line;
145142
var cOpts = Colorscale.extractOpts(line);
146143
var cscale = cOpts.reversescale ? Colorscale.flipScale(cd0.cscale) : cd0.cscale;
@@ -172,7 +169,7 @@ function model(layout, d, i) {
172169

173170
return {
174171
key: i,
175-
colCount: dimensions.filter(visible).length,
172+
colCount: dimensions.filter(helpers.isVisible).length,
176173
dimensions: dimensions,
177174
tickDistance: c.tickDistance,
178175
unitToColor: unitToColorScale(cscale),
@@ -216,7 +213,7 @@ function viewModel(state, callbacks, model) {
216213

217214
var uniqueKeys = {};
218215

219-
viewModel.dimensions = dimensions.filter(visible).map(function(dimension, i) {
216+
viewModel.dimensions = dimensions.filter(helpers.isVisible).map(function(dimension, i) {
220217
var domainToPaddedUnit = domainToPaddedUnitScale(dimension, unitPad);
221218
var foundKey = uniqueKeys[dimension.label];
222219
uniqueKeys[dimension.label] = (foundKey || 0) + 1;
@@ -276,16 +273,16 @@ function viewModel(state, callbacks, model) {
276273
}
277274
} else tickvals = undefined;
278275

279-
truncatedValues = convertTypedArray(truncatedValues);
280-
truncatedValues = convertTypedArray(truncatedValues);
276+
truncatedValues = helpers.convertTypedArray(truncatedValues);
277+
truncatedValues = helpers.convertTypedArray(truncatedValues);
281278

282279
return {
283280
key: key,
284281
label: dimension.label,
285282
tickFormat: dimension.tickformat,
286283
tickvals: tickvals,
287284
ticktext: ticktext,
288-
ordinal: !!tickvals,
285+
ordinal: helpers.isOrdinal(dimension),
289286
multiselect: dimension.multiselect,
290287
xIndex: i,
291288
crossfilterDimensionIndex: i,

src/traces/parcoords/plot.js

+3-6
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@
1010

1111
var parcoords = require('./parcoords');
1212
var prepareRegl = require('../../lib/prepare_regl');
13-
14-
function visible(dimension) {
15-
return dimension.visible || !('visible' in dimension);
16-
}
13+
var isVisible = require('./helpers').isVisible;
1714

1815
function newIndex(visibleIndices, orig, dim) {
1916
var origIndex = orig.indexOf(dim);
@@ -107,12 +104,12 @@ module.exports = function plot(gd, cdModule) {
107104
// without having to incur heavy UI blocking due to an actual `Plotly.restyle` call
108105

109106
// drag&drop sorting of the visible dimensions
110-
var orig = sorter(visibleIndices, initialDims[i].filter(visible));
107+
var orig = sorter(visibleIndices, initialDims[i].filter(isVisible));
111108
currentDims[i].sort(orig);
112109

113110
// invisible dimensions are not interpreted in the context of drag&drop sorting as an invisible dimension
114111
// cannot be dragged; they're interspersed into their original positions by this subsequent merging step
115-
initialDims[i].filter(function(d) {return !visible(d);})
112+
initialDims[i].filter(function(d) {return !isVisible(d);})
116113
.sort(function(d) {
117114
// subsequent splicing to be done left to right, otherwise indices may be incorrect
118115
return initialDims[i].indexOf(d);

0 commit comments

Comments
 (0)