Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c4012e1

Browse files
committed
Reintroduce selectMode guard in scattegl [1852]
- Reason: to spare the creation of an unnecessary regl context when selection can't take place. - TODO: use the not yet introduced clickmode layout attribute to set the select mode.
1 parent d7e64dd commit c4012e1

File tree

1 file changed

+26
-23
lines changed

1 file changed

+26
-23
lines changed

src/traces/scattergl/index.js

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,9 @@ function plot(gd, subplot, cdata) {
522522
scene.selectBatch = null;
523523
scene.unselectBatch = null;
524524
var dragmode = fullLayout.dragmode;
525-
var selectMode = dragmode === 'lasso' || dragmode === 'select';
525+
// TODO get that from layout as soon as clickmode attribute has been added
526+
var clickmode = 'select';
527+
var selectMode = (dragmode === 'lasso' || dragmode === 'select' || clickmode === 'select');
526528

527529
for(i = 0; i < cdata.length; i++) {
528530
var cd0 = cdata[i][0];
@@ -571,31 +573,32 @@ function plot(gd, subplot, cdata) {
571573
}
572574
}
573575

576+
if(selectMode) {
577+
// create select2d
578+
if(!scene.select2d) {
579+
// create scatter instance by cloning scatter2d
580+
scene.select2d = createScatter(fullLayout._glcanvas.data()[1].regl);
581+
}
574582

575-
// create select2d
576-
if(!scene.select2d) {
577-
// create scatter instance by cloning scatter2d
578-
scene.select2d = createScatter(fullLayout._glcanvas.data()[1].regl);
579-
}
580-
581-
if(scene.scatter2d && scene.selectBatch && scene.selectBatch.length) {
582-
// update only traces with selection
583-
scene.scatter2d.update(scene.markerUnselectedOptions.map(function(opts, i) {
584-
return scene.selectBatch[i] ? opts : null;
585-
}));
586-
}
583+
if(scene.scatter2d && scene.selectBatch && scene.selectBatch.length) {
584+
// update only traces with selection
585+
scene.scatter2d.update(scene.markerUnselectedOptions.map(function(opts, i) {
586+
return scene.selectBatch[i] ? opts : null;
587+
}));
588+
}
587589

588-
if(scene.select2d) {
589-
scene.select2d.update(scene.markerOptions);
590-
scene.select2d.update(scene.markerSelectedOptions);
591-
}
590+
if(scene.select2d) {
591+
scene.select2d.update(scene.markerOptions);
592+
scene.select2d.update(scene.markerSelectedOptions);
593+
}
592594

593-
if(scene.glText) {
594-
cdata.forEach(function(cdscatter) {
595-
if(cdscatter && cdscatter[0] && cdscatter[0].trace) {
596-
styleTextSelection(cdscatter);
597-
}
598-
});
595+
if(scene.glText) {
596+
cdata.forEach(function(cdscatter) {
597+
if(cdscatter && cdscatter[0] && cdscatter[0].trace) {
598+
styleTextSelection(cdscatter);
599+
}
600+
});
601+
}
599602
}
600603

601604
// provide viewport and range

0 commit comments

Comments
 (0)