@@ -612,9 +612,115 @@ describe('@flaky Test select box and lasso in general:', function() {
612
612
} )
613
613
. catch ( failTest )
614
614
. then ( done ) ;
615
-
616
615
} ) ;
617
616
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
+ } ) ;
618
724
} ) ;
619
725
620
726
describe ( '@flaky Test select box and lasso per trace:' , function ( ) {
0 commit comments