Skip to content

Commit 6a723fc

Browse files
committed
Speed up selection
1 parent f3806b9 commit 6a723fc

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@
9999
"regl": "^1.3.1",
100100
"regl-error2d": "^2.0.3",
101101
"regl-line2d": "^2.1.2",
102-
"regl-scatter2d": "^2.1.11",
102+
"regl-scatter2d": "^2.1.12",
103103
"right-now": "^1.0.0",
104104
"robust-orientation": "^1.1.3",
105105
"sane-topojson": "^2.0.0",

src/traces/scattergl/index.js

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -387,8 +387,28 @@ function sceneOptions(container, subplot, trace, positions) {
387387

388388
if(hasMarkers) {
389389
markerOptions = makeMarkerOptions(markerOpts);
390-
selectedOptions = trace.selected ? makeMarkerOptions(extend({}, markerOpts, trace.selected.marker)) : markerOptions;
391-
unselectedOptions = trace.unselected ? makeMarkerOptions(extend({}, markerOpts, trace.unselected.marker)) : markerOptions;
390+
391+
if(trace.selected.marker.symbol) {
392+
selectedOptions = makeMarkerOptions(extend({}, markerOpts, trace.selected.marker));
393+
}
394+
// shortcut simple selection logic
395+
else {
396+
selectedOptions = {};
397+
if(trace.selected.marker.size) selectedOptions.sizes = trace.selected.marker.size;
398+
if (trace.selected.marker.color) selectedOptions.colors = trace.selected.marker.color;
399+
if(trace.selected.marker.opacity !== undefined) selectedOptions.opacity = trace.selected.marker.opacity;
400+
}
401+
402+
if(trace.unselected.marker.symbol) {
403+
unselectedOptions = makeMarkerOptions(extend({}, markerOpts, trace.unselected.marker));
404+
}
405+
// shortcut simple selection logic
406+
else {
407+
unselectedOptions = {};
408+
if(trace.unselected.marker.size) unselectedOptions.sizes = trace.unselected.marker.size;
409+
if(trace.unselected.marker.color) unselectedOptions.colors = trace.unselected.marker.color;
410+
if(trace.unselected.marker.opacity !== undefined) unselectedOptions.opacity = trace.unselected.marker.opacity;
411+
}
392412

393413
markerOptions.positions = positions;
394414
}
@@ -911,7 +931,7 @@ function plot(container, subplot, cdata) {
911931
if(!scene.select2d && scene.scatter2d) {
912932
var selectRegl = layout._glcanvas.data()[1].regl;
913933

914-
// smol hack to create scatter instance by cloning scatter2d
934+
// create scatter instance by cloning scatter2d
915935
scene.select2d = createScatter(selectRegl, {clone: scene.scatter2d});
916936
scene.select2d.update(scene.selectedOptions);
917937

0 commit comments

Comments
 (0)