Skip to content

Commit 5136cc0

Browse files
committed
add legend calc jasmine test with legendrank
1 parent 5813717 commit 5136cc0

File tree

1 file changed

+283
-1
lines changed

1 file changed

+283
-1
lines changed

test/jasmine/tests/legend_test.js

+283-1
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,289 @@ describe('legend defaults', function() {
248248
});
249249
});
250250

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() {
252534
'use strict';
253535

254536
var calcdata, opts, legendData, expected;

0 commit comments

Comments
 (0)