Skip to content

Commit d3cdd6f

Browse files
committed
update Drawing.selectedPointStyle
- to match current array marker.opacity behavior. - add mucho tests 🔒
1 parent 1859256 commit d3cdd6f

File tree

3 files changed

+335
-43
lines changed

3 files changed

+335
-43
lines changed

src/components/drawing/index.js

+47-33
Original file line numberDiff line numberDiff line change
@@ -435,55 +435,70 @@ drawing.selectedPointStyle = function(s, trace) {
435435
var selectedAttrs = trace.selected || {};
436436
var unselectedAttrs = trace.unselected || {};
437437

438-
s.style('opacity', function(d) {
439-
return d.selected ?
440-
(selectedAttrs.marker || {}).opacity :
441-
(unselectedAttrs.marker || {}).opacity;
442-
});
438+
var marker = trace.marker || {};
439+
var selectedMarker = selectedAttrs.marker || {};
440+
var unselectedMarker = unselectedAttrs.marker || {};
443441

444-
// which is slightly different than:
445-
// ((d.mo + 1 || opacity + 1) - 1) * (d.dim ? DESELECTDIM : 1);
446-
// in https://github.com/plotly/plotly.js/blob/master/src/traces/scatter/select.js
442+
var mo = marker.opacity;
443+
var smo = selectedMarker.opacity;
444+
var usmo = unselectedMarker.opacity;
447445

448446
s.each(function(d) {
449447
var pt = d3.select(this);
450-
var marker = trace.marker || {};
451-
var selectedMarker = selectedAttrs.marker || {};
452-
var unselectedMarker = unselectedAttrs.marker || {};
453-
454-
var smc = selectedMarker.color;
455-
var usmc = unselectedMarker.color;
448+
var mo2;
456449

457-
if(d.selected) {
458-
if(smc) Color.fill(pt, smc);
459-
} else {
460-
if(usmc) Color.fill(pt, usmc);
450+
if(d.mo + 1 || smo || usmo) {
451+
if(d.selected) {
452+
if(smo + 1) mo2 = smo;
453+
} else {
454+
if(usmo + 1) mo2 = usmo;
455+
else mo2 = DESELECTDIM * ((d.mo + 1) ? d.mo : mo);
456+
}
461457
}
462458

463-
if(Registry.traceIs(trace, 'symbols')) {
464-
var sms = selectedMarker.size;
465-
var smx = selectedMarker.symbol;
466-
var usms = unselectedMarker.size;
467-
var usmx = unselectedMarker.symbol;
459+
if(mo2 + 1) pt.style('opacity', mo2);
460+
});
461+
462+
var smc = selectedMarker.color;
463+
var usmc = unselectedMarker.color;
464+
465+
if(smc || usmc) {
466+
s.each(function(d) {
467+
var pt = d3.select(this);
468+
var mc2;
469+
470+
if(d.selected) {
471+
if(smc) mc2 = smc;
472+
} else {
473+
if(usmc) mc2 = usmc;
474+
}
475+
476+
if(mc2) Color.fill(pt, mc2);
477+
});
478+
}
479+
480+
var sms = selectedMarker.size;
481+
var usms = unselectedMarker.size;
482+
483+
if(Registry.traceIs(trace, 'symbols') && (sms + 1 || usms + 1)) {
484+
s.each(function(d) {
485+
var pt = d3.select(this);
468486
var mrc = d.mrc;
469487
var mx = d.mx || marker.symbol || 0;
470488
var mrc2;
471-
var mx2;
472489

473490
if(d.selected) {
474491
mrc2 = (sms + 1) ? sms / 2 : mrc;
475-
mx2 = smx || mx;
476492
} else {
477493
mrc2 = (usms + 1) ? usms / 2 : mrc;
478-
mx2 = usmx || mx;
479494
}
480495

496+
pt.attr('d', makePointPath(drawing.symbolNumber(mx), mrc2));
497+
481498
// save for selectedTextStyle
482499
d.mrc2 = mrc2;
483-
484-
pt.attr('d', makePointPath(drawing.symbolNumber(mx2), mrc2));
485-
}
486-
});
500+
});
501+
}
487502
};
488503

489504
drawing.tryColorscale = function(marker, prefix) {
@@ -572,13 +587,12 @@ drawing.selectedTextStyle = function(s, trace) {
572587

573588
if(d.selected) {
574589
if(stc) tc2 = stc;
575-
else tc2 = Color.addOpacity(tc, 1);
576590
} else {
577591
if(utc) tc2 = utc;
578-
else tc2 = Color.addOpacity(tc, DESELECTDIM);
592+
else if(!stc) tc2 = Color.addOpacity(tc, DESELECTDIM);
579593
}
580594

581-
Color.fill(tx, tc2);
595+
if(tc2) Color.fill(tx, tc2);
582596
textPointPosition(tx, tp, fontSize, d.mrc2 || d.mrc);
583597
});
584598
};

src/traces/choropleth/style.js

+1-10
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,5 @@ function styleTrace(gd, calcTrace) {
4040
.style('opacity', marker.opacity);
4141
});
4242

43-
if(trace.selectedpoints) {
44-
var selectedAttrs = trace.selected || {};
45-
var unselectedAttrs = trace.unselected || {};
46-
47-
locs.style('opacity', function(d) {
48-
return d.selected ?
49-
selectedAttrs.marker.opacity :
50-
unselectedAttrs.marker.opacity;
51-
});
52-
}
43+
Drawing.selectedPointStyle(locs, trace);
5344
}

0 commit comments

Comments
 (0)