Skip to content

Commit e256929

Browse files
committed
moving gd[].dimensions out of parcoords.js #2
1 parent 133f3ab commit e256929

File tree

2 files changed

+32
-24
lines changed

2 files changed

+32
-24
lines changed

src/traces/parcoords/parcoords.js

+1-22
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,6 @@ function model(layout, d, i, a) {
140140
return {
141141
key: i,
142142
colCount: d.dimensions.filter(visible).length,
143-
_gdDimensions: d._gdDimensions,
144-
_gdDimensionsOriginalOrder: d._gdDimensions.slice(),
145143
dimensions: d.dimensions,
146144
tickDistance: c.tickDistance,
147145
unitToColor: unitToColorScale(d.line.colorscale, d.line.cmin, d.line.cmax, d.line.color),
@@ -510,27 +508,8 @@ module.exports = function(root, svg, styledData, layout, callbacks) {
510508
p.pickLineLayer && p.pickLineLayer.render(p.panels, true);
511509
linePickActive = true;
512510

513-
// Have updated order data on `gd.data` and raise `Plotly.restyle` event
514-
// without having to incur heavy UI blocking due to an actual `Plotly.restyle` call
515-
516-
var orig = p.model._gdDimensionsOriginalOrder
517-
.filter(function(d) {return d.visible === void(0) || d.visible;});
518-
function newIdx(dim) {
519-
var origIndex = orig.indexOf(dim);
520-
var currentIndex = p.dimensions.map(function(dd) {return dd.crossfilterDimensionIndex;}).indexOf(origIndex);
521-
if(currentIndex === -1) {
522-
// invisible dimensions go to the end, retaining their original order
523-
currentIndex += orig.length;
524-
}
525-
return currentIndex;
526-
}
527-
d.model._gdDimensions.sort(function(d1, d2) {
528-
var i1 = newIdx(d1);
529-
var i2 = newIdx(d2);
530-
return i1 - i2;
531-
});
532511
if(callbacks && callbacks.axesMoved) {
533-
callbacks.axesMoved();
512+
callbacks.axesMoved(p.key, p.dimensions.map(function(dd) {return dd.crossfilterDimensionIndex;}));
534513
}
535514
})
536515
);

src/traces/parcoords/plot.js

+31-2
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,24 @@ var Lib = require('../../lib');
1313

1414
module.exports = function plot(gd, cdparcoords) {
1515

16+
var gdDimensions = {};
1617
var gdDimensionsOriginalOrder = {};
1718

1819
var fullLayout = gd._fullLayout;
1920
var svg = fullLayout._paper;
2021
var root = fullLayout._paperdiv;
2122
var data = cdparcoords.map(function(d, i) {
2223
var item = Lib.extendDeep(d[0]);
23-
item._gdDimensions = gd.data[i].dimensions;
24+
gdDimensions[i] = gd.data[i].dimensions;
2425
gdDimensionsOriginalOrder[i] = gd.data[i].dimensions.slice();
2526
return item;
2627
});
2728

2829
var filterChanged = function(i, originalDimensionIndex, newRange) {
2930

31+
// Have updated `constraintrange` data on `gd.data` and raise `Plotly.restyle` event
32+
// without having to incur heavy UI blocking due to an actual `Plotly.restyle` call
33+
3034
var gdDimension = gdDimensionsOriginalOrder[i][originalDimensionIndex];
3135
var gdConstraintRange = gdDimension.constraintrange;
3236
if(!gdConstraintRange || gdConstraintRange.length !== 2) {
@@ -46,7 +50,32 @@ module.exports = function plot(gd, cdparcoords) {
4650
gd.emit('plotly_unhover', eventData);
4751
};
4852

49-
var axesMoved = function() {
53+
var axesMoved = function(i, visibleIndices) {
54+
55+
// Have updated order data on `gd.data` and raise `Plotly.restyle` event
56+
// without having to incur heavy UI blocking due to an actual `Plotly.restyle` call
57+
58+
function newIdx(visibleIndices, orig, dim) {
59+
var origIndex = orig.indexOf(dim);
60+
var currentIndex = visibleIndices.indexOf(origIndex);
61+
if(currentIndex === -1) {
62+
// invisible dimensions go to the end, retaining their original order
63+
currentIndex += orig.length;
64+
}
65+
return currentIndex;
66+
}
67+
68+
function sorter(orig) {
69+
return function sorter(d1, d2) {
70+
var i1 = newIdx(visibleIndices, orig, d1);
71+
var i2 = newIdx(visibleIndices, orig, d2);
72+
return i1 - i2;
73+
};
74+
}
75+
76+
var orig = sorter(gdDimensionsOriginalOrder[i].filter(function(d) {return d.visible === void(0) || d.visible;}));
77+
gdDimensions[i].sort(orig);
78+
5079
gd.emit('plotly_restyle');
5180
};
5281

0 commit comments

Comments
 (0)