@@ -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 ) ;
@@ -411,6 +424,30 @@ describe('sankey tests', function() {
411
424
} ) ;
412
425
} ) ;
413
426
427
+ it ( 'should show correct hover labels even if there is no link.label supplied' , function ( done ) {
428
+ var gd = createGraphDiv ( ) ;
429
+ var mockCopy = Lib . extendDeep ( { } , mock ) ;
430
+ delete mockCopy . data [ 0 ] . link . label ;
431
+
432
+ function _hover ( px , py ) {
433
+ mouseEvent ( 'mousemove' , px , py ) ;
434
+ mouseEvent ( 'mouseover' , px , py ) ;
435
+ delete gd . _lastHoverTime ;
436
+ }
437
+
438
+ Plotly . plot ( gd , mockCopy )
439
+ . then ( function ( ) {
440
+ _hover ( 450 , 300 ) ;
441
+
442
+ assertLabel (
443
+ [ 'Source: Solid' , 'Target: Industry' , '46TWh' ] ,
444
+ [ 'rgb(0, 0, 96)' , 'rgb(255, 255, 255)' , 13 , 'Arial' , 'rgb(255, 255, 255)' ]
445
+ ) ;
446
+ } )
447
+ . catch ( fail )
448
+ . then ( done ) ;
449
+ } ) ;
450
+
414
451
describe ( 'Test hover/click event data:' , function ( ) {
415
452
var gd ;
416
453
@@ -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