|
|
|
describe('c3 api grid', function () {
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
var chart, args;
|
|
|
|
|
|
|
|
beforeEach(function (done) {
|
|
|
|
chart = window.initChart(chart, args, done);
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('ygrid.add and ygrid.remove', function () {
|
|
|
|
|
|
|
|
beforeAll(function () {
|
|
|
|
args = {
|
|
|
|
data: {
|
|
|
|
columns: [
|
|
|
|
['data1', 30, 200, 100, 400, 150, 250]
|
|
|
|
]
|
|
|
|
}
|
|
|
|
};
|
|
|
|
});
|
|
|
|
|
|
|
|
it('updates y grids', function (done) {
|
|
|
|
var main = chart.internal.main,
|
|
|
|
expectedGrids = [
|
|
|
|
{
|
|
|
|
value: 100,
|
|
|
|
text: 'Pressure Low'
|
|
|
|
},
|
|
|
|
{
|
|
|
|
value: 200,
|
|
|
|
text: 'Pressure High'
|
|
|
|
}
|
|
|
|
],
|
|
|
|
grids;
|
|
|
|
|
|
|
|
// Call ygrids.add
|
|
|
|
chart.ygrids.add(expectedGrids);
|
|
|
|
setTimeout(function () {
|
|
|
|
grids = main.selectAll('.c3-ygrid-line');
|
|
|
|
expect(grids.size()).toBe(expectedGrids.length);
|
|
|
|
grids.each(function (d, i) {
|
|
|
|
var y = +d3.select(this).select('line').attr('y1'),
|
|
|
|
text = d3.select(this).select('text').text(),
|
|
|
|
expectedY = Math.round(chart.internal.y(expectedGrids[i].value)),
|
|
|
|
expectedText = expectedGrids[i].text;
|
|
|
|
expect(y).toBe(expectedY);
|
|
|
|
expect(text).toBe(expectedText);
|
|
|
|
});
|
|
|
|
|
|
|
|
// Call ygrids.remove
|
|
|
|
chart.ygrids.remove(expectedGrids);
|
|
|
|
setTimeout(function () {
|
|
|
|
grids = main.selectAll('.c3-ygrid-line');
|
|
|
|
expect(grids.size()).toBe(0);
|
|
|
|
}, 500);
|
|
|
|
|
|
|
|
}, 500);
|
|
|
|
|
|
|
|
setTimeout(function () {
|
|
|
|
done();
|
|
|
|
}, 1200);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('updates x ygrids even if zoomed', function (done) {
|
|
|
|
var main = chart.internal.main,
|
|
|
|
expectedGrids = [
|
|
|
|
{
|
|
|
|
value: 0,
|
|
|
|
text: 'Pressure Low'
|
|
|
|
},
|
|
|
|
{
|
|
|
|
value: 1,
|
|
|
|
text: 'Pressure High'
|
|
|
|
}
|
|
|
|
],
|
|
|
|
grids, domain;
|
|
|
|
|
|
|
|
chart.zoom([0, 2]);
|
|
|
|
setTimeout(function () {
|
|
|
|
|
|
|
|
// Call xgrids
|
|
|
|
chart.xgrids(expectedGrids);
|
|
|
|
setTimeout(function () {
|
|
|
|
grids = main.selectAll('.c3-xgrid-line');
|
|
|
|
expect(grids.size()).toBe(expectedGrids.length);
|
|
|
|
grids.each(function (d, i) {
|
|
|
|
var x = +d3.select(this).select('line').attr('x1'),
|
|
|
|
text = d3.select(this).select('text').text(),
|
|
|
|
expectedX = Math.round(chart.internal.x(expectedGrids[i].value)),
|
|
|
|
expectedText = expectedGrids[i].text;
|
|
|
|
expect(x).toBe(expectedX);
|
|
|
|
expect(text).toBe(expectedText);
|
|
|
|
});
|
|
|
|
|
|
|
|
// check if it was not rescaled
|
|
|
|
domain = chart.internal.y.domain();
|
|
|
|
expect(domain[0]).toBeLessThan(0);
|
|
|
|
expect(domain[1]).toBeGreaterThan(400);
|
|
|
|
|
|
|
|
// Call xgrids.remove
|
|
|
|
chart.xgrids.remove(expectedGrids);
|
|
|
|
setTimeout(function () {
|
|
|
|
grids = main.selectAll('.c3-xgrid-line');
|
|
|
|
expect(grids.size()).toBe(0);
|
|
|
|
}, 500); // for xgrids.remove()
|
|
|
|
|
|
|
|
}, 500); // for xgrids()
|
|
|
|
|
|
|
|
}, 500); // for zoom
|
|
|
|
|
|
|
|
setTimeout(function () {
|
|
|
|
done();
|
|
|
|
}, 1700);
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|