1
1
var Plotly = require ( '@lib/index' ) ;
2
2
var Lib = require ( '@src/lib' ) ;
3
3
4
+ var d3 = require ( 'd3' ) ;
4
5
var createGraphDiv = require ( '../assets/create_graph_div' ) ;
5
6
var destroyGraphDiv = require ( '../assets/destroy_graph_div' ) ;
6
7
var customMatchers = require ( '../assets/custom_matchers' ) ;
@@ -27,7 +28,7 @@ var mock3 = {
27
28
[ 10 , 10.625 , 12.5 , 15.625 , 20 ] ,
28
29
[ 5.625 , 6.25 , 8.125 , 11.25 , 15.625 ] ,
29
30
[ 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 ] ,
31
32
[ 0 , 0.625 , 2.5 , 5.625 , 10 ]
32
33
] ,
33
34
colorscale : 'Jet' ,
@@ -128,6 +129,22 @@ describe('Test hover and click interactions', function() {
128
129
expect ( pt . pointNumber ) . toEqual ( expected . pointNumber , 'point number' ) ;
129
130
}
130
131
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
+
131
148
// returns basic hover/click/unhover runner for one xy position
132
149
function makeRunner ( pos , expected , opts ) {
133
150
opts = opts || { } ;
@@ -144,6 +161,7 @@ describe('Test hover and click interactions', function() {
144
161
. then ( _hover )
145
162
. then ( function ( eventData ) {
146
163
assertEventData ( eventData , expected ) ;
164
+ assertHoverLabelStyle ( d3 . select ( 'g.hovertext' ) , expected ) ;
147
165
} )
148
166
. then ( _click )
149
167
. then ( function ( eventData ) {
@@ -171,11 +189,28 @@ describe('Test hover and click interactions', function() {
171
189
172
190
it ( 'should output correct event data for scattergl' , function ( done ) {
173
191
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
+
174
204
var run = makeRunner ( [ 655 , 317 ] , {
175
205
x : 15.772 ,
176
206
y : 0.387 ,
177
207
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)'
179
214
} ) ;
180
215
181
216
Plotly . plot ( gd , _mock )
@@ -192,7 +227,8 @@ describe('Test hover and click interactions', function() {
192
227
x : 15.772 ,
193
228
y : 0.387 ,
194
229
curveNumber : 0 ,
195
- pointNumber : 33
230
+ pointNumber : 33 ,
231
+ noHoverLabel : true
196
232
} ) ;
197
233
198
234
Plotly . plot ( gd , _mock )
@@ -204,11 +240,21 @@ describe('Test hover and click interactions', function() {
204
240
it ( 'should output correct event data for pointcloud' , function ( done ) {
205
241
var _mock = Lib . extendDeep ( { } , mock2 ) ;
206
242
243
+ _mock . layout . hoverlabel = { font : { size : 8 } } ;
244
+ _mock . data [ 2 ] . hoverlabel = {
245
+ bgcolor : [ 'red' , 'green' , 'blue' ]
246
+ } ;
247
+
207
248
var run = makeRunner ( [ 540 , 150 ] , {
208
249
x : 4.5 ,
209
250
y : 9 ,
210
251
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)'
212
258
} ) ;
213
259
214
260
Plotly . plot ( gd , _mock )
@@ -221,11 +267,24 @@ describe('Test hover and click interactions', function() {
221
267
var _mock = Lib . extendDeep ( { } , mock3 ) ;
222
268
_mock . data [ 0 ] . type = 'heatmapgl' ;
223
269
270
+ _mock . data [ 0 ] . hoverlabel = {
271
+ font : { size : _mock . data [ 0 ] . z }
272
+ } ;
273
+
274
+ _mock . layout . hoverlabel = {
275
+ font : { family : 'Roboto' }
276
+ } ;
277
+
224
278
var run = makeRunner ( [ 540 , 150 ] , {
225
279
x : 3 ,
226
280
y : 3 ,
227
281
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)'
229
288
} , {
230
289
noUnHover : true
231
290
} ) ;
@@ -243,15 +302,25 @@ describe('Test hover and click interactions', function() {
243
302
x : 8 ,
244
303
y : 18 ,
245
304
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)'
247
311
} ) ;
248
312
249
313
// after the restyle, autorange changes the y range
250
314
var run2 = makeRunner ( [ 435 , 106 ] , {
251
315
x : 8 ,
252
316
y : 18 ,
253
317
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)'
255
324
} ) ;
256
325
257
326
Plotly . plot ( gd , _mock )
@@ -274,7 +343,12 @@ describe('Test hover and click interactions', function() {
274
343
x : 8 ,
275
344
y : 18 ,
276
345
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)'
278
352
} ) ;
279
353
280
354
// after the restyle, autorange changes the x AND y ranges
@@ -285,7 +359,12 @@ describe('Test hover and click interactions', function() {
285
359
x : 8 ,
286
360
y : 18 ,
287
361
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)'
289
368
} ) ;
290
369
291
370
Plotly . plot ( gd , _mock )
@@ -301,11 +380,20 @@ describe('Test hover and click interactions', function() {
301
380
it ( 'should output correct event data contourgl' , function ( done ) {
302
381
var _mock = Lib . extendDeep ( { } , mock3 ) ;
303
382
383
+ _mock . data [ 0 ] . hoverlabel = {
384
+ font : { size : _mock . data [ 0 ] . z }
385
+ } ;
386
+
304
387
var run = makeRunner ( [ 540 , 150 ] , {
305
388
x : 3 ,
306
389
y : 3 ,
307
390
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)'
309
397
} , {
310
398
noUnHover : true
311
399
} ) ;
0 commit comments