@@ -248,7 +248,289 @@ describe('legend defaults', function() {
248
248
} ) ;
249
249
} ) ;
250
250
251
- describe ( 'legend getLegendData' , function ( ) {
251
+ describe ( 'legend getLegendData user-defined legendrank' , function ( ) {
252
+ 'use strict' ;
253
+
254
+ var calcdata , opts , legendData , expected ;
255
+
256
+ it ( 'should group legendgroup traces' , function ( ) {
257
+ calcdata = [
258
+ [ { trace : {
259
+ legendrank : 3 ,
260
+ type : 'scatter' ,
261
+ visible : true ,
262
+ legendgroup : 'group' ,
263
+ showlegend : true
264
+ } } ] ,
265
+ [ { trace : {
266
+ legendrank : 2 ,
267
+ type : 'bar' ,
268
+ visible : 'legendonly' ,
269
+ legendgroup : '' ,
270
+ showlegend : true
271
+ } } ] ,
272
+ [ { trace : {
273
+ legendrank : 1 ,
274
+ type : 'scatter' ,
275
+ visible : true ,
276
+ legendgroup : 'group' ,
277
+ showlegend : true
278
+ } } ]
279
+ ] ;
280
+ opts = {
281
+ traceorder : 'grouped'
282
+ } ;
283
+
284
+ legendData = getLegendData ( calcdata , opts ) ;
285
+
286
+ expected = [
287
+ [
288
+ [ { _initID : 2 , trace : {
289
+ legendrank : 1 ,
290
+ type : 'scatter' ,
291
+ visible : true ,
292
+ legendgroup : 'group' ,
293
+ showlegend : true
294
+ } } ] ,
295
+ [ { _initID : 0 , trace : {
296
+ legendrank : 3 ,
297
+ type : 'scatter' ,
298
+ visible : true ,
299
+ legendgroup : 'group' ,
300
+ showlegend : true
301
+ } } ]
302
+ ] ,
303
+ [
304
+ [ { _initID : 1 , trace : {
305
+ legendrank : 2 ,
306
+ type : 'bar' ,
307
+ visible : 'legendonly' ,
308
+ legendgroup : '' ,
309
+ showlegend : true
310
+ } } ]
311
+ ]
312
+ ] ;
313
+
314
+ expect ( legendData ) . toEqual ( expected ) ;
315
+ expect ( opts . _lgroupsLength ) . toEqual ( 2 ) ;
316
+ } ) ;
317
+
318
+ it ( 'should collapse when data has only one group' , function ( ) {
319
+ calcdata = [
320
+ [ { trace : {
321
+ legendrank : 3 ,
322
+ type : 'scatter' ,
323
+ visible : true ,
324
+ legendgroup : '' ,
325
+ showlegend : true
326
+ } } ] ,
327
+ [ { trace : {
328
+ legendrank : 2 ,
329
+ type : 'bar' ,
330
+ visible : 'legendonly' ,
331
+ legendgroup : '' ,
332
+ showlegend : true
333
+ } } ] ,
334
+ [ { trace : {
335
+ legendrank : 1 ,
336
+ type : 'scatter' ,
337
+ visible : true ,
338
+ legendgroup : '' ,
339
+ showlegend : true
340
+ } } ]
341
+ ] ;
342
+ opts = {
343
+ traceorder : 'grouped'
344
+ } ;
345
+
346
+ legendData = getLegendData ( calcdata , opts ) ;
347
+
348
+ expected = [
349
+ [
350
+ [ { _initID : 2 , trace : {
351
+ legendrank : 1 ,
352
+ type : 'scatter' ,
353
+ visible : true ,
354
+ legendgroup : '' ,
355
+ showlegend : true
356
+ } } ] ,
357
+ [ { _initID : 1 , trace : {
358
+ legendrank : 2 ,
359
+ type : 'bar' ,
360
+ visible : 'legendonly' ,
361
+ legendgroup : '' ,
362
+ showlegend : true
363
+ } } ] ,
364
+ [ { _initID : 0 , trace : {
365
+ legendrank : 3 ,
366
+ type : 'scatter' ,
367
+ visible : true ,
368
+ legendgroup : '' ,
369
+ showlegend : true
370
+ } } ]
371
+ ]
372
+ ] ;
373
+
374
+ expect ( legendData ) . toEqual ( expected ) ;
375
+ expect ( opts . _lgroupsLength ) . toEqual ( 1 ) ;
376
+ } ) ;
377
+
378
+ it ( 'should return empty array when legend data has no traces' , function ( ) {
379
+ calcdata = [
380
+ [ { trace : {
381
+ legendrank : 3 ,
382
+ type : 'histogram' ,
383
+ visible : true ,
384
+ legendgroup : '' ,
385
+ showlegend : false
386
+ } } ] ,
387
+ [ { trace : {
388
+ legendrank : 2 ,
389
+ type : 'box' ,
390
+ visible : 'legendonly' ,
391
+ legendgroup : '' ,
392
+ showlegend : false
393
+ } } ] ,
394
+ [ { trace : {
395
+ legendrank : 1 ,
396
+ type : 'heatmap' ,
397
+ visible : true ,
398
+ legendgroup : ''
399
+ } } ]
400
+ ] ;
401
+ opts = {
402
+ _main : true ,
403
+ traceorder : 'normal'
404
+ } ;
405
+
406
+ legendData = getLegendData ( calcdata , opts ) ;
407
+ expect ( legendData ) . toEqual ( [ ] ) ;
408
+ } ) ;
409
+
410
+ it ( 'should reverse the order when legend.traceorder is set' , function ( ) {
411
+ calcdata = [
412
+ [ { trace : {
413
+ legendrank : 3 ,
414
+ type : 'scatter' ,
415
+ visible : true ,
416
+ legendgroup : '' ,
417
+ showlegend : true
418
+ } } ] ,
419
+ [ { trace : {
420
+ legendrank : 2 ,
421
+ type : 'bar' ,
422
+ visible : 'legendonly' ,
423
+ legendgroup : '' ,
424
+ showlegend : true
425
+ } } ] ,
426
+ [ { trace : {
427
+ legendrank : 1 ,
428
+ type : 'box' ,
429
+ visible : true ,
430
+ legendgroup : '' ,
431
+ showlegend : true
432
+ } } ]
433
+ ] ;
434
+ opts = {
435
+ traceorder : 'reversed'
436
+ } ;
437
+
438
+ legendData = getLegendData ( calcdata , opts ) ;
439
+
440
+ expected = [
441
+ [
442
+ [ { _initID : 0 , trace : {
443
+ legendrank : 3 ,
444
+ type : 'scatter' ,
445
+ visible : true ,
446
+ legendgroup : '' ,
447
+ showlegend : true
448
+ } } ] ,
449
+ [ { _initID : 1 , trace : {
450
+ legendrank : 2 ,
451
+ type : 'bar' ,
452
+ visible : 'legendonly' ,
453
+ legendgroup : '' ,
454
+ showlegend : true
455
+ } } ] ,
456
+ [ { _initID : 2 , trace : {
457
+ legendrank : 1 ,
458
+ type : 'box' ,
459
+ visible : true ,
460
+ legendgroup : '' ,
461
+ showlegend : true
462
+ } } ]
463
+ ]
464
+ ] ;
465
+
466
+ expect ( legendData ) . toEqual ( expected ) ;
467
+ expect ( opts . _lgroupsLength ) . toEqual ( 1 ) ;
468
+ } ) ;
469
+
470
+ it ( 'should reverse the trace order within groups when reversed+grouped' , function ( ) {
471
+ calcdata = [
472
+ [ { trace : {
473
+ legendrank : 3 ,
474
+ type : 'scatter' ,
475
+ visible : true ,
476
+ legendgroup : 'group' ,
477
+ showlegend : true
478
+ } } ] ,
479
+ [ { trace : {
480
+ legendrank : 2 ,
481
+ type : 'bar' ,
482
+ visible : 'legendonly' ,
483
+ legendgroup : '' ,
484
+ showlegend : true
485
+ } } ] ,
486
+ [ { trace : {
487
+ legendrank : 1 ,
488
+ type : 'box' ,
489
+ visible : true ,
490
+ legendgroup : 'group' ,
491
+ showlegend : true
492
+ } } ]
493
+ ] ;
494
+ opts = {
495
+ traceorder : 'reversed+grouped'
496
+ } ;
497
+
498
+ legendData = getLegendData ( calcdata , opts ) ;
499
+
500
+ expected = [
501
+ [
502
+ [ { _initID : 0 , trace : {
503
+ legendrank : 3 ,
504
+ type : 'scatter' ,
505
+ visible : true ,
506
+ legendgroup : 'group' ,
507
+ showlegend : true
508
+ } } ] ,
509
+ [ { _initID : 2 , trace : {
510
+ legendrank : 1 ,
511
+ type : 'box' ,
512
+ visible : true ,
513
+ legendgroup : 'group' ,
514
+ showlegend : true
515
+ } } ]
516
+ ] ,
517
+ [
518
+ [ { _initID : 1 , trace : {
519
+ legendrank : 2 ,
520
+ type : 'bar' ,
521
+ visible : 'legendonly' ,
522
+ legendgroup : '' ,
523
+ showlegend : true
524
+ } } ]
525
+ ]
526
+ ] ;
527
+
528
+ expect ( legendData ) . toEqual ( expected ) ;
529
+ expect ( opts . _lgroupsLength ) . toEqual ( 2 ) ;
530
+ } ) ;
531
+ } ) ;
532
+
533
+ describe ( 'legend getLegendData default legendrank' , function ( ) {
252
534
'use strict' ;
253
535
254
536
var calcdata , opts , legendData , expected ;
0 commit comments