11var Plotly = require ( '@lib/index' ) ;
22var Lib = require ( '@src/lib' ) ;
33
4+ var d3 = require ( 'd3' ) ;
45var createGraphDiv = require ( '../assets/create_graph_div' ) ;
56var destroyGraphDiv = require ( '../assets/destroy_graph_div' ) ;
67var customMatchers = require ( '../assets/custom_matchers' ) ;
@@ -27,7 +28,7 @@ var mock3 = {
2728 [ 10 , 10.625 , 12.5 , 15.625 , 20 ] ,
2829 [ 5.625 , 6.25 , 8.125 , 11.25 , 15.625 ] ,
2930 [ 2.5 , 3.125 , 5 , 8.125 , 12.5 ] ,
30- [ 0.625 , 1.25 , 3.125 , 6.25 , 10.625 ] ,
31+ [ 0.625 , 1.25 , 3.125 , 20 , 10.625 ] ,
3132 [ 0 , 0.625 , 2.5 , 5.625 , 10 ]
3233 ] ,
3334 colorscale : 'Jet' ,
@@ -128,6 +129,22 @@ describe('Test hover and click interactions', function() {
128129 expect ( pt . pointNumber ) . toEqual ( expected . pointNumber , 'point number' ) ;
129130 }
130131
132+ function assertHoverLabelStyle ( sel , expected ) {
133+ if ( sel . node ( ) === null ) {
134+ expect ( expected . noHoverLabel ) . toBe ( true ) ;
135+ return ;
136+ }
137+
138+ var path = sel . select ( 'path' ) ;
139+ expect ( path . style ( 'fill' ) ) . toEqual ( expected . bgColor , 'bgcolor' ) ;
140+ expect ( path . style ( 'stroke' ) ) . toEqual ( expected . borderColor , 'bordercolor' ) ;
141+
142+ var text = sel . select ( 'text.nums' ) ;
143+ expect ( parseInt ( text . style ( 'font-size' ) ) ) . toEqual ( expected . fontSize , 'font.size' ) ;
144+ expect ( text . style ( 'font-family' ) . split ( ',' ) [ 0 ] ) . toEqual ( expected . fontFamily , 'font.family' ) ;
145+ expect ( text . style ( 'fill' ) ) . toEqual ( expected . fontColor , 'font.color' ) ;
146+ }
147+
131148 // returns basic hover/click/unhover runner for one xy position
132149 function makeRunner ( pos , expected , opts ) {
133150 opts = opts || { } ;
@@ -144,6 +161,7 @@ describe('Test hover and click interactions', function() {
144161 . then ( _hover )
145162 . then ( function ( eventData ) {
146163 assertEventData ( eventData , expected ) ;
164+ assertHoverLabelStyle ( d3 . select ( 'g.hovertext' ) , expected ) ;
147165 } )
148166 . then ( _click )
149167 . then ( function ( eventData ) {
@@ -171,11 +189,28 @@ describe('Test hover and click interactions', function() {
171189
172190 it ( 'should output correct event data for scattergl' , function ( done ) {
173191 var _mock = Lib . extendDeep ( { } , mock1 ) ;
192+
193+ _mock . layout . hoverlabel = {
194+ font : {
195+ size : 20 ,
196+ color : 'yellow'
197+ }
198+ } ;
199+ _mock . data [ 0 ] . hoverlabel = {
200+ bgcolor : 'blue' ,
201+ bordercolor : _mock . data [ 0 ] . x . map ( function ( _ , i ) { return i % 2 ? 'red' : 'green' ; } )
202+ } ;
203+
174204 var run = makeRunner ( [ 655 , 317 ] , {
175205 x : 15.772 ,
176206 y : 0.387 ,
177207 curveNumber : 0 ,
178- pointNumber : 33
208+ pointNumber : 33 ,
209+ bgColor : 'rgb(0, 0, 255)' ,
210+ borderColor : 'rgb(255, 0, 0)' ,
211+ fontSize : 20 ,
212+ fontFamily : 'Arial' ,
213+ fontColor : 'rgb(255, 255, 0)'
179214 } ) ;
180215
181216 Plotly . plot ( gd , _mock )
@@ -192,7 +227,8 @@ describe('Test hover and click interactions', function() {
192227 x : 15.772 ,
193228 y : 0.387 ,
194229 curveNumber : 0 ,
195- pointNumber : 33
230+ pointNumber : 33 ,
231+ noHoverLabel : true
196232 } ) ;
197233
198234 Plotly . plot ( gd , _mock )
@@ -204,11 +240,21 @@ describe('Test hover and click interactions', function() {
204240 it ( 'should output correct event data for pointcloud' , function ( done ) {
205241 var _mock = Lib . extendDeep ( { } , mock2 ) ;
206242
243+ _mock . layout . hoverlabel = { font : { size : 8 } } ;
244+ _mock . data [ 2 ] . hoverlabel = {
245+ bgcolor : [ 'red' , 'green' , 'blue' ]
246+ } ;
247+
207248 var run = makeRunner ( [ 540 , 150 ] , {
208249 x : 4.5 ,
209250 y : 9 ,
210251 curveNumber : 2 ,
211- pointNumber : 1
252+ pointNumber : 1 ,
253+ bgColor : 'rgb(0, 128, 0)' ,
254+ borderColor : 'rgb(255, 255, 255)' ,
255+ fontSize : 8 ,
256+ fontFamily : 'Arial' ,
257+ fontColor : 'rgb(255, 255, 255)'
212258 } ) ;
213259
214260 Plotly . plot ( gd , _mock )
@@ -221,11 +267,24 @@ describe('Test hover and click interactions', function() {
221267 var _mock = Lib . extendDeep ( { } , mock3 ) ;
222268 _mock . data [ 0 ] . type = 'heatmapgl' ;
223269
270+ _mock . data [ 0 ] . hoverlabel = {
271+ font : { size : _mock . data [ 0 ] . z }
272+ } ;
273+
274+ _mock . layout . hoverlabel = {
275+ font : { family : 'Roboto' }
276+ } ;
277+
224278 var run = makeRunner ( [ 540 , 150 ] , {
225279 x : 3 ,
226280 y : 3 ,
227281 curveNumber : 0 ,
228- pointNumber : [ 3 , 3 ]
282+ pointNumber : [ 3 , 3 ] ,
283+ bgColor : 'rgb(68, 68, 68)' ,
284+ borderColor : 'rgb(255, 255, 255)' ,
285+ fontSize : 20 ,
286+ fontFamily : 'Roboto' ,
287+ fontColor : 'rgb(255, 255, 255)'
229288 } , {
230289 noUnHover : true
231290 } ) ;
@@ -243,15 +302,25 @@ describe('Test hover and click interactions', function() {
243302 x : 8 ,
244303 y : 18 ,
245304 curveNumber : 2 ,
246- pointNumber : 0
305+ pointNumber : 0 ,
306+ bgColor : 'rgb(44, 160, 44)' ,
307+ borderColor : 'rgb(255, 255, 255)' ,
308+ fontSize : 13 ,
309+ fontFamily : 'Arial' ,
310+ fontColor : 'rgb(255, 255, 255)'
247311 } ) ;
248312
249313 // after the restyle, autorange changes the y range
250314 var run2 = makeRunner ( [ 435 , 106 ] , {
251315 x : 8 ,
252316 y : 18 ,
253317 curveNumber : 2 ,
254- pointNumber : 0
318+ pointNumber : 0 ,
319+ bgColor : 'rgb(255, 127, 14)' ,
320+ borderColor : 'rgb(68, 68, 68)' ,
321+ fontSize : 13 ,
322+ fontFamily : 'Arial' ,
323+ fontColor : 'rgb(68, 68, 68)'
255324 } ) ;
256325
257326 Plotly . plot ( gd , _mock )
@@ -274,7 +343,12 @@ describe('Test hover and click interactions', function() {
274343 x : 8 ,
275344 y : 18 ,
276345 curveNumber : 2 ,
277- pointNumber : 0
346+ pointNumber : 0 ,
347+ bgColor : 'rgb(44, 160, 44)' ,
348+ borderColor : 'rgb(255, 255, 255)' ,
349+ fontSize : 13 ,
350+ fontFamily : 'Arial' ,
351+ fontColor : 'rgb(255, 255, 255)'
278352 } ) ;
279353
280354 // after the restyle, autorange changes the x AND y ranges
@@ -285,7 +359,12 @@ describe('Test hover and click interactions', function() {
285359 x : 8 ,
286360 y : 18 ,
287361 curveNumber : 2 ,
288- pointNumber : 0
362+ pointNumber : 0 ,
363+ bgColor : 'rgb(255, 127, 14)' ,
364+ borderColor : 'rgb(68, 68, 68)' ,
365+ fontSize : 13 ,
366+ fontFamily : 'Arial' ,
367+ fontColor : 'rgb(68, 68, 68)'
289368 } ) ;
290369
291370 Plotly . plot ( gd , _mock )
@@ -301,11 +380,20 @@ describe('Test hover and click interactions', function() {
301380 it ( 'should output correct event data contourgl' , function ( done ) {
302381 var _mock = Lib . extendDeep ( { } , mock3 ) ;
303382
383+ _mock . data [ 0 ] . hoverlabel = {
384+ font : { size : _mock . data [ 0 ] . z }
385+ } ;
386+
304387 var run = makeRunner ( [ 540 , 150 ] , {
305388 x : 3 ,
306389 y : 3 ,
307390 curveNumber : 0 ,
308- pointNumber : [ 3 , 3 ]
391+ pointNumber : [ 3 , 3 ] ,
392+ bgColor : 'rgb(68, 68, 68)' ,
393+ borderColor : 'rgb(255, 255, 255)' ,
394+ fontSize : 20 ,
395+ fontFamily : 'Arial' ,
396+ fontColor : 'rgb(255, 255, 255)'
309397 } , {
310398 noUnHover : true
311399 } ) ;
0 commit comments