@@ -52,9 +52,14 @@ describe('hoveranywhere', function() {
5252
5353 expect ( hoverData ) . toBeDefined ( ) ;
5454 expect ( hoverData . points ) . toEqual ( [ ] ) ;
55+ expect ( hoverData . xaxes . length ) . toBe ( 1 ) ;
56+ expect ( hoverData . yaxes . length ) . toBe ( 1 ) ;
57+ expect ( hoverData . xaxes [ 0 ] . _id ) . toBe ( 'x' ) ;
58+ expect ( hoverData . yaxes [ 0 ] . _id ) . toBe ( 'y' ) ;
5559 expect ( hoverData . xvals . length ) . toBe ( 1 ) ;
5660 expect ( hoverData . yvals . length ) . toBe ( 1 ) ;
57- expect ( typeof hoverData . xvals [ 0 ] ) . toBe ( 'number' ) ;
61+ expect ( hoverData . xvals [ 0 ] ) . toBeCloseTo ( 250 / 30 , 2 ) ;
62+ expect ( hoverData . yvals [ 0 ] ) . toBeCloseTo ( 10 - 50 / 30 , 2 ) ;
5863 } )
5964 . then ( done , done . fail ) ;
6065 } ) ;
@@ -80,8 +85,29 @@ describe('hoveranywhere', function() {
8085 _hover ( 60 , 210 ) ;
8186
8287 expect ( hoverData . points . length ) . toBe ( 1 ) ;
83- expect ( hoverData . points [ 0 ] . x ) . toBe ( 2 ) ;
84- expect ( hoverData . points [ 0 ] . y ) . toBe ( 3 ) ;
88+ var pt = hoverData . points [ 0 ] ;
89+ expect ( pt . x ) . toBe ( 2 ) ;
90+ expect ( pt . y ) . toBe ( 3 ) ;
91+ expect ( pt . curveNumber ) . toBe ( 0 ) ;
92+ expect ( pt . pointNumber ) . toBe ( 1 ) ;
93+ // xPixel/yPixel: plot-area px + margin (60+50=110, 210+50=260)
94+ expect ( pt . xPixel ) . toBeCloseTo ( 110 , 1 ) ;
95+ expect ( pt . yPixel ) . toBeCloseTo ( 260 , 1 ) ;
96+ // bbox is page-relative (xPixel/yPixel + graph div page offset);
97+ // center of bbox should equal xPixel/yPixel + page offset
98+ var gLeft = gd . offsetLeft + gd . clientLeft ;
99+ var gTop = gd . offsetTop + gd . clientTop ;
100+ expect ( pt . bbox ) . toBeDefined ( ) ;
101+ expect ( ( pt . bbox . x0 + pt . bbox . x1 ) / 2 ) . toBeCloseTo ( 110 + gLeft , 1 ) ;
102+ expect ( ( pt . bbox . y0 + pt . bbox . y1 ) / 2 ) . toBeCloseTo ( 260 + gTop , 1 ) ;
103+ expect ( pt . bbox . x0 ) . toBeLessThan ( pt . bbox . x1 ) ;
104+ expect ( pt . bbox . y0 ) . toBeLessThan ( pt . bbox . y1 ) ;
105+ expect ( hoverData . xaxes . length ) . toBe ( 1 ) ;
106+ expect ( hoverData . yaxes . length ) . toBe ( 1 ) ;
107+ expect ( hoverData . xvals . length ) . toBe ( 1 ) ;
108+ expect ( hoverData . yvals . length ) . toBe ( 1 ) ;
109+ expect ( hoverData . xvals [ 0 ] ) . toBeCloseTo ( 2 , 2 ) ;
110+ expect ( hoverData . yvals [ 0 ] ) . toBeCloseTo ( 3 , 2 ) ;
85111 } )
86112 . then ( done , done . fail ) ;
87113 } ) ;
@@ -112,11 +138,20 @@ describe('clickanywhere', function() {
112138 makePlot ( gd , { clickanywhere : true } ) . then ( function ( ) {
113139 gd . on ( 'plotly_click' , function ( d ) { clickData = d ; } ) ;
114140
141+ var bb = gd . getBoundingClientRect ( ) ;
115142 var s = gd . _fullLayout . _size ;
116- click ( s . l + 250 , s . t + 50 ) ;
143+ click ( bb . left + s . l + 250 , bb . top + s . t + 50 ) ;
117144
118145 expect ( clickData ) . toBeDefined ( ) ;
119146 expect ( clickData . points ) . toEqual ( [ ] ) ;
147+ expect ( clickData . xaxes . length ) . toBe ( 1 ) ;
148+ expect ( clickData . yaxes . length ) . toBe ( 1 ) ;
149+ expect ( clickData . xvals . length ) . toBe ( 1 ) ;
150+ expect ( clickData . yvals . length ) . toBe ( 1 ) ;
151+ // click at 250px into 300px plot area, xrange [0,10]: 250/300*10 = 8.33
152+ expect ( clickData . xvals [ 0 ] ) . toBeCloseTo ( 250 / 30 , 2 ) ;
153+ // click at 50px into 300px plot area, yrange [0,10]: 10 - 50/300*10 = 8.33
154+ expect ( clickData . yvals [ 0 ] ) . toBeCloseTo ( 10 - 50 / 30 , 2 ) ;
120155 } )
121156 . then ( done , done . fail ) ;
122157 } ) ;
@@ -127,8 +162,9 @@ describe('clickanywhere', function() {
127162 makePlot ( gd ) . then ( function ( ) {
128163 gd . on ( 'plotly_click' , function ( d ) { clickData = d ; } ) ;
129164
165+ var bb = gd . getBoundingClientRect ( ) ;
130166 var s = gd . _fullLayout . _size ;
131- click ( s . l + 250 , s . t + 50 ) ;
167+ click ( bb . left + s . l + 250 , bb . top + s . t + 50 ) ;
132168
133169 expect ( clickData ) . toBeUndefined ( ) ;
134170 } )
0 commit comments