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

Support date for zoom API

parent 439e00f6
...@@ -5535,8 +5535,14 @@ ...@@ -5535,8 +5535,14 @@
c3_chart_fn.zoom = function (domain) { c3_chart_fn.zoom = function (domain) {
var $$ = this.internal; var $$ = this.internal;
$$.brush.extent(domain); if (domain) {
$$.redraw({withUpdateXDomain: true}); 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) { c3_chart_fn.zoom.enable = function (enabled) {
var $$ = this.internal; 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 () { ...@@ -37,35 +37,88 @@ describe('c3 api zoom', function () {
describe('zoom', function () { describe('zoom', function () {
it('should be zoomed properly', function () { it('should be zoomed properly', function () {
chart.zoom([3, 5]); var target = [3, 5], domain;
var domain = chart.internal.x.domain(); chart.zoom(target);
expect(domain[0]).toBe(3); domain = chart.internal.x.domain();
expect(domain[1]).toBe(5); expect(domain[0]).toBe(target[0]);
expect(domain[1]).toBe(target[1]);
}); });
it('should be zoomed properly again', function () { it('should be zoomed properly again', function () {
chart.zoom([1, 4]); var target = [1, 4], domain;
var domain = chart.internal.x.domain(); chart.zoom(target);
expect(domain[0]).toBe(1); domain = chart.internal.x.domain();
expect(domain[1]).toBe(4); 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 () { 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 () { 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(); domain = chart.internal.x.domain();
expect(domain[0]).toBe(1); expect(domain[0]).toBe(target[0]);
expect(domain[1]).toBe(4); expect(domain[1]).toBe(target[1]);
chart.unzoom(); chart.unzoom();
domain = chart.internal.x.domain(); domain = chart.internal.x.domain();
expect(domain[0]).toBe(-0.05); expect(domain[0]).toBe(orginal[0]);
expect(domain[1]).toBe(5.05); expect(domain[1]).toBe(orginal[1]);
}); });
}); });
......
c3_chart_fn.zoom = function (domain) { c3_chart_fn.zoom = function (domain) {
var $$ = this.internal; var $$ = this.internal;
$$.brush.extent(domain); if (domain) {
$$.redraw({withUpdateXDomain: true}); 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) { c3_chart_fn.zoom.enable = function (enabled) {
var $$ = this.internal; 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