Skip to content

Commit a40fc83

Browse files
committed
factor out legend helper into separate file + add tests
1 parent 7882ba5 commit a40fc83

File tree

3 files changed

+61
-16
lines changed

3 files changed

+61
-16
lines changed

src/components/legend/helpers.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* Copyright 2012-2016, Plotly, Inc.
3+
* All rights reserved.
4+
*
5+
* This source code is licensed under the MIT license found in the
6+
* LICENSE file in the root directory of this source tree.
7+
*/
8+
9+
10+
'use strict';
11+
12+
var Plots = require('../../plots/plots');
13+
14+
15+
exports.legendGetsTrace = function legendGetsTrace(trace) {
16+
return trace.visible && Plots.traceIs(trace, 'showLegend');
17+
};
18+
19+
exports.isGrouped = function isGrouped(legendLayout) {
20+
return (legendLayout.traceorder || '').indexOf('grouped') !== -1;
21+
};
22+
23+
exports.isReversed = function isReversed(legendLayout) {
24+
return (legendLayout.traceorder || '').indexOf('reversed') !== -1;
25+
};

src/components/legend/index.js

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -329,22 +329,6 @@ legend.texts = function(context, td, d, i, traces) {
329329
else text.call(textLayout);
330330
};
331331

332-
// -----------------------------------------------------
333-
// legend drawing
334-
// -----------------------------------------------------
335-
336-
function legendGetsTrace(trace) {
337-
return trace.visible && Plots.traceIs(trace, 'showLegend');
338-
}
339-
340-
function isGrouped(legendLayout) {
341-
return (legendLayout.traceorder || '').indexOf('grouped') !== -1;
342-
}
343-
344-
function isReversed(legendLayout) {
345-
return (legendLayout.traceorder || '').indexOf('reversed') !== -1;
346-
}
347-
348332
legend.getLegendData = function(calcdata, opts) {
349333

350334
// build an { legendgroup: [cd0, cd0], ... } object

test/jasmine/tests/legend_test.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
var Legend = require('@src/components/legend');
22
var Plots = require('@src/plots/plots');
33

4+
var helpers = require('@src/components/legend/helpers');
45
describe('Test legend:', function() {
56
'use strict';
67

@@ -325,4 +326,39 @@ describe('Test legend:', function() {
325326
});
326327
});
327328

329+
describe('legendGetsTraces helper', function() {
330+
var legendGetsTrace = helpers.legendGetsTrace;
331+
332+
it('should return true when trace is visible and supports legend', function() {
333+
expect(legendGetsTrace({ visible: true, type: 'bar' })).toBe(true);
334+
expect(legendGetsTrace({ visible: false, type: 'bar' })).toBe(false);
335+
expect(legendGetsTrace({ visible: true, type: 'contour' })).toBe(false);
336+
expect(legendGetsTrace({ visible: false, type: 'contour' })).toBe(false);
337+
});
338+
});
339+
340+
describe('isGrouped helper', function() {
341+
var isGrouped = helpers.isGrouped;
342+
343+
it('should return true when trace is visible and supports legend', function() {
344+
expect(isGrouped({ traceorder: 'normal' })).toBe(false);
345+
expect(isGrouped({ traceorder: 'grouped' })).toBe(true);
346+
expect(isGrouped({ traceorder: 'reversed+grouped' })).toBe(true);
347+
expect(isGrouped({ traceorder: 'grouped+reversed' })).toBe(true);
348+
expect(isGrouped({ traceorder: 'reversed' })).toBe(false);
349+
});
350+
});
351+
352+
describe('isReversed helper', function() {
353+
var isReversed = helpers.isReversed;
354+
355+
it('should return true when trace is visible and supports legend', function() {
356+
expect(isReversed({ traceorder: 'normal' })).toBe(false);
357+
expect(isReversed({ traceorder: 'grouped' })).toBe(false);
358+
expect(isReversed({ traceorder: 'reversed+grouped' })).toBe(true);
359+
expect(isReversed({ traceorder: 'grouped+reversed' })).toBe(true);
360+
expect(isReversed({ traceorder: 'reversed' })).toBe(true);
361+
});
362+
});
363+
328364
});

0 commit comments

Comments
 (0)