@@ -420,4 +420,44 @@ describe('select box and lasso', function() {
420
420
. catch ( fail )
421
421
. then ( done ) ;
422
422
} ) ;
423
+
424
+ it ( 'should work on scattercarpet traces' , function ( done ) {
425
+ var fig = Lib . extendDeep ( { } , require ( '@mocks/scattercarpet' ) ) ;
426
+ var gd = createGraphDiv ( ) ;
427
+ var pts = [ ] ;
428
+
429
+ fig . layout . dragmode = 'select' ;
430
+
431
+ function assertPoints ( expected ) {
432
+ expect ( pts . length ) . toBe ( expected . length , 'selected points length' ) ;
433
+
434
+ pts . forEach ( function ( p , i ) {
435
+ var e = expected [ i ] ;
436
+ expect ( p . a ) . toBe ( e . a , 'selected pt a val' ) ;
437
+ expect ( p . b ) . toBe ( e . b , 'selected pt b val' ) ;
438
+ } ) ;
439
+ pts = [ ] ;
440
+ }
441
+
442
+ Plotly . plot ( gd , fig ) . then ( function ( ) {
443
+ gd . on ( 'plotly_selected' , function ( data ) {
444
+ pts = data . points ;
445
+ } ) ;
446
+
447
+ assertSelectionNodes ( 0 , 0 ) ;
448
+ drag ( [ [ 300 , 200 ] , [ 400 , 250 ] ] ) ;
449
+ assertSelectionNodes ( 0 , 2 ) ;
450
+ assertPoints ( [ { a : 0.2 , b : 1.5 } ] ) ;
451
+
452
+ return Plotly . relayout ( gd , 'dragmode' , 'lasso' ) ;
453
+ } )
454
+ . then ( function ( ) {
455
+ assertSelectionNodes ( 0 , 0 ) ;
456
+ drag ( [ [ 300 , 200 ] , [ 400 , 200 ] , [ 400 , 250 ] , [ 300 , 250 ] , [ 300 , 200 ] ] ) ;
457
+ assertSelectionNodes ( 0 , 2 ) ;
458
+ assertPoints ( [ { a : 0.2 , b : 1.5 } ] ) ;
459
+ } )
460
+ . catch ( fail )
461
+ . then ( done ) ;
462
+ } ) ;
423
463
} ) ;
0 commit comments