Browse Source

Support date for zoom API

pull/590/merge
Masayuki Tanaka 10 years ago
parent
commit
6277e83c6a
  1. 10
      c3.js
  2. 2
      c3.min.js
  3. 81
      spec/api.zoom-spec.js
  4. 10
      src/api.zoom.js

10
c3.js

@ -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;

2
c3.min.js vendored

File diff suppressed because one or more lines are too long

81
spec/api.zoom-spec.js

@ -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]);
});
});

10
src/api.zoom.js

@ -1,7 +1,13 @@
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;

Loading…
Cancel
Save