Commit 6277e83c authored by Masayuki Tanaka's avatar Masayuki Tanaka

Support date for zoom API

parent 439e00f6
......@@ -5535,8 +5535,14 @@
c3_chart_fn.zoom = function (domain) {
var $$ = this.internal;
$$.brush.extent(domain);
$$.redraw({withUpdateXDomain: true});
if (domain) {
if ($$.isTimeSeries()) {
domain = domain.map(function (x) { return $$.parseDate(x); });
}
$$.brush.extent(domain);
$$.redraw({withUpdateXDomain: true});
}
return $$.brush.extent();
};
c3_chart_fn.zoom.enable = function (enabled) {
var $$ = this.internal;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -37,35 +37,88 @@ describe('c3 api zoom', function () {
describe('zoom', function () {
it('should be zoomed properly', function () {
chart.zoom([3, 5]);
var domain = chart.internal.x.domain();
expect(domain[0]).toBe(3);
expect(domain[1]).toBe(5);
var target = [3, 5], domain;
chart.zoom(target);
domain = chart.internal.x.domain();
expect(domain[0]).toBe(target[0]);
expect(domain[1]).toBe(target[1]);
});
it('should be zoomed properly again', function () {
chart.zoom([1, 4]);
var domain = chart.internal.x.domain();
expect(domain[0]).toBe(1);
expect(domain[1]).toBe(4);
var target = [1, 4], domain;
chart.zoom(target);
domain = chart.internal.x.domain();
expect(domain[0]).toBe(target[0]);
expect(domain[1]).toBe(target[1]);
});
it('should load timeseries data', function () {
args = {
data: {
x: 'date',
columns: [
['date', '2014-01-01', '2014-01-02', '2014-08-01', '2014-10-19'],
['data1', 30, 200, 100, 400]
]
},
axis: {
x: {
type: 'timeseries'
}
},
zoom: {
enabled: true
}
};
expect(true).toBeTruthy();
});
it('should be zoomed properly', function () {
var target = [new Date(2014, 7, 1), new Date(2014, 8, 1)], domain;
chart.zoom(target);
domain = chart.internal.x.domain();
expect(+domain[0]).toBe(+target[0]);
expect(+domain[1]).toBe(+target[1]);
});
it('should be zoomed properly', function () {
var target = ['2014-08-01', '2014-09-01'], domain;
chart.zoom(target);
domain = chart.internal.x.domain();
expect(+domain[0]).toBe(+chart.internal.parseDate(target[0]));
expect(+domain[1]).toBe(+chart.internal.parseDate(target[1]));
});
});
describe('unzoom', function () {
it('should load indexed data', function () {
args = {
data: {
columns: [
['data1', 30, 200, 100, 400, 150, 250]
]
},
zoom: {
enabled: true
}
};
expect(true).toBeTruthy();
});
it('should be unzoomed properly', function () {
var domain;
var target = [1, 4], orginal = chart.internal.x.domain(), domain;
chart.zoom([1, 4]);
chart.zoom(target);
domain = chart.internal.x.domain();
expect(domain[0]).toBe(1);
expect(domain[1]).toBe(4);
expect(domain[0]).toBe(target[0]);
expect(domain[1]).toBe(target[1]);
chart.unzoom();
domain = chart.internal.x.domain();
expect(domain[0]).toBe(-0.05);
expect(domain[1]).toBe(5.05);
expect(domain[0]).toBe(orginal[0]);
expect(domain[1]).toBe(orginal[1]);
});
});
......
c3_chart_fn.zoom = function (domain) {
var $$ = this.internal;
$$.brush.extent(domain);
$$.redraw({withUpdateXDomain: true});
if (domain) {
if ($$.isTimeSeries()) {
domain = domain.map(function (x) { return $$.parseDate(x); });
}
$$.brush.extent(domain);
$$.redraw({withUpdateXDomain: true});
}
return $$.brush.extent();
};
c3_chart_fn.zoom.enable = function (enabled) {
var $$ = this.internal;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment