Browse Source

Support date for zoom API

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

6
c3.js

@ -5535,8 +5535,14 @@
c3_chart_fn.zoom = function (domain) { c3_chart_fn.zoom = function (domain) {
var $$ = this.internal; var $$ = this.internal;
if (domain) {
if ($$.isTimeSeries()) {
domain = domain.map(function (x) { return $$.parseDate(x); });
}
$$.brush.extent(domain); $$.brush.extent(domain);
$$.redraw({withUpdateXDomain: true}); $$.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;

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

6
src/api.zoom.js

@ -1,7 +1,13 @@
c3_chart_fn.zoom = function (domain) { c3_chart_fn.zoom = function (domain) {
var $$ = this.internal; var $$ = this.internal;
if (domain) {
if ($$.isTimeSeries()) {
domain = domain.map(function (x) { return $$.parseDate(x); });
}
$$.brush.extent(domain); $$.brush.extent(domain);
$$.redraw({withUpdateXDomain: true}); $$.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;

Loading…
Cancel
Save