@@ -22,6 +22,7 @@ var svgTextUtils = require('../../lib/svg_text_utils');
2222var xmlnsNamespaces = require ( '../../constants/xmlns_namespaces' ) ;
2323var alignment = require ( '../../constants/alignment' ) ;
2424var LINE_SPACING = alignment . LINE_SPACING ;
25+ var DESELECTDIM = require ( '../../constants/interactions' ) . DESELECTDIM ;
2526
2627var subTypes = require ( '../../traces/scatter/subtypes' ) ;
2728var makeBubbleSizeFn = require ( '../../traces/scatter/make_bubble_size_func' ) ;
@@ -426,6 +427,35 @@ drawing.pointStyle = function(s, trace, gd) {
426427 } ) ;
427428} ;
428429
430+ drawing . selectedPointStyle = function ( s , trace ) {
431+ if ( ! s . size ( ) || ! trace . selectedpoints ) return ;
432+
433+ var selectedAttrs = trace . selected || { } ;
434+ var unselectedAttrs = trace . unselected || { } ;
435+
436+ s . style ( 'opacity' , function ( d ) {
437+ return d . selected ?
438+ ( selectedAttrs . marker || { } ) . opacity :
439+ ( unselectedAttrs . marker || { } ) . opacity ;
440+ } ) ;
441+
442+ // which is slightly different than:
443+ // ((d.mo + 1 || opacity + 1) - 1) * (d.dim ? DESELECTDIM : 1);
444+ // in https://github.com/plotly/plotly.js/blob/master/src/traces/scatter/select.js
445+
446+ s . each ( function ( d ) {
447+ var pt = d3 . select ( this ) ;
448+ var smc = ( selectedAttrs . marker || { } ) . color ;
449+ var usmc = ( unselectedAttrs . marker || { } ) . color ;
450+
451+ if ( d . selected ) {
452+ if ( smc ) Color . fill ( pt , smc ) ;
453+ } else {
454+ if ( usmc ) Color . fill ( pt , usmc ) ;
455+ }
456+ } ) ;
457+ } ;
458+
429459drawing . tryColorscale = function ( marker , prefix ) {
430460 var cont = prefix ? Lib . nestedProperty ( marker , prefix ) . get ( ) : marker ,
431461 scl = cont . colorscale ,
@@ -483,6 +513,31 @@ drawing.textPointStyle = function(s, trace, gd) {
483513 } ) ;
484514} ;
485515
516+ drawing . selectedTextStyle = function ( s , trace ) {
517+ if ( ! s . size ( ) || ! trace . selectedpoints ) return ;
518+
519+ var selectedAttrs = trace . selected || { } ;
520+ var unselectedAttrs = trace . unselected || { } ;
521+
522+ s . each ( function ( d ) {
523+ var tx = d3 . select ( this ) ;
524+ var tc = d . tc || trace . textfont . color ;
525+ var stc = ( selectedAttrs . textfont || { } ) . color ;
526+ var utc = ( unselectedAttrs . textfont || { } ) . color ;
527+ var tc2 ;
528+
529+ if ( d . selected ) {
530+ if ( stc ) tc2 = stc ;
531+ else tc2 = Color . addOpacity ( tc , 1 ) ;
532+ } else {
533+ if ( utc ) tc2 = utc ;
534+ else tc2 = Color . addOpacity ( tc , DESELECTDIM ) ;
535+ }
536+
537+ Color . fill ( tx , tc2 ) ;
538+ } ) ;
539+ } ;
540+
486541// generalized Catmull-Rom splines, per
487542// http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf
488543var CatmullRomExp = 0.5 ;
0 commit comments