|
|
|
import { Chart } from './core';
|
|
|
|
import { isDefined } from './util';
|
|
|
|
|
|
|
|
Chart.prototype.zoom = function (domain) {
|
|
|
|
var $$ = this.internal;
|
|
|
|
if (domain) {
|
|
|
|
if ($$.isTimeSeries()) {
|
|
|
|
domain = domain.map(function (x) { return $$.parseDate(x); });
|
|
|
|
}
|
|
|
|
if ($$.config.subchart_show) {
|
|
|
|
$$.brush.selectionAsValue(domain, true);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
$$.updateXDomain(null, true, false, false, domain);
|
|
|
|
$$.redraw({withY: $$.config.zoom_rescale, withSubchart: false});
|
|
|
|
}
|
|
|
|
$$.config.zoom_onzoom.call(this, $$.x.orgDomain());
|
|
|
|
return domain;
|
|
|
|
} else {
|
|
|
|
return $$.x.domain();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
Chart.prototype.zoom.enable = function (enabled) {
|
|
|
|
var $$ = this.internal;
|
|
|
|
$$.config.zoom_enabled = enabled;
|
|
|
|
$$.updateAndRedraw();
|
|
|
|
};
|
|
|
|
Chart.prototype.unzoom = function () {
|
|
|
|
var $$ = this.internal;
|
|
|
|
if ($$.config.subchart_show) {
|
|
|
|
$$.brush.clear();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
$$.updateXDomain(null, true, false, false, $$.subX.domain());
|
|
|
|
$$.redraw({withY: $$.config.zoom_rescale, withSubchart: false});
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
Chart.prototype.zoom.max = function (max) {
|
|
|
|
var $$ = this.internal, config = $$.config, d3 = $$.d3;
|
|
|
|
if (max === 0 || max) {
|
|
|
|
config.zoom_x_max = d3.max([$$.orgXDomain[1], max]);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return config.zoom_x_max;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
Chart.prototype.zoom.min = function (min) {
|
|
|
|
var $$ = this.internal, config = $$.config, d3 = $$.d3;
|
|
|
|
if (min === 0 || min) {
|
|
|
|
config.zoom_x_min = d3.min([$$.orgXDomain[0], min]);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return config.zoom_x_min;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
Chart.prototype.zoom.range = function (range) {
|
|
|
|
if (arguments.length) {
|
|
|
|
if (isDefined(range.max)) { this.domain.max(range.max); }
|
|
|
|
if (isDefined(range.min)) { this.domain.min(range.min); }
|
|
|
|
} else {
|
|
|
|
return {
|
|
|
|
max: this.domain.max(),
|
|
|
|
min: this.domain.min()
|
|
|
|
};
|
|
|
|
}
|
|
|
|
};
|