@@ -651,3 +651,80 @@ describe('Activate and edit selections', function() {
651651        . then ( done ,  done . fail ) ; 
652652    } ) ; 
653653} ) ; 
654+ 
655+ 
656+ describe ( 'emit plotly_selected event on editing selections in various dragmodes' ,  function ( )  { 
657+     var  gd ; 
658+ 
659+     beforeEach ( function ( )  { 
660+         gd  =  createGraphDiv ( ) ; 
661+     } ) ; 
662+ 
663+     afterEach ( destroyGraphDiv ) ; 
664+ 
665+     [ 'zoom' ,  'pan' ,  'drawrect' ,  'drawclosedpath' ,  'drawcircle' ] . forEach ( function ( dragmode )  { 
666+         it ( 'get eventData for editing selections using '  +  dragmode  +  ' dragmode' ,  function ( done )  { 
667+             var  fig  =  { 
668+                 data : [ 
669+                     { 
670+                         x : [ 0 ,  1 ,  2 ] , 
671+                         y : [ 1 ,  2 ,  3 ] 
672+                     } 
673+                 ] , 
674+                 layout : { 
675+                     width : 800 , 
676+                     height : 600 , 
677+                     margin : { 
678+                         t : 100 , 
679+                         b : 50 , 
680+                         l : 100 , 
681+                         r : 50 
682+                     } , 
683+                     selections : [ {  x0 : 0.5 ,  x1 : 1.5 ,  y0 : 1.5 ,  y1 : 2.5 } ] , 
684+                     dragmode : dragmode 
685+                 } 
686+             } ; 
687+ 
688+             var  range ; 
689+             var  points ; 
690+             var  lassoPoints ; 
691+             var  selections ; 
692+ 
693+             Plotly . newPlot ( gd ,  fig ) 
694+ 
695+             . then ( function ( )  { 
696+                 gd . on ( 'plotly_selected' ,  function ( d )  { 
697+                     lassoPoints  =  d . lassoPoints ; 
698+                     range  =  d . range ; 
699+                     points  =  d . points ; 
700+                     selections  =  d . selections ; 
701+                 } ) ; 
702+             } ) 
703+ 
704+             . then ( function ( )  {  click ( 400 ,  300 ) ;  } )  // activate selection 
705+             . then ( function ( )  {  drag ( [ [ 400 ,  300 ] ,  [ 600 ,  100 ] ] ) ;  } )  // move selection 
706+             . then ( function ( )  { 
707+                 expect ( range ) . not . toBeUndefined ( ) ; 
708+                 expect ( range . x ) . toBeCloseToArray ( [ 1.1926580086580088 ,  2.1926580086580088 ] ,  3 ) ; 
709+                 expect ( range . y ) . toBeCloseToArray ( [ 2.5062641509433967 ,  3.5062641509433967 ] ,  3 ) ; 
710+ 
711+                 expect ( lassoPoints ) . toBeUndefined ( ) ; 
712+ 
713+                 expect ( points ) . not . toBeUndefined ( ) ; 
714+                 expect ( points . length ) . toEqual ( 1 ) ; 
715+                 expect ( points [ 0 ] . fullData ) . not . toBeUndefined ( ) ; 
716+                 expect ( points [ 0 ] . data ) . not . toBeUndefined ( ) ; 
717+                 expect ( points [ 0 ] . data . selectedpoints ) . toEqual ( [ 2 ] ) ; 
718+ 
719+                 expect ( selections ) . not . toBeUndefined ( ) ; 
720+                 expect ( selections . length ) . toEqual ( 1 ) ; 
721+                 expect ( selections [ 0 ] ) . not . toBeUndefined ( ) ; 
722+                 expect ( selections [ 0 ] . x0 ) . toBeCloseTo ( 1.1926580086580088 ,  3 ) ; 
723+                 expect ( selections [ 0 ] . x1 ) . toBeCloseTo ( 2.1926580086580088 ,  3 ) ; 
724+                 expect ( selections [ 0 ] . y0 ) . toBeCloseTo ( 2.5062641509433967 ,  3 ) ; 
725+                 expect ( selections [ 0 ] . y1 ) . toBeCloseTo ( 3.5062641509433967 ,  3 ) ; 
726+             } ) 
727+             . then ( done ,  done . fail ) ; 
728+         } ) ; 
729+     } ) ; 
730+ } ) ; 
0 commit comments