@@ -282,3 +282,107 @@ describe('hover info', function() {
282
282
} ) ;
283
283
} ) ;
284
284
} ) ;
285
+
286
+ describe ( 'hover info on stacked subplots' , function ( ) {
287
+ 'use strict' ;
288
+
289
+ afterEach ( destroyGraphDiv ) ;
290
+
291
+ describe ( 'hover info on stacked subplots with shared x-axis' , function ( ) {
292
+ var mock = require ( '@mocks/stacked_coupled_subplots.json' ) ;
293
+
294
+ beforeEach ( function ( done ) {
295
+ Plotly . plot ( createGraphDiv ( ) , mock . data , mock . layout ) . then ( done ) ;
296
+ } ) ;
297
+
298
+ it ( 'responds to hover' , function ( ) {
299
+ var gd = document . getElementById ( 'graph' ) ;
300
+ Plotly . Fx . hover ( gd , { xval : 3 } , [ 'xy' , 'xy2' , 'xy3' ] ) ;
301
+
302
+ expect ( gd . _hoverdata . length ) . toEqual ( 2 ) ;
303
+
304
+ expect ( gd . _hoverdata [ 0 ] ) . toEqual ( jasmine . objectContaining (
305
+ {
306
+ curveNumber : 1 ,
307
+ pointNumber : 1 ,
308
+ x : 3 ,
309
+ y : 110
310
+ } ) ) ;
311
+
312
+ expect ( gd . _hoverdata [ 1 ] ) . toEqual ( jasmine . objectContaining (
313
+ {
314
+ curveNumber : 2 ,
315
+ pointNumber : 0 ,
316
+ x : 3 ,
317
+ y : 1000
318
+ } ) ) ;
319
+
320
+ //There should be a single label on the x-axis with the shared x value, 3.
321
+ expect ( d3 . selectAll ( 'g.axistext' ) . size ( ) ) . toEqual ( 1 ) ;
322
+ expect ( d3 . selectAll ( 'g.axistext' ) . select ( 'text' ) . html ( ) ) . toEqual ( '3' ) ;
323
+
324
+ //There should be two points being hovered over, in two different traces, one in each plot.
325
+ expect ( d3 . selectAll ( 'g.hovertext' ) . size ( ) ) . toEqual ( 2 ) ;
326
+ var textNodes = d3 . selectAll ( 'g.hovertext' ) . selectAll ( 'text' ) ;
327
+
328
+ expect ( textNodes [ 0 ] [ 0 ] . innerHTML ) . toEqual ( 'trace 1' ) ;
329
+ expect ( textNodes [ 0 ] [ 1 ] . innerHTML ) . toEqual ( '110' ) ;
330
+ expect ( textNodes [ 1 ] [ 0 ] . innerHTML ) . toEqual ( 'trace 2' ) ;
331
+ expect ( textNodes [ 1 ] [ 1 ] . innerHTML ) . toEqual ( '1000' ) ;
332
+ } ) ;
333
+ } ) ;
334
+
335
+ describe ( 'hover info on stacked subplots with shared y-axis' , function ( ) {
336
+ var mock = require ( '@mocks/stacked_subplots_shared_yaxis.json' ) ;
337
+
338
+ beforeEach ( function ( done ) {
339
+ Plotly . plot ( createGraphDiv ( ) , mock . data , mock . layout ) . then ( done ) ;
340
+ } ) ;
341
+
342
+ it ( 'responds to hover' , function ( ) {
343
+ var gd = document . getElementById ( 'graph' ) ;
344
+ Plotly . Fx . hover ( gd , { yval : 0 } , [ 'xy' , 'x2y' , 'x3y' ] ) ;
345
+
346
+ expect ( gd . _hoverdata . length ) . toEqual ( 3 ) ;
347
+
348
+ expect ( gd . _hoverdata [ 0 ] ) . toEqual ( jasmine . objectContaining (
349
+ {
350
+ curveNumber : 0 ,
351
+ pointNumber : 0 ,
352
+ x : 1 ,
353
+ y : 0
354
+ } ) ) ;
355
+
356
+ expect ( gd . _hoverdata [ 1 ] ) . toEqual ( jasmine . objectContaining (
357
+ {
358
+ curveNumber : 1 ,
359
+ pointNumber : 0 ,
360
+ x : 2.1 ,
361
+ y : 0
362
+ } ) ) ;
363
+
364
+ expect ( gd . _hoverdata [ 2 ] ) . toEqual ( jasmine . objectContaining (
365
+ {
366
+ curveNumber : 2 ,
367
+ pointNumber : 0 ,
368
+ x : 3 ,
369
+ y : 0
370
+ } ) ) ;
371
+
372
+ //There should be a single label on the y-axis with the shared y value, 0.
373
+ expect ( d3 . selectAll ( 'g.axistext' ) . size ( ) ) . toEqual ( 1 ) ;
374
+ expect ( d3 . selectAll ( 'g.axistext' ) . select ( 'text' ) . html ( ) ) . toEqual ( '0' ) ;
375
+
376
+ //There should be three points being hovered over, in three different traces, one in each plot.
377
+ expect ( d3 . selectAll ( 'g.hovertext' ) . size ( ) ) . toEqual ( 3 ) ;
378
+ var textNodes = d3 . selectAll ( 'g.hovertext' ) . selectAll ( 'text' ) ;
379
+
380
+ expect ( textNodes [ 0 ] [ 0 ] . innerHTML ) . toEqual ( 'trace 0' ) ;
381
+ expect ( textNodes [ 0 ] [ 1 ] . innerHTML ) . toEqual ( '1' ) ;
382
+ expect ( textNodes [ 1 ] [ 0 ] . innerHTML ) . toEqual ( 'trace 1' ) ;
383
+ expect ( textNodes [ 1 ] [ 1 ] . innerHTML ) . toEqual ( '2.1' ) ;
384
+ expect ( textNodes [ 2 ] [ 0 ] . innerHTML ) . toEqual ( 'trace 2' ) ;
385
+ expect ( textNodes [ 2 ] [ 1 ] . innerHTML ) . toEqual ( '3' ) ;
386
+ } ) ;
387
+ } ) ;
388
+ } ) ;
0 commit comments