@@ -112,6 +112,8 @@ describe('sankey tests', function() {
112
112
expect ( fullTrace . link . target )
113
113
. toEqual ( [ ] , 'presence of link target array is guaranteed' ) ;
114
114
115
+ expect ( fullTrace . link . label )
116
+ . toEqual ( [ ] , 'presence of link target array is guaranteed' ) ;
115
117
} ) ;
116
118
117
119
it ( '\'Sankey\' specification should have proper types' ,
@@ -179,6 +181,40 @@ describe('sankey tests', function() {
179
181
180
182
} ) ;
181
183
184
+ it ( 'does not fill \'link\' labels even if not specified' , function ( ) {
185
+
186
+ var fullTrace = _supply ( {
187
+ node : {
188
+ label : [ 'a' , 'b' ]
189
+ } ,
190
+ link : {
191
+ source : [ 0 , 1 ] ,
192
+ target : [ 1 , 0 ] ,
193
+ value : [ 1 , 2 ]
194
+ }
195
+ } ) ;
196
+
197
+ expect ( Lib . isArray ( fullTrace . link . label ) ) . toBe ( true , 'must be an array' ) ;
198
+ expect ( fullTrace . link . label ) . toEqual ( [ ] , 'an array of empty strings' ) ;
199
+ } ) ;
200
+
201
+ it ( 'preserves \'link\' labels if specified' , function ( ) {
202
+
203
+ var fullTrace = _supply ( {
204
+ node : {
205
+ label : [ 'a' , 'b' ]
206
+ } ,
207
+ link : {
208
+ source : [ 0 , 1 ] ,
209
+ target : [ 1 , 0 ] ,
210
+ value : [ 1 , 2 ] ,
211
+ label : [ 'a' , 'b' ]
212
+ }
213
+ } ) ;
214
+
215
+ expect ( Lib . isArray ( fullTrace . link . label ) ) . toBe ( true , 'must be an array' ) ;
216
+ expect ( fullTrace . link . label ) . toEqual ( [ 'a' , 'b' ] , 'an array of the supplied values' ) ;
217
+ } ) ;
182
218
} ) ;
183
219
184
220
describe ( 'sankey calc' , function ( ) {
@@ -316,29 +352,6 @@ describe('sankey tests', function() {
316
352
describe ( 'Test hover/click interactions:' , function ( ) {
317
353
afterEach ( destroyGraphDiv ) ;
318
354
319
- function assertLabel ( content , style ) {
320
- var g = d3 . selectAll ( '.hovertext' ) ;
321
- var lines = g . selectAll ( '.nums .line' ) ;
322
- var name = g . selectAll ( '.name' ) ;
323
-
324
- expect ( lines . size ( ) ) . toBe ( content . length - 1 ) ;
325
-
326
- lines . each ( function ( _ , i ) {
327
- expect ( d3 . select ( this ) . text ( ) ) . toBe ( content [ i ] ) ;
328
- } ) ;
329
-
330
- expect ( name . text ( ) ) . toBe ( content [ content . length - 1 ] ) ;
331
-
332
- var path = g . select ( 'path' ) ;
333
- expect ( path . style ( 'fill' ) ) . toEqual ( style [ 0 ] , 'bgcolor' ) ;
334
- expect ( path . style ( 'stroke' ) ) . toEqual ( style [ 1 ] , 'bordercolor' ) ;
335
-
336
- var text = g . select ( 'text.nums' ) ;
337
- expect ( parseInt ( text . style ( 'font-size' ) ) ) . toEqual ( style [ 2 ] , 'font.size' ) ;
338
- expect ( text . style ( 'font-family' ) . split ( ',' ) [ 0 ] ) . toEqual ( style [ 3 ] , 'font.family' ) ;
339
- expect ( text . style ( 'fill' ) ) . toEqual ( style [ 4 ] , 'font.color' ) ;
340
- }
341
-
342
355
it ( 'should shows the correct hover labels' , function ( done ) {
343
356
var gd = createGraphDiv ( ) ;
344
357
var mockCopy = Lib . extendDeep ( { } , mock ) ;
@@ -409,6 +422,30 @@ describe('sankey tests', function() {
409
422
. catch ( fail )
410
423
. then ( done ) ;
411
424
} ) ;
425
+
426
+ it ( 'should show correct hover labels even if there is no link.label supplied' , function ( done ) {
427
+ var gd = createGraphDiv ( ) ;
428
+ var mockCopy = Lib . extendDeep ( { } , mock ) ;
429
+ delete mockCopy . data [ 0 ] . link . label ;
430
+
431
+ function _hover ( px , py ) {
432
+ mouseEvent ( 'mousemove' , px , py ) ;
433
+ mouseEvent ( 'mouseover' , px , py ) ;
434
+ delete gd . _lastHoverTime ;
435
+ }
436
+
437
+ Plotly . plot ( gd , mockCopy )
438
+ . then ( function ( ) {
439
+ _hover ( 450 , 300 ) ;
440
+
441
+ assertLabel (
442
+ [ 'Source: Solid' , 'Target: Industry' , '46TWh' ] ,
443
+ [ 'rgb(0, 0, 96)' , 'rgb(255, 255, 255)' , 13 , 'Arial' , 'rgb(255, 255, 255)' ]
444
+ ) ;
445
+ } )
446
+ . catch ( fail )
447
+ . then ( done ) ;
448
+ } ) ;
412
449
} ) ;
413
450
414
451
describe ( 'Test hover/click event data:' , function ( ) {
@@ -520,3 +557,31 @@ describe('sankey tests', function() {
520
557
} ) ;
521
558
} ) ;
522
559
} ) ;
560
+
561
+ function assertLabel ( content , style ) {
562
+ var g = d3 . selectAll ( '.hovertext' ) ;
563
+ var lines = g . selectAll ( '.nums .line' ) ;
564
+ var name = g . selectAll ( '.name' ) ;
565
+ var tooltipBoundingBox = g . node ( ) . getBoundingClientRect ( ) ;
566
+ var nameBoundingBox = name . node ( ) . getBoundingClientRect ( ) ;
567
+
568
+ expect ( tooltipBoundingBox . top <= nameBoundingBox . top ) ;
569
+ expect ( tooltipBoundingBox . bottom >= nameBoundingBox . bottom ) ;
570
+
571
+ expect ( lines . size ( ) ) . toBe ( content . length - 1 ) ;
572
+
573
+ lines . each ( function ( _ , i ) {
574
+ expect ( d3 . select ( this ) . text ( ) ) . toBe ( content [ i ] ) ;
575
+ } ) ;
576
+
577
+ expect ( name . text ( ) ) . toBe ( content [ content . length - 1 ] ) ;
578
+
579
+ var path = g . select ( 'path' ) ;
580
+ expect ( path . style ( 'fill' ) ) . toEqual ( style [ 0 ] , 'bgcolor' ) ;
581
+ expect ( path . style ( 'stroke' ) ) . toEqual ( style [ 1 ] , 'bordercolor' ) ;
582
+
583
+ var text = g . select ( 'text.nums' ) ;
584
+ expect ( parseInt ( text . style ( 'font-size' ) ) ) . toEqual ( style [ 2 ] , 'font.size' ) ;
585
+ expect ( text . style ( 'font-family' ) . split ( ',' ) [ 0 ] ) . toEqual ( style [ 3 ] , 'font.family' ) ;
586
+ expect ( text . style ( 'fill' ) ) . toEqual ( style [ 4 ] , 'font.color' ) ;
587
+ }
0 commit comments