Skip to content

Commit b6d4ebc

Browse files
committed
add 'styleOnSelect' method to Scatter* module
... that bypasses DOM style things selection doesn't affect. This speeds up on-selection perf and brings in back to a level comparably to before the persistent selection PR.
1 parent 53a5a64 commit b6d4ebc

File tree

5 files changed

+21
-3
lines changed

5 files changed

+21
-3
lines changed

src/plots/cartesian/select.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -404,18 +404,20 @@ function updateSelectedState(gd, searchTraces, eventData) {
404404
var len = items.length;
405405
var item0 = items[0];
406406
var trace0 = item0.cd[0].trace;
407+
var _module = item0._module;
408+
var fn = _module.styleOnSelect || _module.style;
407409

408410
if(Registry.traceIs(trace0, 'regl')) {
409411
// plot regl traces per module
410412
var cds = new Array(len);
411413
for(j = 0; j < len; j++) {
412414
cds[j] = items[j].cd;
413415
}
414-
item0._module.style(gd, cds);
416+
fn(gd, cds);
415417
} else {
416418
// plot svg trace per trace
417419
for(j = 0; j < len; j++) {
418-
item0._module.style(gd, items[j].cd);
420+
fn(gd, items[j].cd);
419421
}
420422
}
421423
}

src/traces/scatter/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Scatter.arraysToCalcdata = require('./arrays_to_calcdata');
2727
Scatter.plot = require('./plot');
2828
Scatter.colorbar = require('./colorbar');
2929
Scatter.style = require('./style').style;
30+
Scatter.styleOnSelect = require('./style').styleOnSelect;
3031
Scatter.hoverPoints = require('./hover');
3132
Scatter.selectPoints = require('./select');
3233
Scatter.animatable = true;

src/traces/scatter/style.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,20 @@ function stylePoints(sel, trace, gd) {
4545
Drawing.selectedTextStyle(txs, trace);
4646
}
4747

48+
function styleOnSelect(gd, cd) {
49+
var s = cd[0].node3;
50+
var trace = cd[0].trace;
51+
52+
if(trace.selectedpoints) {
53+
Drawing.selectedPointStyle(s.selectAll('path.point'), trace, gd);
54+
Drawing.selectedPointStyle(s.selectAll('text'), trace, gd);
55+
} else {
56+
stylePoints(s, trace, gd);
57+
}
58+
}
59+
4860
module.exports = {
4961
style: style,
50-
stylePoints: stylePoints
62+
stylePoints: stylePoints,
63+
styleOnSelect: styleOnSelect
5164
};

src/traces/scattercarpet/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ ScatterCarpet.colorbar = require('../scatter/colorbar');
1616
ScatterCarpet.calc = require('./calc');
1717
ScatterCarpet.plot = require('./plot');
1818
ScatterCarpet.style = require('../scatter/style').style;
19+
ScatterCarpet.styleOnSelect = require('../scatter/style').styleOnSelect;
1920
ScatterCarpet.hoverPoints = require('./hover');
2021
ScatterCarpet.selectPoints = require('../scatter/select');
2122
ScatterCarpet.eventData = require('./event_data');

src/traces/scatterternary/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ ScatterTernary.colorbar = require('../scatter/colorbar');
1616
ScatterTernary.calc = require('./calc');
1717
ScatterTernary.plot = require('./plot');
1818
ScatterTernary.style = require('../scatter/style').style;
19+
ScatterTernary.styleOnSelect = require('../scatter/style').styleOnSelect;
1920
ScatterTernary.hoverPoints = require('./hover');
2021
ScatterTernary.selectPoints = require('../scatter/select');
2122
ScatterTernary.eventData = require('./event_data');

0 commit comments

Comments
 (0)