mirror of https://github.com/masayuki0812/c3.git
Quite good looking graph derived from d3.js
http://c3js.org
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
226 lines
8.4 KiB
226 lines
8.4 KiB
var setMouseEvent = window.setMouseEvent; |
|
|
|
describe('c3 chart shape bar', function () { |
|
'use strict'; |
|
|
|
var chart, args; |
|
|
|
beforeEach(function (done) { |
|
chart = window.initChart(chart, args, done); |
|
}); |
|
|
|
describe('with groups', function () { |
|
|
|
describe('with indexed data', function () { |
|
it('should update args', function () { |
|
args = { |
|
data: { |
|
columns: [ |
|
['data1', 30, 200, -100, 400, -150, 250], |
|
['data2', 50, 20, 10, 40, 15, 25], |
|
], |
|
groups: [ |
|
['data1', 'data2'], |
|
], |
|
type: 'bar' |
|
}, |
|
}; |
|
expect(true).toBeTruthy(); |
|
}); |
|
it('should be stacked', function () { |
|
var expectedBottom = [275, 293, 365, 281, 395, 290]; |
|
chart.internal.main.selectAll('.c3-bars-data1 .c3-bar').each(function (d, i) { |
|
var rect = d3.select(this).node().getBoundingClientRect(); |
|
expect(rect.bottom).toBeCloseTo(expectedBottom[i], -1); |
|
}); |
|
}); |
|
}); |
|
|
|
describe('with timeseries data', function () { |
|
it('should update args', function () { |
|
args = { |
|
data: { |
|
x: 'date', |
|
columns: [ |
|
['date', '2012-12-24', '2012-12-25', '2012-12-26', '2012-12-27', '2012-12-28', '2012-12-29'], |
|
['data1', 30, 200, -100, 400, -150, 250], |
|
['data2', 50, 20, 10, 40, 15, 25], |
|
], |
|
groups: [ |
|
['data1', 'data2'], |
|
], |
|
type: 'bar' |
|
}, |
|
axis: { |
|
x: { |
|
type: 'timeseries', |
|
} |
|
} |
|
}; |
|
expect(true).toBeTruthy(); |
|
}); |
|
it('should be stacked', function () { |
|
var expectedBottom = [275, 293, 365, 281, 395, 290]; |
|
chart.internal.main.selectAll('.c3-bars-data1 .c3-bar').each(function (d, i) { |
|
var rect = d3.select(this).node().getBoundingClientRect(); |
|
expect(rect.bottom).toBeCloseTo(expectedBottom[i], -1); |
|
}); |
|
}); |
|
}); |
|
|
|
describe('with timeseries data, different [xs]', function () { |
|
it('should update args', function () { |
|
var t1 = 1474020000000; // "2016-09-16T10:00:00.000Z" |
|
var t2 = 1474056000000; // "2016-09-16T20:00:00.000Z" |
|
|
|
args = { |
|
data: { |
|
xs: { |
|
'data1': 'x1', |
|
'data2': 'x2', |
|
'data3': 'x3' |
|
}, |
|
columns: [ |
|
['x1', t1, t2], |
|
['data1', 500, 500], |
|
['x2', t1], |
|
['data2', 500], |
|
['x3', t1, t2], |
|
['data3', 500, 500] |
|
], |
|
type: 'bar', |
|
groups: [['data1', 'data2', 'data3']] |
|
}, |
|
axis: { |
|
x: { type: 'timeseries' } |
|
} |
|
}; |
|
expect(true).toBeTruthy(); |
|
}); |
|
it('should be stacked', function () { |
|
var expectedBottom = [ |
|
[301, 430], |
|
[430], |
|
[172, 301] |
|
]; |
|
|
|
[1, 2, 3].forEach(function(dataIndex) { |
|
chart.internal.main.selectAll('.c3-bars-data' + dataIndex + ' .c3-bar').each(function (d, i) { |
|
var rect = d3.select(this).node().getBoundingClientRect(); |
|
expect(rect.bottom).toBeCloseTo(expectedBottom[dataIndex - 1][i], -1); |
|
}); |
|
}); |
|
}); |
|
}); |
|
|
|
describe('with category data', function () { |
|
it('should update args', function () { |
|
args = { |
|
data: { |
|
x: 'date', |
|
columns: [ |
|
['date', '2012-12-24', '2012-12-25', '2012-12-26', '2012-12-27', '2012-12-28', '2012-12-29'], |
|
['data1', 30, 200, -100, 400, -150, 250], |
|
['data2', 50, 20, 10, 40, 15, 25], |
|
], |
|
groups: [ |
|
['data1', 'data2'], |
|
], |
|
type: 'bar' |
|
}, |
|
axis: { |
|
x: { |
|
type: 'category', |
|
} |
|
} |
|
}; |
|
expect(true).toBeTruthy(); |
|
}); |
|
it('should be stacked', function () { |
|
var expectedBottom = [275, 293, 365, 281, 395, 290]; |
|
chart.internal.main.selectAll('.c3-bars-data1 .c3-bar').each(function (d, i) { |
|
var rect = d3.select(this).node().getBoundingClientRect(); |
|
expect(rect.bottom).toBeCloseTo(expectedBottom[i], -1); |
|
}); |
|
}); |
|
}); |
|
|
|
}); |
|
|
|
describe('internal.isWithinBar', function () { |
|
|
|
describe('with normal axis', function () { |
|
|
|
it('should update args', function () { |
|
args = { |
|
data: { |
|
columns: [ |
|
['data1', 30, 200, 100, 400, -150, 250], |
|
['data2', 50, 20, 10, 40, 15, 25], |
|
['data3', -150, 120, 110, 140, 115, 125] |
|
], |
|
type: 'bar' |
|
}, |
|
axis: { |
|
rotated: false |
|
} |
|
}; |
|
expect(true).toBeTruthy(); |
|
}); |
|
|
|
it('should not be within bar', function () { |
|
var bar = d3.select('.c3-target-data1 .c3-bar-0').node(); |
|
setMouseEvent(chart, 'click', 0, 0); |
|
expect(chart.internal.isWithinBar(bar)).toBeFalsy(); |
|
}); |
|
|
|
it('should be within bar', function () { |
|
var bar = d3.select('.c3-target-data1 .c3-bar-0').node(); |
|
setMouseEvent(chart, 'click', 31, 280); |
|
expect(chart.internal.isWithinBar(bar)).toBeTruthy(); |
|
}); |
|
|
|
it('should not be within bar of negative value', function () { |
|
var bar = d3.select('.c3-target-data3 .c3-bar-0').node(); |
|
setMouseEvent(chart, 'click', 68, 280); |
|
expect(chart.internal.isWithinBar(bar)).toBeFalsy(); |
|
}); |
|
|
|
it('should be within bar of negative value', function () { |
|
var bar = d3.select('.c3-target-data3 .c3-bar-0').node(); |
|
setMouseEvent(chart, 'click', 68, 350); |
|
expect(chart.internal.isWithinBar(bar)).toBeTruthy(); |
|
}); |
|
|
|
}); |
|
|
|
describe('with rotated axis', function () { |
|
|
|
it('should change the chart as axis rotated', function () { |
|
args.axis.rotated = true; |
|
expect(true).toBeTruthy(); |
|
}); |
|
|
|
it('should not be within bar', function () { |
|
var bar = d3.select('.c3-target-data1 .c3-bar-0').node(); |
|
setMouseEvent(chart, 'click', 0, 0); |
|
expect(chart.internal.isWithinBar(bar)).toBeFalsy(); |
|
}); |
|
|
|
it('should be within bar', function () { |
|
var bar = d3.select('.c3-target-data1 .c3-bar-0').node(); |
|
setMouseEvent(chart, 'click', 190, 20); |
|
expect(chart.internal.isWithinBar(bar)).toBeTruthy(); |
|
}); |
|
|
|
it('should be within bar of negative value', function () { |
|
var bar = d3.select('.c3-target-data3 .c3-bar-0').node(); |
|
setMouseEvent(chart, 'click', 68, 50); |
|
expect(chart.internal.isWithinBar(bar)).toBeTruthy(); |
|
}); |
|
|
|
}); |
|
|
|
}); |
|
|
|
});
|
|
|