Skip to content

Commit 9da2be6

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

File tree

2 files changed

+24
-16
lines changed

2 files changed

+24
-16
lines changed

src/traces/parcoords/parcoords.js

Lines changed: 11 additions & 14 deletions
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,12 +508,7 @@ 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) {
511+
function newIdx(orig, dim) {
519512
var origIndex = orig.indexOf(dim);
520513
var currentIndex = p.dimensions.map(function(dd) {return dd.crossfilterDimensionIndex;}).indexOf(origIndex);
521514
if(currentIndex === -1) {
@@ -524,13 +517,17 @@ module.exports = function(root, svg, styledData, layout, callbacks) {
524517
}
525518
return currentIndex;
526519
}
527-
d.model._gdDimensions.sort(function(d1, d2) {
528-
var i1 = newIdx(d1);
529-
var i2 = newIdx(d2);
530-
return i1 - i2;
531-
});
520+
521+
function sorter(orig) {
522+
return function sorter(d1, d2) {
523+
var i1 = newIdx(orig, d1);
524+
var i2 = newIdx(orig, d2);
525+
return i1 - i2;
526+
};
527+
}
528+
532529
if(callbacks && callbacks.axesMoved) {
533-
callbacks.axesMoved();
530+
callbacks.axesMoved(p.key, sorter);
534531
}
535532
})
536533
);

src/traces/parcoords/plot.js

Lines changed: 13 additions & 2 deletions
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,14 @@ module.exports = function plot(gd, cdparcoords) {
4650
gd.emit('plotly_unhover', eventData);
4751
};
4852

49-
var axesMoved = function() {
53+
var axesMoved = function(i, sorter) {
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+
var orig = sorter(gdDimensionsOriginalOrder[i].filter(function(d) {return d.visible === void(0) || d.visible;}));
59+
gdDimensions[i].sort(orig);
60+
5061
gd.emit('plotly_restyle');
5162
};
5263

0 commit comments

Comments
 (0)