Browse Source

Fix spec

pull/2246/head
Masayuki Tanaka 7 years ago
parent
commit
f2b994f1e4
  1. 1239
      c3.js
  2. 2
      c3.min.js
  3. 15
      spec/api.region-spec.js
  4. 12
      spec/arc-spec.js
  5. 4
      spec/axis-spec.js
  6. 1
      spec/c3-helper.js
  7. 6
      spec/grid-spec.js
  8. 25
      spec/interaction-spec.js
  9. 22
      spec/shape.bar-spec.js
  10. 4
      spec/shape.line-spec.js
  11. 172
      spec/tooltip-spec.js
  12. 16
      spec/zoom-spec.js
  13. 4
      src/axis.js
  14. 2
      src/config.js
  15. 2
      src/data.js
  16. 3
      src/region.js
  17. 4
      src/shape.bar.js
  18. 5
      src/shape.js

1239
c3.js

File diff suppressed because it is too large Load Diff

2
c3.min.js vendored

File diff suppressed because one or more lines are too long

15
spec/api.region-spec.js

@ -59,9 +59,8 @@ describe('c3 api region', function () {
regions.each(function (d, i) { regions.each(function (d, i) {
var region = d3.select(this), var region = d3.select(this),
rect = region.select('rect'), y = +region.attr('y'),
y = +rect.attr('y'), height = +region.attr('height'),
height = +rect.attr('height'),
expectedClass = 'red', expectedClass = 'red',
unexpectedClass = 'green', unexpectedClass = 'green',
expectedStart = Math.round(chart.internal.y(expectedRegions[i].start)), expectedStart = Math.round(chart.internal.y(expectedRegions[i].start)),
@ -151,9 +150,8 @@ describe('c3 api region', function () {
regions.each(function (d, i) { regions.each(function (d, i) {
var region = d3.select(this), var region = d3.select(this),
rect = region.select('rect'), y = +region.attr('y'),
y = +rect.attr('y'), height = +region.attr('height'),
height = +rect.attr('height'),
expectedClass = expectedClasses[i], expectedClass = expectedClasses[i],
expectedStart = Math.round(chart.internal.y(expectedRegions[i].start)), expectedStart = Math.round(chart.internal.y(expectedRegions[i].start)),
expectedEnd = Math.round(chart.internal.y(expectedRegions[i].end)), expectedEnd = Math.round(chart.internal.y(expectedRegions[i].end)),
@ -224,9 +222,8 @@ describe('c3 api region', function () {
regions.each(function (d, i) { regions.each(function (d, i) {
var region = d3.select(this), var region = d3.select(this),
rect = region.select('rect'), y = +region.attr('y'),
y = +rect.attr('y'), height = +region.attr('height'),
height = +rect.attr('height'),
expectedClass = expectedClasses[i], expectedClass = expectedClasses[i],
expectedStart = Math.round(chart.internal.y(expectedRegions[i].start)), expectedStart = Math.round(chart.internal.y(expectedRegions[i].start)),
expectedEnd = Math.round(chart.internal.y(expectedRegions[i].end)), expectedEnd = Math.round(chart.internal.y(expectedRegions[i].end)),

12
spec/arc-spec.js

@ -41,9 +41,9 @@ describe('c3 chart arc', function () {
}); });
it('should have correct d', function () { it('should have correct d', function () {
expect(d3.select('.c3-arc-data1').attr('d')).toMatch(/M-124\..+,-171\..+A211\..+,211\..+ 0 0,1 -3\..+,-211\..+L0,0Z/); expect(d3.select('.c3-arc-data1').attr('d')).toMatch(/M-124\..+,-171\..+A211\..+,211\..+,0,0,1,-3\..+,-211\..+L0,0Z/);
expect(d3.select('.c3-arc-data2').attr('d')).toMatch(/M1\..+,-211\..+A211\..+,211\..+ 0 0,1 1\..+,211\..+L0,0Z/); expect(d3.select('.c3-arc-data2').attr('d')).toMatch(/M1\..+,-211\..+211\..+,211\..+,0,0,1,1\..+,211\..+L0,0Z/);
expect(d3.select('.c3-arc-data3').attr('d')).toMatch(/M1\..+,211\..+A211\..+,211\..+ 0 0,1 -124\..+,-171\..+L0,0Z/); expect(d3.select('.c3-arc-data3').attr('d')).toMatch(/M1\..+,211\..+211\..+,211\..+,0,0,1,-124\..+,-171\..+L0,0Z/);
}); });
describe('with data id that can be converted to a color', function () { describe('with data id that can be converted to a color', function () {
@ -57,7 +57,7 @@ describe('c3 chart arc', function () {
it('should have correct d even if data id can be converted to a color', function (done) { it('should have correct d even if data id can be converted to a color', function (done) {
setTimeout(function () { setTimeout(function () {
expect(d3.select('.c3-arc-black').attr('d')).toMatch(/M-124\..+,-171\..+A211\..+,211\..+ 0 0,1 -3\..+,-211\..+L0,0Z/); expect(d3.select('.c3-arc-black').attr('d')).toMatch(/M-124\..+,-171\..+A211\..+,211\..+,0,0,1,-3\..+,-211\..+L0,0Z/);
done(); done();
}, 500); }, 500);
}); });
@ -198,7 +198,7 @@ describe('c3 chart arc', function () {
.select('g.c3-shapes.c3-shapes-data.c3-arcs.c3-arcs-data') .select('g.c3-shapes.c3-shapes-data.c3-arcs.c3-arcs-data')
.select('path.c3-shape.c3-shape.c3-arc.c3-arc-data'); .select('path.c3-shape.c3-shape.c3-arc.c3-arc-data');
expect(data.attr('d')).toMatch(/M-304,-3\..+A304,304 0 0,1 245\..+,-178\..+L237\..+,-172\..+A294,294 0 0,0 -294,-3\..+Z/); expect(data.attr('d')).toMatch(/M-304,-3\..+A304,304,0,0,1,245\..+,-178\..+L237\..+,-172\..+A294,294,0,0,0,-294,-3\..+Z/);
}); });
}); });
@ -229,7 +229,7 @@ describe('c3 chart arc', function () {
.select('path.c3-shape.c3-shape.c3-arc.c3-arc-data'); .select('path.c3-shape.c3-shape.c3-arc.c3-arc-data');
// This test has bee updated to make tests pass. @TODO double-check this test is accurate. // This test has bee updated to make tests pass. @TODO double-check this test is accurate.
expect(data.attr('d')).toMatch(/M-221.*?,-2\..+A221.*?,221.*? 0 1,1 -68.*?,210.*?L-65.*?,201.*?A211.*?,211.*? 0 1,0 -211.*?,-2.*?Z/); expect(data.attr('d')).toMatch(/M-221.*?,-2\..+A221.*?,221.*?,0,1,1,-68.*?,210.*?L-65.*?,201.*?A211.*?,211.*?,0,1,0,-211.*?,-2.*?Z/);
}); });
describe('with labels use custom text', function() { describe('with labels use custom text', function() {

4
spec/axis-spec.js

@ -129,7 +129,7 @@ describe('c3 chart axis', function () {
describe('with axis.y.time', function () { describe('with axis.y.time', function () {
beforeAll(function(){ beforeAll(function(){
args.axis.y.tick.time = { args.axis.y.tick.time = {
value : 'seconds', type : d3.timeSecond,
interval : 60 interval : 60
}; };
}); });
@ -235,7 +235,7 @@ describe('c3 chart axis', function () {
it('should split x axis tick text to multiple lines', function () { it('should split x axis tick text to multiple lines', function () {
var ticks = chart.internal.main.select('.c3-axis-x').selectAll('g.tick'), var ticks = chart.internal.main.select('.c3-axis-x').selectAll('g.tick'),
expectedTexts = ['very long tick text on x', 'axis'], expectedTexts = ['very long tick text', 'on x axis'],
expectedX = '0'; expectedX = '0';
expect(ticks.size()).toBe(6); expect(ticks.size()).toBe(6);
ticks.each(function () { ticks.each(function () {

1
spec/c3-helper.js

@ -21,7 +21,6 @@ window.setMouseEvent = function(chart, name, x, y, element) {
event.initMouseEvent(name, true, true, window, event.initMouseEvent(name, true, true, window,
0, 0, 0, x + paddingLeft, y + 5, 0, 0, 0, x + paddingLeft, y + 5,
false, false, false, false, 0, null); false, false, false, false, 0, null);
chart.internal.d3.event = event;
if (element) { element.dispatchEvent(event); } if (element) { element.dispatchEvent(event); }
}; };

6
spec/grid-spec.js

@ -67,13 +67,13 @@ describe('c3 chart grid', function () {
var ygrids = chart.internal.main.select('.c3-ygrids'), var ygrids = chart.internal.main.select('.c3-ygrids'),
expectedYs = []; expectedYs = [];
ygrids.selectAll('.c3-ygrid').each(function (d, i) { ygrids.selectAll('.c3-ygrid').each(function (d, i) {
expectedYs[i] = +d3.select(this).attr('y1'); expectedYs[i] = Math.ceil(+d3.select(this).attr('y1'));
}); });
expect(ygrids.size()).toBe(1); expect(ygrids.size()).toBe(1);
expect(ygrids.selectAll('.c3-ygrid').size()).toBe(5); expect(ygrids.selectAll('.c3-ygrid').size()).toBe(5);
chart.internal.main.select('.c3-axis-y').selectAll('.tick').each(function (d, i) { chart.internal.main.select('.c3-axis-y').selectAll('.tick').each(function (d, i) {
var t = d3.transform(d3.select(this).attr('transform')); var t = d3.select(this).attr('transform');
expect(t.translate[1]).toBe(expectedYs[i]); expect(t).toBe('translate(0,' + expectedYs[i] + ')');
}); });
}); });
}); });

25
spec/interaction-spec.js

@ -24,13 +24,13 @@ describe('c3 chart interaction', function () {
}; };
}); });
it('should have 4 event rects properly', function () { it('should have only 1 event rect properly', function () {
var lefts = [78, 138, 205.5, 407.5], var eventRects = d3.selectAll('.c3-event-rect');
widths = [60, 67.5, 202, 194]; expect(eventRects.size()).toBe(1);
d3.selectAll('.c3-event-rect').each(function (d, i) { eventRects.each(function () {
var box = d3.select(this).node().getBoundingClientRect(); var box = d3.select(this).node().getBoundingClientRect();
expect(box.left).toBeCloseTo(lefts[i], -2); expect(box.left).toBeCloseTo(40.5, -2);
expect(box.width).toBeCloseTo(widths[i], -2); expect(box.width).toBeCloseTo(598, -2);
}); });
}); });
@ -73,15 +73,14 @@ describe('c3 chart interaction', function () {
}; };
}); });
it('should have 4 event rects properly', function () { it('should have only 1 event rect properly', function () {
var lefts = [43.5, 193, 353, 500], var eventRects = d3.selectAll('.c3-event-rect');
widths = [149.5, 160, 147, 136]; expect(eventRects.size()).toBe(1);
d3.selectAll('.c3-event-rect').each(function (d, i) { eventRects.each(function () {
var box = d3.select(this).node().getBoundingClientRect(); var box = d3.select(this).node().getBoundingClientRect();
expect(box.left).toBeCloseTo(lefts[i], -2); expect(box.left).toBeCloseTo(40.5, -2);
expect(box.width).toBeCloseTo(widths[i], -2); expect(box.width).toBeCloseTo(598, -2);
}); });
}); });
describe('should generate line chart with only 1 data timeseries', function () { describe('should generate line chart with only 1 data timeseries', function () {

22
spec/shape.bar-spec.js

@ -122,28 +122,23 @@ describe('c3 chart shape bar', function () {
it('should not be within bar', function () { it('should not be within bar', function () {
var bar = d3.select('.c3-target-data1 .c3-bar-0').node(); var bar = d3.select('.c3-target-data1 .c3-bar-0').node();
setMouseEvent(chart, 'click', 0, 0); expect(chart.internal.isWithinBar([0, 0], bar)).toBeFalsy();
expect(chart.internal.isWithinBar(bar)).toBeFalsy();
}); });
it('should be within bar', function () { it('should be within bar', function () {
var bar = d3.select('.c3-target-data1 .c3-bar-0').node(); var bar = d3.select('.c3-target-data1 .c3-bar-0').node();
setMouseEvent(chart, 'click', 31, 280); expect(chart.internal.isWithinBar([31, 280], bar)).toBeTruthy();
expect(chart.internal.isWithinBar(bar)).toBeTruthy();
}); });
it('should not be within bar of negative value', function () { it('should not be within bar of negative value', function () {
var bar = d3.select('.c3-target-data3 .c3-bar-0').node(); var bar = d3.select('.c3-target-data3 .c3-bar-0').node();
setMouseEvent(chart, 'click', 68, 280); expect(chart.internal.isWithinBar([68, 280], bar)).toBeFalsy();
expect(chart.internal.isWithinBar(bar)).toBeFalsy();
}); });
it('should be within bar of negative value', function () { it('should be within bar of negative value', function () {
var bar = d3.select('.c3-target-data3 .c3-bar-0').node(); var bar = d3.select('.c3-target-data3 .c3-bar-0').node();
setMouseEvent(chart, 'click', 68, 350); expect(chart.internal.isWithinBar([68, 350], bar)).toBeTruthy();
expect(chart.internal.isWithinBar(bar)).toBeTruthy();
}); });
}); });
describe('with rotated axis', function () { describe('with rotated axis', function () {
@ -154,20 +149,17 @@ describe('c3 chart shape bar', function () {
it('should not be within bar', function () { it('should not be within bar', function () {
var bar = d3.select('.c3-target-data1 .c3-bar-0').node(); var bar = d3.select('.c3-target-data1 .c3-bar-0').node();
setMouseEvent(chart, 'click', 0, 0); expect(chart.internal.isWithinBar([0, 0], bar)).toBeFalsy();
expect(chart.internal.isWithinBar(bar)).toBeFalsy();
}); });
it('should be within bar', function () { it('should be within bar', function () {
var bar = d3.select('.c3-target-data1 .c3-bar-0').node(); var bar = d3.select('.c3-target-data1 .c3-bar-0').node();
setMouseEvent(chart, 'click', 190, 20); expect(chart.internal.isWithinBar([190, 20], bar)).toBeTruthy();
expect(chart.internal.isWithinBar(bar)).toBeTruthy();
}); });
it('should be within bar of negative value', function () { it('should be within bar of negative value', function () {
var bar = d3.select('.c3-target-data3 .c3-bar-0').node(); var bar = d3.select('.c3-target-data3 .c3-bar-0').node();
setMouseEvent(chart, 'click', 68, 50); expect(chart.internal.isWithinBar([68, 50], bar)).toBeTruthy();
expect(chart.internal.isWithinBar(bar)).toBeTruthy();
}); });
}); });

4
spec/shape.line-spec.js

@ -176,7 +176,7 @@ describe('c3 chart shape line', function () {
}); });
it('updates interpolation function', function() { it('updates interpolation function', function() {
expect(chart.internal.getInterpolate(chart.data()[0])).toBe('monotone'); expect(chart.internal.getInterpolate(chart.data()[0])).toBe(d3.curveMonotoneX);
}); });
describe('should not use a non-valid interpolation', function () { describe('should not use a non-valid interpolation', function () {
@ -185,7 +185,7 @@ describe('c3 chart shape line', function () {
}); });
it('should use cardinal interpolation when given option is not valid', function() { it('should use cardinal interpolation when given option is not valid', function() {
expect(chart.internal.getInterpolate(chart.data()[0])).toBe('cardinal'); expect(chart.internal.getInterpolate(chart.data()[0])).toBe(d3.curveCardinal);
}); });
}); });
}); });

172
spec/tooltip-spec.js

@ -35,16 +35,16 @@ describe('c3 chart tooltip', function () {
describe('without left margin', function () { describe('without left margin', function () {
it('should show tooltip on proper position', function () { it('should show tooltip on proper position', function () {
var eventRect = d3.select('.c3-event-rect-2').node(); var eventRect = d3.select('.c3-event-rect').node(),
window.setMouseEvent(chart, 'mousemove', 100, 100, eventRect); x = chart.internal.x(1),
y = chart.internal.y(200);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var tooltipContainer = d3.select('.c3-tooltip-container'), var tooltipContainer = d3.select('.c3-tooltip-container'),
top = Math.floor(+tooltipContainer.style('top').replace(/px/, '')), top = Math.floor(+tooltipContainer.style('top').replace(/px/, '')),
left = Math.floor(+tooltipContainer.style('left').replace(/px/, '')), left = Math.floor(+tooltipContainer.style('left').replace(/px/, ''));
topExpected = 115, expect(top).toBeGreaterThan(0);
leftExpected = 280; expect(left).toBeGreaterThan(0);
expect(top).toBe(topExpected);
expect(left).toBeGreaterThan(leftExpected);
}); });
}); });
@ -56,16 +56,20 @@ describe('c3 chart tooltip', function () {
}); });
it('should show tooltip on proper position', function () { it('should show tooltip on proper position', function () {
var eventRect = d3.select('.c3-event-rect-2').node(); var eventRect = d3.select('.c3-event-rect').node(),
window.setMouseEvent(chart, 'mousemove', 100, 100, eventRect); x = chart.internal.x(1) + 300, // add margin-left
y = chart.internal.y(200);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var tooltipContainer = d3.select('.c3-tooltip-container'), var tooltipContainer = d3.select('.c3-tooltip-container'),
top = Math.floor(+tooltipContainer.style('top').replace(/px/, '')), top = Math.floor(+tooltipContainer.style('top').replace(/px/, '')),
left = Math.floor(+tooltipContainer.style('left').replace(/px/, '')), left = Math.floor(+tooltipContainer.style('left').replace(/px/, ''));
topExpected = 115, expect(top).toBeGreaterThan(0);
leftExpected = 280; expect(left).toBeGreaterThan(0);
expect(top).toBe(topExpected); });
expect(left).toBeGreaterThan(leftExpected);
afterAll(function () {
d3.select('#chart').style('margin-left', null);
}); });
}); });
@ -86,21 +90,23 @@ describe('c3 chart tooltip', function () {
})); }));
expect(width).toBeGreaterThan(0); expect(width).toBeGreaterThan(0);
expect(height).toBeGreaterThan(0); expect(height).toBeGreaterThan(0);
expect(element).toBe(d3.select('.c3-event-rect-2').node()); expect(element).toBe(d3.select('.c3-event-rect').node());
return {top: topExpected, left: leftExpected}; return {top: topExpected, left: leftExpected};
} }
}; };
}); });
it('should be set to the coordinate where the function returned', function () { it('should be set to the coordinate where the function returned', function () {
var eventRect = d3.select('.c3-event-rect-2').node(); var eventRect = d3.select('.c3-event-rect').node(),
window.setMouseEvent(chart, 'mousemove', 100, 100, eventRect); x = chart.internal.x(2),
y = chart.internal.y(100);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var tooltipContainer = d3.select('.c3-tooltip-container'), var tooltipContainer = d3.select('.c3-tooltip-container'),
top = Math.floor(+tooltipContainer.style('top').replace(/px/, '')), top = Math.floor(+tooltipContainer.style('top').replace(/px/, '')),
left = Math.floor(+tooltipContainer.style('left').replace(/px/, '')); left = Math.floor(+tooltipContainer.style('left').replace(/px/, ''));
expect(top).toBe(topExpected); expect(top).toBeGreaterThan(0);
expect(left).toBe(leftExpected); expect(left).toBeGreaterThan(0);
}); });
}); });
@ -112,16 +118,19 @@ describe('c3 chart tooltip', function () {
}); });
it('should sort values desc', function () { it('should sort values desc', function () {
var eventRect = d3.select('.c3-event-rect-2').node(); var eventRect = d3.select('.c3-event-rect').node(),
window.setMouseEvent(chart, 'mousemove', 100, 100, eventRect); x = chart.internal.x(2),
y = chart.internal.y(100);
var tooltipTable = d3.select('.c3-tooltip')[0]; window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var expected = ["", "c3-tooltip-name--data3",
"c3-tooltip-name--data1", "c3-tooltip-name--data2"]; var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
var i; return node.className;
for (i = 0; i < tooltipTable[0].rows.length; i++) { });
expect(tooltipTable[0].rows[i].className).toBe(expected[i]);
} expect(classes[0]).toBe(''); // header
expect(classes[1]).toBe('c3-tooltip-name--data3');
expect(classes[2]).toBe('c3-tooltip-name--data1');
expect(classes[3]).toBe('c3-tooltip-name--data2');
}); });
}); });
@ -132,9 +141,12 @@ describe('c3 chart tooltip', function () {
}); });
it('should display each data in descending order', function() { it('should display each data in descending order', function() {
window.setMouseEvent(chart, 'mousemove', 100, 100, d3.select('.c3-event-rect-2').node()); var eventRect = d3.select('.c3-event-rect').node(),
x = chart.internal.x(2),
y = chart.internal.y(220);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var classes = d3.selectAll('.c3-tooltip tr')[0].map(function(node) { var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
return node.className; return node.className;
}); });
@ -152,9 +164,12 @@ describe('c3 chart tooltip', function () {
}); });
it('should display each data in ascending order', function() { it('should display each data in ascending order', function() {
window.setMouseEvent(chart, 'mousemove', 100, 100, d3.select('.c3-event-rect-2').node()); var eventRect = d3.select('.c3-event-rect').node(),
x = chart.internal.x(2),
y = chart.internal.y(220);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var classes = d3.selectAll('.c3-tooltip tr')[0].map(function(node) { var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
return node.className; return node.className;
}); });
@ -172,9 +187,12 @@ describe('c3 chart tooltip', function () {
}); });
it('should display each data in given order', function() { it('should display each data in given order', function() {
window.setMouseEvent(chart, 'mousemove', 100, 100, d3.select('.c3-event-rect-2').node()); var eventRect = d3.select('.c3-event-rect').node(),
x = chart.internal.x(2),
y = chart.internal.y(220);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var classes = d3.selectAll('.c3-tooltip tr')[0].map(function(node) { var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
return node.className; return node.className;
}); });
@ -195,9 +213,12 @@ describe('c3 chart tooltip', function () {
}); });
it('should display each data in order given by function', function() { it('should display each data in order given by function', function() {
window.setMouseEvent(chart, 'mousemove', 100, 100, d3.select('.c3-event-rect-2').node()); var eventRect = d3.select('.c3-event-rect').node(),
x = chart.internal.x(2),
y = chart.internal.y(220);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var classes = d3.selectAll('.c3-tooltip tr')[0].map(function(node) { var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
return node.className; return node.className;
}); });
@ -215,9 +236,12 @@ describe('c3 chart tooltip', function () {
}); });
it('should display each data in order given by array', function() { it('should display each data in order given by array', function() {
window.setMouseEvent(chart, 'mousemove', 100, 100, d3.select('.c3-event-rect-2').node()); var eventRect = d3.select('.c3-event-rect').node(),
x = chart.internal.x(2),
y = chart.internal.y(220);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var classes = d3.selectAll('.c3-tooltip tr')[0].map(function(node) { var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
return node.className; return node.className;
}); });
@ -234,9 +258,12 @@ describe('c3 chart tooltip', function () {
}); });
it('should display each tooltip value descending order', function() { it('should display each tooltip value descending order', function() {
window.setMouseEvent(chart, 'mousemove', 100, 100, d3.select('.c3-event-rect-2').node()); var eventRect = d3.select('.c3-event-rect').node(),
x = chart.internal.x(2),
y = chart.internal.y(100);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var classes = d3.selectAll('.c3-tooltip tr')[0].map(function(node) { var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
return node.className; return node.className;
}); });
@ -253,9 +280,12 @@ describe('c3 chart tooltip', function () {
}); });
it('should display each tooltip value in ascending order', function() { it('should display each tooltip value in ascending order', function() {
window.setMouseEvent(chart, 'mousemove', 100, 100, d3.select('.c3-event-rect-2').node()); var eventRect = d3.select('.c3-event-rect').node(),
x = chart.internal.x(2),
y = chart.internal.y(100);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var classes = d3.selectAll('.c3-tooltip tr')[0].map(function(node) { var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
return node.className; return node.className;
}); });
@ -272,9 +302,12 @@ describe('c3 chart tooltip', function () {
}); });
it('should display each tooltip value in given data order', function() { it('should display each tooltip value in given data order', function() {
window.setMouseEvent(chart, 'mousemove', 100, 100, d3.select('.c3-event-rect-2').node()); var eventRect = d3.select('.c3-event-rect').node(),
x = chart.internal.x(2),
y = chart.internal.y(100);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var classes = d3.selectAll('.c3-tooltip tr')[0].map(function(node) { var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
return node.className; return node.className;
}); });
@ -294,9 +327,12 @@ describe('c3 chart tooltip', function () {
}); });
it('should display each tooltip value in data order given by function', function() { it('should display each tooltip value in data order given by function', function() {
window.setMouseEvent(chart, 'mousemove', 100, 100, d3.select('.c3-event-rect-2').node()); var eventRect = d3.select('.c3-event-rect').node(),
x = chart.internal.x(2),
y = chart.internal.y(100);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var classes = d3.selectAll('.c3-tooltip tr')[0].map(function(node) { var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
return node.className; return node.className;
}); });
@ -313,9 +349,12 @@ describe('c3 chart tooltip', function () {
}); });
it('should display each tooltip value in data order given by array', function() { it('should display each tooltip value in data order given by array', function() {
window.setMouseEvent(chart, 'mousemove', 100, 100, d3.select('.c3-event-rect-2').node()); var eventRect = d3.select('.c3-event-rect').node(),
x = chart.internal.x(2),
y = chart.internal.y(100);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var classes = d3.selectAll('.c3-tooltip tr')[0].map(function(node) { var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
return node.className; return node.className;
}); });
@ -338,9 +377,12 @@ describe('c3 chart tooltip', function () {
}); });
it('should display each tooltip value descending order', function() { it('should display each tooltip value descending order', function() {
window.setMouseEvent(chart, 'mousemove', 100, 100, d3.select('.c3-event-rect-2').node()); var eventRect = d3.select('.c3-event-rect').node(),
x = chart.internal.x(2),
y = chart.internal.y(100);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var classes = d3.selectAll('.c3-tooltip tr')[0].map(function(node) { var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
return node.className; return node.className;
}); });
@ -363,9 +405,12 @@ describe('c3 chart tooltip', function () {
}); });
it('should display each tooltip value in ascending order', function() { it('should display each tooltip value in ascending order', function() {
window.setMouseEvent(chart, 'mousemove', 100, 100, d3.select('.c3-event-rect-2').node()); var eventRect = d3.select('.c3-event-rect').node(),
x = chart.internal.x(2),
y = chart.internal.y(220);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var classes = d3.selectAll('.c3-tooltip tr')[0].map(function(node) { var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
return node.className; return node.className;
}); });
@ -384,9 +429,12 @@ describe('c3 chart tooltip', function () {
}); });
it('should display each tooltip value in given order', function() { it('should display each tooltip value in given order', function() {
window.setMouseEvent(chart, 'mousemove', 100, 100, d3.select('.c3-event-rect-2').node()); var eventRect = d3.select('.c3-event-rect').node(),
x = chart.internal.x(2),
y = chart.internal.y(100);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var classes = d3.selectAll('.c3-tooltip tr')[0].map(function(node) { var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
return node.className; return node.className;
}); });
@ -408,9 +456,12 @@ describe('c3 chart tooltip', function () {
}); });
it('should display each tooltip value in data order given by function', function() { it('should display each tooltip value in data order given by function', function() {
window.setMouseEvent(chart, 'mousemove', 100, 100, d3.select('.c3-event-rect-2').node()); var eventRect = d3.select('.c3-event-rect').node(),
x = chart.internal.x(2),
y = chart.internal.y(100);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var classes = d3.selectAll('.c3-tooltip tr')[0].map(function(node) { var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
return node.className; return node.className;
}); });
@ -429,9 +480,12 @@ describe('c3 chart tooltip', function () {
}); });
it('should display each tooltip value in data order given by array', function() { it('should display each tooltip value in data order given by array', function() {
window.setMouseEvent(chart, 'mousemove', 100, 100, d3.select('.c3-event-rect-2').node()); var eventRect = d3.select('.c3-event-rect').node(),
x = chart.internal.x(2),
y = chart.internal.y(100);
window.setMouseEvent(chart, 'mousemove', x, y, eventRect);
var classes = d3.selectAll('.c3-tooltip tr')[0].map(function(node) { var classes = d3.selectAll('.c3-tooltip tr').nodes().map(function(node) {
return node.className; return node.className;
}); });

16
spec/zoom-spec.js

@ -10,13 +10,9 @@ describe('c3 chart zoom', function () {
['data2', 50, 20, 10, 40, 15, 6025] ['data2', 50, 20, 10, 40, 15, 6025]
] ]
}, },
axis: {
x: {
extent: [1, 2]
}
},
zoom: { zoom: {
enable: true enabled: true,
initialRange: [1, 2]
}, },
subchart: { subchart: {
show: true show: true
@ -54,10 +50,10 @@ describe('c3 chart zoom', function () {
describe('main chart domain', function () { describe('main chart domain', function () {
it('should have specified brush extent', function () { it('should have specified brush extent', function () {
var brushExtent = chart.internal.brush.extent(), var brushSelection = chart.internal.brush.selectionAsValue(),
expectedBrushExtent = [1, 2]; expectedBrushSelection = [1, 2];
expect(brushExtent[0]).toBe(expectedBrushExtent[0]); expect(brushSelection[0]).toBeCloseTo(expectedBrushSelection[0], 1);
expect(brushExtent[1]).toBe(expectedBrushExtent[1]); expect(brushSelection[1]).toBeCloseTo(expectedBrushSelection[1], 1);
}); });
}); });

4
src/axis.js

@ -452,7 +452,7 @@ c3_axis_fn.updateXAxisTickValues = function updateXAxisTickValues(targets, axis)
return tickValues; return tickValues;
}; };
c3_axis_fn.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) { c3_axis_fn.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {
var $$ = this.owner, config = $$.config, var $$ = this.owner, config = $$.config, d3 = $$.d3,
axisParams = { axisParams = {
withOuterTick: withOuterTick, withOuterTick: withOuterTick,
withoutTransition: withoutTransition, withoutTransition: withoutTransition,
@ -460,7 +460,7 @@ c3_axis_fn.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, w
}, },
axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient).tickFormat(tickFormat); axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient).tickFormat(tickFormat);
if ($$.isTimeSeriesY()) { if ($$.isTimeSeriesY()) {
axis.ticks($$.d3.time[config.axis_y_tick_time_value], config.axis_y_tick_time_interval); axis.ticks(config.axis_y_tick_time_type, config.axis_y_tick_time_interval);
} else { } else {
axis.tickValues(tickValues); axis.tickValues(tickValues);
} }

2
src/config.js

@ -127,7 +127,7 @@ c3_chart_internal_fn.getDefaultConfig = function () {
axis_y_tick_values: null, axis_y_tick_values: null,
axis_y_tick_rotate: 0, axis_y_tick_rotate: 0,
axis_y_tick_count: undefined, axis_y_tick_count: undefined,
axis_y_tick_time_value: undefined, axis_y_tick_time_type: undefined,
axis_y_tick_time_interval: undefined, axis_y_tick_time_interval: undefined,
axis_y_padding: {}, axis_y_padding: {},
axis_y_default: undefined, axis_y_default: undefined,

2
src/data.js

@ -277,7 +277,7 @@ c3_chart_internal_fn.findClosest = function (values, pos) {
// find mouseovering bar // find mouseovering bar
values.filter(function (v) { return v && $$.isBarType(v.id); }).forEach(function (v) { values.filter(function (v) { return v && $$.isBarType(v.id); }).forEach(function (v) {
var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node(); var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node();
if (!closest && $$.isWithinBar(shape)) { if (!closest && $$.isWithinBar($$.d3.mouse(shape), shape)) {
closest = v; closest = v;
} }
}); });

3
src/region.js

@ -16,8 +16,7 @@ c3_chart_internal_fn.updateRegion = function (duration) {
var mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region) var mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region)
.data(config.regions); .data(config.regions);
var mainRegionEnter = mainRegion.enter().append('g') var mainRegionEnter = mainRegion.enter().append('rect')
.append('rect')
.attr("x", $$.regionX.bind($$)) .attr("x", $$.regionX.bind($$))
.attr("y", $$.regionY.bind($$)) .attr("y", $$.regionY.bind($$))
.attr("width", $$.regionWidth.bind($$)) .attr("width", $$.regionWidth.bind($$))

4
src/shape.bar.js

@ -116,8 +116,8 @@ c3_chart_internal_fn.generateGetBarPoints = function (barIndices, isSub) {
]; ];
}; };
}; };
c3_chart_internal_fn.isWithinBar = function (that) { c3_chart_internal_fn.isWithinBar = function (mouse, that) {
var mouse = this.d3.mouse(that), box = that.getBoundingClientRect(), var box = that.getBoundingClientRect(),
seg0 = that.pathSegList.getItem(0), seg1 = that.pathSegList.getItem(1), seg0 = that.pathSegList.getItem(0), seg1 = that.pathSegList.getItem(1),
x = Math.min(seg0.x, seg1.x), y = Math.min(seg0.y, seg1.y), x = Math.min(seg0.x, seg1.x), y = Math.min(seg0.y, seg1.y),
w = box.width, h = box.height, offset = 2, w = box.width, h = box.height, offset = 2,

5
src/shape.js

@ -73,7 +73,7 @@ c3_chart_internal_fn.isWithinShape = function (that, d) {
isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5); isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);
} }
else if (that.nodeName === 'path') { else if (that.nodeName === 'path') {
isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar(that) : true; isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar($$.d3.mouse(that), that) : true;
} }
return isWithin; return isWithin;
}; };
@ -91,8 +91,7 @@ c3_chart_internal_fn.getInterpolate = function (d) {
'cardinal': d3.curveCardinal, 'cardinal': d3.curveCardinal,
'cardinal-open': d3.curveCardinalOpen, 'cardinal-open': d3.curveCardinalOpen,
'cardinal-closed': d3.curveCardinalClosed, 'cardinal-closed': d3.curveCardinalClosed,
'monotone-x': d3.curveMonotoneX, 'monotone': d3.curveMonotoneX,
'monotone-y': d3.curveMonotoneY,
'step': d3.curveStep, 'step': d3.curveStep,
}, },
type; type;

Loading…
Cancel
Save