@@ -516,12 +516,24 @@ describe('the range slider', function() {
516
516
517
517
describe ( 'in general' , function ( ) {
518
518
519
+ beforeAll ( function ( ) {
520
+ jasmine . addMatchers ( customMatchers ) ;
521
+ } ) ;
522
+
519
523
beforeEach ( function ( ) {
520
524
gd = createGraphDiv ( ) ;
521
525
} ) ;
522
526
523
527
afterEach ( destroyGraphDiv ) ;
524
528
529
+ function assertRange ( axRange , rsRange ) {
530
+ // lower toBeCloseToArray precision for FF38 on CI
531
+ var precision = 1e-2 ;
532
+
533
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( axRange , precision ) ;
534
+ expect ( gd . layout . xaxis . rangeslider . range ) . toBeCloseToArray ( rsRange , precision ) ;
535
+ }
536
+
525
537
it ( 'should plot when only x data is provided' , function ( done ) {
526
538
Plotly . plot ( gd , [ { x : [ 1 , 2 , 3 ] } ] , { xaxis : { rangeslider : { } } } )
527
539
. then ( function ( ) {
@@ -541,6 +553,80 @@ describe('the range slider', function() {
541
553
} )
542
554
. then ( done ) ;
543
555
} ) ;
556
+
557
+ it ( 'should expand its range in accordance with new data arrays' , function ( done ) {
558
+ Plotly . plot ( gd , [ {
559
+ y : [ 2 , 1 , 2 ]
560
+ } ] , {
561
+ xaxis : { rangeslider : { } }
562
+ } )
563
+ . then ( function ( ) {
564
+ assertRange ( [ - 0.13 , 2.13 ] , [ - 0.13 , 2.13 ] ) ;
565
+
566
+ return Plotly . restyle ( gd , 'y' , [ [ 2 , 1 , 2 , 1 ] ] ) ;
567
+ } )
568
+ . then ( function ( ) {
569
+ assertRange ( [ - 0.19 , 3.19 ] , [ - 0.19 , 3.19 ] ) ;
570
+
571
+ return Plotly . extendTraces ( gd , { y : [ [ 2 , 1 ] ] } , [ 0 ] ) ;
572
+ } )
573
+ . then ( function ( ) {
574
+ assertRange ( [ - 0.32 , 5.32 ] , [ - 0.32 , 5.32 ] ) ;
575
+
576
+ return Plotly . addTraces ( gd , { x : [ 0 , 10 ] , y : [ 2 , 1 ] } ) ;
577
+ } )
578
+ . then ( function ( ) {
579
+ assertRange ( [ - 0.68 , 10.68 ] , [ - 0.68 , 10.68 ] ) ;
580
+
581
+ return Plotly . deleteTraces ( gd , [ 1 ] ) ;
582
+ } )
583
+ . then ( function ( ) {
584
+ assertRange ( [ - 0.31 , 5.31 ] , [ - 0.31 , 5.31 ] ) ;
585
+ } )
586
+ . then ( done ) ;
587
+ } ) ;
588
+
589
+ it ( 'should not expand its range when range slider range is set' , function ( done ) {
590
+ Plotly . plot ( gd , [ {
591
+ y : [ 2 , 1 , 2 ]
592
+ } ] , {
593
+ xaxis : { rangeslider : { range : [ - 1 , 11 ] } }
594
+ } )
595
+ . then ( function ( ) {
596
+ assertRange ( [ - 0.13 , 2.13 ] , [ - 1 , 11 ] ) ;
597
+
598
+ return Plotly . restyle ( gd , 'y' , [ [ 2 , 1 , 2 , 1 ] ] ) ;
599
+ } )
600
+ . then ( function ( ) {
601
+ assertRange ( [ - 0.19 , 3.19 ] , [ - 1 , 11 ] ) ;
602
+
603
+ return Plotly . extendTraces ( gd , { y : [ [ 2 , 1 ] ] } , [ 0 ] ) ;
604
+ } )
605
+ . then ( function ( ) {
606
+ assertRange ( [ - 0.32 , 5.32 ] , [ - 1 , 11 ] ) ;
607
+
608
+ return Plotly . addTraces ( gd , { x : [ 0 , 10 ] , y : [ 2 , 1 ] } ) ;
609
+ } )
610
+ . then ( function ( ) {
611
+ assertRange ( [ - 0.68 , 10.68 ] , [ - 1 , 11 ] ) ;
612
+
613
+ return Plotly . deleteTraces ( gd , [ 1 ] ) ;
614
+ } )
615
+ . then ( function ( ) {
616
+ assertRange ( [ - 0.31 , 5.31 ] , [ - 1 , 11 ] ) ;
617
+
618
+ return Plotly . update ( gd , {
619
+ y : [ [ 2 , 1 , 2 , 1 , 2 ] ]
620
+ } , {
621
+ 'xaxis.rangeslider.autorange' : true
622
+ } ) ;
623
+ } )
624
+ . then ( function ( ) {
625
+ assertRange ( [ - 0.26 , 4.26 ] , [ - 0.26 , 4.26 ] ) ;
626
+
627
+ } )
628
+ . then ( done ) ;
629
+ } ) ;
544
630
} ) ;
545
631
} ) ;
546
632
0 commit comments