@@ -6,6 +6,8 @@ var d3 = require('d3');
66var createGraphDiv = require ( '../assets/create_graph_div' ) ;
77var destroyGraphDiv = require ( '../assets/destroy_graph_div' ) ;
88var supplyAllDefaults = require ( '../assets/supply_defaults' ) ;
9+ var hover = require ( '../assets/hover' ) ;
10+ var assertHoverLabelContent = require ( '../assets/custom_assertions' ) . assertHoverLabelContent ;
911var failTest = require ( '../assets/fail_test' ) ;
1012
1113var mock0 = {
@@ -426,15 +428,22 @@ describe('finance charts calc', function() {
426428 addJunk ( trace1 ) ;
427429
428430 var out = _calcRaw ( [ trace0 , trace1 ] ) ;
429- var indices = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ] ;
431+ var indices = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , undefined , undefined , undefined , undefined ] ;
430432 var i = 'increasing' ;
431433 var d = 'decreasing' ;
432- var directions = [ i , d , d , i , d , i , d , i ] ;
434+ var directions = [ i , d , d , i , d , i , d , i , undefined , undefined , undefined , undefined ] ;
435+ var empties = [
436+ undefined , undefined , undefined , undefined ,
437+ undefined , undefined , undefined , undefined ,
438+ true , true , true , true
439+ ] ;
433440
434441 expect ( mapGet ( out [ 0 ] , 'pos' ) ) . toEqual ( indices ) ;
435442 expect ( mapGet ( out [ 0 ] , 'dir' ) ) . toEqual ( directions ) ;
436443 expect ( mapGet ( out [ 1 ] , 'pos' ) ) . toEqual ( indices ) ;
437444 expect ( mapGet ( out [ 1 ] , 'dir' ) ) . toEqual ( directions ) ;
445+ expect ( mapGet ( out [ 0 ] , 'empty' ) ) . toEqual ( empties ) ;
446+ expect ( mapGet ( out [ 1 ] , 'empty' ) ) . toEqual ( empties ) ;
438447 } ) ;
439448
440449 it ( 'should work with *filter* transforms' , function ( ) {
@@ -1186,3 +1195,54 @@ describe('finance trace hover:', function() {
11861195 } ) ;
11871196 } ) ;
11881197} ) ;
1198+
1199+ describe ( 'finance trace hover via Fx.hover():' , function ( ) {
1200+ var gd ;
1201+
1202+ beforeEach ( function ( ) { gd = createGraphDiv ( ) ; } ) ;
1203+
1204+ afterEach ( destroyGraphDiv ) ;
1205+
1206+ [ 'candlestick' , 'ohlc' ] . forEach ( function ( type ) {
1207+ it ( 'should pick correct ' + type + ' item' , function ( done ) {
1208+ var x = [ 'hover ok!' , 'time2' , 'hover off by 1' , 'time4' ] ;
1209+
1210+ Plotly . newPlot ( gd , [ {
1211+ x : x ,
1212+ high : [ 6 , null , 7 , 8 ] ,
1213+ close : [ 4 , null , 7 , 8 ] ,
1214+ low : [ 5 , null , 7 , 8 ] ,
1215+ open : [ 3 , null , 7 , 8 ] ,
1216+ type : type
1217+ } , {
1218+ x : x ,
1219+ y : [ 1 , null , 2 , 3 ] ,
1220+ type : 'bar'
1221+ } ] , {
1222+ xaxis : { rangeslider : { visible : false } } ,
1223+ width : 500 ,
1224+ height : 500
1225+ } )
1226+ . then ( function ( ) {
1227+ gd . on ( 'plotly_hover' , function ( d ) {
1228+ Plotly . Fx . hover ( gd , [
1229+ { curveNumber : 0 , pointNumber : d . points [ 0 ] . pointNumber } ,
1230+ { curveNumber : 1 , pointNumber : d . points [ 0 ] . pointNumber }
1231+ ] ) ;
1232+ } ) ;
1233+ } )
1234+ . then ( function ( ) { hover ( 281 , 252 ) ; } )
1235+ . then ( function ( ) {
1236+ assertHoverLabelContent ( {
1237+ nums : [
1238+ 'hover off by 1\nopen: 7\nhigh: 7\nlow: 7\nclose: 7 ▲' ,
1239+ '(hover off by 1, 2)'
1240+ ] ,
1241+ name : [ 'trace 0' , 'trace 1' ]
1242+ } , 'hover over 3rd items (aka 2nd visible items)' ) ;
1243+ } )
1244+ . catch ( failTest )
1245+ . then ( done ) ;
1246+ } ) ;
1247+ } ) ;
1248+ } ) ;
0 commit comments