+import Dygraph from '../../src/dygraph';
+import LegendPlugin from '../../src/plugins/legend';
+import Util from './Util';
+
describe("plugins-legend", function() {
-beforeEach(function() {
- document.body.innerHTML = "<div id='graph'></div><div id='label'></div>";
-});
+var graph;
-afterEach(function() {
+cleanupAfterEach();
+beforeEach(function() {
+ var testDiv = document.getElementById('graph');
+ testDiv.innerHTML = "<div id='inner-graph'></div><div id='label'></div>";
+ graph = document.getElementById('inner-graph');
});
it('testLegendEscape', function() {
"3,0\n"
;
- var graph = document.getElementById("graph");
var g = new Dygraph(graph, data, opts);
- var legendPlugin = new Dygraph.Plugins.Legend();
+ var legendPlugin = new LegendPlugin();
legendPlugin.activate(g);
var e = {
selectedX: 'selectedX',
it('should let labelsDiv be a string', function() {
var labelsDiv = document.getElementById('label');
- var g = new Dygraph('graph', 'X,Y\n1,2\n', {labelsDiv: 'label'});
+ var g = new Dygraph(graph, 'X,Y\n1,2\n', {labelsDiv: 'label'});
null
g.setSelection(0);
assert.equal('1: Y: 2', Util.nbspToSpace(labelsDiv.textContent));
it('should let labelsDiv be an Element', function() {
var labelsDiv = document.getElementById('label');
- var g = new Dygraph('graph', 'X,Y\n1,2\n', { labelsDiv: labelsDiv });
+ var g = new Dygraph(graph, 'X,Y\n1,2\n', { labelsDiv: labelsDiv });
assert.isNull(labelsDiv.getAttribute('class')); // dygraph-legend not added.
g.setSelection(0);
assert.equal('1: Y: 2', Util.nbspToSpace(labelsDiv.textContent));
});
it('should render dashed patterns', function() {
- var g = new Dygraph('graph', 'X,Y\n1,2\n', {
+ var g = new Dygraph(graph, 'X,Y\n1,2\n', {
strokePattern: [5, 5],
color: 'red',
legend: 'always'
'rgb(255, 0, 0)');
});
+it('should use a legendFormatter', function() {
+ var calls = [];
+ var g = new Dygraph(graph, 'X,Y\n1,2\n', {
+ color: 'red',
+ legend: 'always',
+ legendFormatter: function(data) {
+ calls.push(data);
+ // Note: can't check against `g` because it's not defined yet.
+ assert(this.toString().indexOf('Dygraph') >= 0);
+ return '';
+ }
+ });
+
+ assert(calls.length == 1); // legend for no selected points
+ g.setSelection(0);
+ assert(calls.length == 2); // legend with selected points
+ g.clearSelection();
+ assert(calls.length == 3);
+
+ assert.equal(calls[0].x, undefined);
+ assert.equal(calls[1].x, 1);
+ assert.equal(calls[1].xHTML, '1');
+ assert.equal(calls[2].x, undefined);
+
+ assert.equal(calls[0].series.length, 1);
+ assert.equal(calls[1].series.length, 1);
+ assert.equal(calls[2].series.length, 1);
+
+ assert.equal(calls[0].series[0].y, undefined);
+ assert.equal(calls[1].series[0].label, 'Y');
+ assert.equal(calls[1].series[0].labelHTML, 'Y');
+ assert.equal(calls[1].series[0].y, 2);
+ assert.equal(calls[1].series[0].yHTML, '2');
+ assert.equal(calls[1].series[0].isVisible, true);
+ assert.equal(calls[2].series[0].y, undefined);
+});
+
+it('should work with highlight series', () => {
+ var calls = [];
+ var g = new Dygraph(graph, 'X,y1,y2\n1,2,3\n', {
+ highlightSeriesOpts: {
+ strokeWidth: 3,
+ }
+ });
+
+ g.setSelection(false, 'y2');
+ assert.equal(Util.getLegend(graph), '');
+});
+
+it('should include point drawn where canvas-y is 0', function () {
+ var graph = document.getElementById("graph");
+ var calls = []
+ function callback(data) {
+ calls.push(data);
+ };
+
+ var g = new Dygraph(document.getElementById("graph"),
+ "X,Y\n" +
+ "1,5\n" +
+ "1,10\n" +
+ "1,12\n",
+ {
+ legendFormatter: callback,
+ axes: {
+ y: {
+ valueRange: [0, 10]
+ }
+ }
+ });
+ g.setSelection(1);
+ var data = calls[1];
+ assert.isTrue(data.series[0].isVisible);
+ assert.notEqual(data.series[0].yHTML, '');
+});
+
});