Commit aeff370a authored by Masayuki Tanaka's avatar Masayuki Tanaka

Fix to zoom out based on zoom.x.min/max - #603

parent 913a5681
...@@ -1581,9 +1581,8 @@ ...@@ -1581,9 +1581,8 @@
return $$.x.domain(); return $$.x.domain();
}; };
c3_chart_internal_fn.trimXDomain = function (domain) { c3_chart_internal_fn.trimXDomain = function (domain) {
var $$ = this, config = $$.config, d3 = $$.d3; var zoomDomain = this.getZoomDomain(),
var min = d3.min([$$.orgXDomain[0], config.zoom_x_min]); min = zoomDomain[0], max = zoomDomain[1];
var max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);
if (domain[0] <= min) { if (domain[0] <= min) {
domain[1] = +domain[1] + (min - domain[0]); domain[1] = +domain[1] + (min - domain[0]);
domain[0] = min; domain[0] = min;
...@@ -5522,12 +5521,18 @@ ...@@ -5522,12 +5521,18 @@
return [extent[0], Math.max($$.getMaxDataCount() / extent[1], extent[1])]; return [extent[0], Math.max($$.getMaxDataCount() / extent[1], extent[1])];
}; };
$$.zoom.updateScaleExtent = function () { $$.zoom.updateScaleExtent = function () {
var ratio = diffDomain($$.x.orgDomain()) / diffDomain($$.orgXDomain), var ratio = diffDomain($$.x.orgDomain()) / diffDomain($$.getZoomDomain()),
extent = this.orgScaleExtent(); extent = this.orgScaleExtent();
this.scaleExtent([extent[0] * ratio, extent[1] * ratio]); this.scaleExtent([extent[0] * ratio, extent[1] * ratio]);
return this; return this;
}; };
}; };
c3_chart_internal_fn.getZoomDomain = function () {
var $$ = this, config = $$.config, d3 = $$.d3,
min = d3.min([$$.orgXDomain[0], config.zoom_x_min]),
max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);
return [min, max];
};
c3_chart_internal_fn.updateZoom = function () { c3_chart_internal_fn.updateZoom = function () {
var $$ = this, z = $$.config.zoom_enabled ? $$.zoom : function () {}; var $$ = this, z = $$.config.zoom_enabled ? $$.zoom : function () {};
$$.main.select('.' + CLASS.zoomRect).call(z).on("dblclick.zoom", null); $$.main.select('.' + CLASS.zoomRect).call(z).on("dblclick.zoom", null);
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -221,9 +221,8 @@ c3_chart_internal_fn.updateXDomain = function (targets, withUpdateXDomain, withU ...@@ -221,9 +221,8 @@ c3_chart_internal_fn.updateXDomain = function (targets, withUpdateXDomain, withU
return $$.x.domain(); return $$.x.domain();
}; };
c3_chart_internal_fn.trimXDomain = function (domain) { c3_chart_internal_fn.trimXDomain = function (domain) {
var $$ = this, config = $$.config, d3 = $$.d3; var zoomDomain = this.getZoomDomain(),
var min = d3.min([$$.orgXDomain[0], config.zoom_x_min]); min = zoomDomain[0], max = zoomDomain[1];
var max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);
if (domain[0] <= min) { if (domain[0] <= min) {
domain[1] = +domain[1] + (min - domain[0]); domain[1] = +domain[1] + (min - domain[0]);
domain[0] = min; domain[0] = min;
......
...@@ -28,12 +28,18 @@ c3_chart_internal_fn.initZoom = function () { ...@@ -28,12 +28,18 @@ c3_chart_internal_fn.initZoom = function () {
return [extent[0], Math.max($$.getMaxDataCount() / extent[1], extent[1])]; return [extent[0], Math.max($$.getMaxDataCount() / extent[1], extent[1])];
}; };
$$.zoom.updateScaleExtent = function () { $$.zoom.updateScaleExtent = function () {
var ratio = diffDomain($$.x.orgDomain()) / diffDomain($$.orgXDomain), var ratio = diffDomain($$.x.orgDomain()) / diffDomain($$.getZoomDomain()),
extent = this.orgScaleExtent(); extent = this.orgScaleExtent();
this.scaleExtent([extent[0] * ratio, extent[1] * ratio]); this.scaleExtent([extent[0] * ratio, extent[1] * ratio]);
return this; return this;
}; };
}; };
c3_chart_internal_fn.getZoomDomain = function () {
var $$ = this, config = $$.config, d3 = $$.d3,
min = d3.min([$$.orgXDomain[0], config.zoom_x_min]),
max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);
return [min, max];
};
c3_chart_internal_fn.updateZoom = function () { c3_chart_internal_fn.updateZoom = function () {
var $$ = this, z = $$.config.zoom_enabled ? $$.zoom : function () {}; var $$ = this, z = $$.config.zoom_enabled ? $$.zoom : function () {};
$$.main.select('.' + CLASS.zoomRect).call(z).on("dblclick.zoom", null); $$.main.select('.' + CLASS.zoomRect).call(z).on("dblclick.zoom", null);
......
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