@@ -612,9 +612,115 @@ describe('@flaky Test select box and lasso in general:', function() {
612612 } )
613613 . catch ( failTest )
614614 . then ( done ) ;
615-
616615 } ) ;
617616
617+ it ( 'should clear selected points on double click only on pan/lasso modes' , function ( done ) {
618+ var gd = createGraphDiv ( ) ;
619+ var fig = Lib . extendDeep ( { } , require ( '@mocks/0.json' ) ) ;
620+ fig . data = [ fig . data [ 0 ] ] ;
621+ fig . layout . xaxis . autorange = false ;
622+ fig . layout . xaxis . range = [ 2 , 8 ] ;
623+ fig . layout . yaxis . autorange = false ;
624+ fig . layout . yaxis . range = [ 0 , 3 ] ;
625+
626+ function _assert ( msg , exp ) {
627+ expect ( gd . layout . xaxis . range )
628+ . toBeCloseToArray ( exp . xrng , 2 , 'xaxis range - ' + msg ) ;
629+ expect ( gd . layout . yaxis . range )
630+ . toBeCloseToArray ( exp . yrng , 2 , 'yaxis range - ' + msg ) ;
631+
632+ if ( exp . selpts === null ) {
633+ expect ( 'selectedpoints' in gd . data [ 0 ] )
634+ . toBe ( false , 'cleared selectedpoints - ' + msg ) ;
635+ } else {
636+ expect ( gd . data [ 0 ] . selectedpoints )
637+ . toBeCloseToArray ( exp . selpts , 2 , 'selectedpoints - ' + msg ) ;
638+ }
639+ }
640+
641+ Plotly . plot ( gd , fig ) . then ( function ( ) {
642+ _assert ( 'base' , {
643+ xrng : [ 2 , 8 ] ,
644+ yrng : [ 0 , 3 ] ,
645+ selpts : null
646+ } ) ;
647+ return Plotly . relayout ( gd , 'xaxis.range' , [ 0 , 10 ] ) ;
648+ } )
649+ . then ( function ( ) {
650+ _assert ( 'after xrng relayout' , {
651+ xrng : [ 0 , 10 ] ,
652+ yrng : [ 0 , 3 ] ,
653+ selpts : null
654+ } ) ;
655+ return doubleClick ( 200 , 200 ) ;
656+ } )
657+ . then ( function ( ) {
658+ _assert ( 'after double-click under dragmode zoom' , {
659+ xrng : [ 2 , 8 ] ,
660+ yrng : [ 0 , 3 ] ,
661+ selpts : null
662+ } ) ;
663+ return Plotly . relayout ( gd , 'dragmode' , 'select' ) ;
664+ } )
665+ . then ( function ( ) {
666+ _assert ( 'after relayout to select' , {
667+ xrng : [ 2 , 8 ] ,
668+ yrng : [ 0 , 3 ] ,
669+ selpts : null
670+ } ) ;
671+ return drag ( [ [ 100 , 100 ] , [ 400 , 400 ] ] ) ;
672+ } )
673+ . then ( function ( ) {
674+ _assert ( 'after selection' , {
675+ xrng : [ 2 , 8 ] ,
676+ yrng : [ 0 , 3 ] ,
677+ selpts : [ 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 ]
678+ } ) ;
679+ return doubleClick ( 200 , 200 ) ;
680+ } )
681+ . then ( function ( ) {
682+ _assert ( 'after double-click under dragmode select' , {
683+ xrng : [ 2 , 8 ] ,
684+ yrng : [ 0 , 3 ] ,
685+ selpts : null
686+ } ) ;
687+ return drag ( [ [ 100 , 100 ] , [ 400 , 400 ] ] ) ;
688+ } )
689+ . then ( function ( ) {
690+ _assert ( 'after selection 2' , {
691+ xrng : [ 2 , 8 ] ,
692+ yrng : [ 0 , 3 ] ,
693+ selpts : [ 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 ]
694+ } ) ;
695+ return Plotly . relayout ( gd , 'dragmode' , 'pan' ) ;
696+ } )
697+ . then ( function ( ) {
698+ _assert ( 'after relayout to pan' , {
699+ xrng : [ 2 , 8 ] ,
700+ yrng : [ 0 , 3 ] ,
701+ selpts : [ 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 ]
702+ } ) ;
703+ return Plotly . relayout ( gd , 'yaxis.range' , [ 0 , 20 ] ) ;
704+ } )
705+ . then ( function ( ) {
706+ _assert ( 'after yrng relayout' , {
707+ xrng : [ 2 , 8 ] ,
708+ yrng : [ 0 , 20 ] ,
709+ selpts : [ 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 ]
710+ } ) ;
711+ return doubleClick ( 200 , 200 ) ;
712+ } )
713+ . then ( function ( ) {
714+ _assert ( 'after double-click under dragmode pan' , {
715+ xrng : [ 2 , 8 ] ,
716+ yrng : [ 0 , 3 ] ,
717+ // N.B. does not clear selection!
718+ selpts : [ 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 ]
719+ } ) ;
720+ } )
721+ . catch ( failTest )
722+ . then ( done ) ;
723+ } ) ;
618724} ) ;
619725
620726describe ( '@flaky Test select box and lasso per trace:' , function ( ) {
0 commit comments