@@ -40,6 +40,12 @@ function mouseTo(x, y) {
40
40
mouseEvent ( 'mouseover' , x , y ) ;
41
41
}
42
42
43
+ function mouseClick ( x , y ) {
44
+ mouseTo ( x , y ) ;
45
+ mouseEvent ( 'mousedown' , x , y ) ;
46
+ mouseEvent ( 'mouseup' , x , y ) ;
47
+ }
48
+
43
49
function mostOfDrag ( x1 , y1 , x2 , y2 ) {
44
50
mouseTo ( x1 , y1 ) ;
45
51
mouseEvent ( 'mousedown' , x1 , y1 ) ;
@@ -1625,3 +1631,69 @@ describe('parcoords constraint interactions - with defined axis ranges', functio
1625
1631
. then ( done ) ;
1626
1632
} ) ;
1627
1633
} ) ;
1634
+
1635
+ describe ( 'parcoords constraint click interactions - with pre-defined constraint ranges' , function ( ) {
1636
+ function initialFigure ( ) {
1637
+ return {
1638
+ data : [ {
1639
+ type : 'parcoords' ,
1640
+ dimensions : [ {
1641
+ values : [ 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 ] ,
1642
+ } , {
1643
+ values : [ 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 6 ] ,
1644
+ tickvals : [ 0 , 1 , 2 , 3 , 4 , 5 , 6 ] ,
1645
+ ticktext : [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' ] ,
1646
+ constraintrange : [ 1 , 2 ]
1647
+ } ]
1648
+ } ] ,
1649
+ layout : {
1650
+ width : 400 ,
1651
+ height : 400 ,
1652
+ margin : { t : 100 , b : 100 , l : 100 , r : 100 }
1653
+ }
1654
+ } ;
1655
+ }
1656
+
1657
+ var gd ;
1658
+ var initialSnapDuration ;
1659
+ var shortenedSnapDuration = 20 ;
1660
+ var snapDelay = 100 ;
1661
+ beforeAll ( function ( ) {
1662
+ initialSnapDuration = PC . bar . snapDuration ;
1663
+ PC . bar . snapDuration = shortenedSnapDuration ;
1664
+ } ) ;
1665
+
1666
+ afterAll ( function ( ) {
1667
+ purgeGraphDiv ( ) ;
1668
+ PC . bar . snapDuration = initialSnapDuration ;
1669
+ } ) ;
1670
+
1671
+ beforeEach ( function ( done ) {
1672
+ var hasGD = ! ! gd ;
1673
+ if ( ! hasGD ) gd = createGraphDiv ( ) ;
1674
+
1675
+ Plotly . react ( gd , initialFigure ( ) )
1676
+ . catch ( failTest )
1677
+ . then ( done ) ;
1678
+ } ) ;
1679
+
1680
+ it ( '@noCI @gl should not drop constraintrange on click' , function ( done ) {
1681
+ expect ( gd . _fullData [ 0 ] . dimensions [ 1 ] . constraintrange ) . toBeCloseToArray ( [ 0.75 , 2.25 ] ) ;
1682
+
1683
+ // click to add a new item to the selection
1684
+ mouseClick ( 295 , 200 ) ;
1685
+ delay ( snapDelay ) ( )
1686
+ . then ( function ( ) {
1687
+ expect ( gd . _fullData [ 0 ] . dimensions [ 1 ] . constraintrange ) . toBeCloseToArray ( [ [ 0.75 , 2.25 ] , [ 2.75 , 3.25 ] ] ) ;
1688
+
1689
+ // click to deselect all
1690
+ mouseClick ( 295 , 205 ) ;
1691
+ } )
1692
+ . then ( delay ( snapDelay ) ( ) )
1693
+ . then ( function ( ) {
1694
+ expect ( gd . _fullData [ 0 ] . dimensions [ 1 ] . constraintrange ) . toEqual ( undefined ) ;
1695
+ } )
1696
+ . catch ( failTest )
1697
+ . then ( done ) ;
1698
+ } ) ;
1699
+ } ) ;
0 commit comments