Skip to content

Commit 6d7164c

Browse files
authored
Fix calculation of dragDistance for click (#232)
1 parent 82ccb44 commit 6d7164c

File tree

1 file changed

+10
-18
lines changed

1 file changed

+10
-18
lines changed

src/plugin.js

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -418,33 +418,25 @@ var zoomPlugin = {
418418
node.removeEventListener('mousemove', chartInstance.$zoom._mouseMoveHandler);
419419

420420
var chartArea = chartInstance.chartArea;
421-
var xAxis = getXAxis(chartInstance);
422-
var yAxis = getYAxis(chartInstance);
423421
var beginPoint = chartInstance.$zoom._dragZoomStart;
424-
var startX = xAxis.left;
425-
var endX = xAxis.right;
426-
var startY = yAxis.top;
427-
var endY = yAxis.bottom;
428422

429-
if (directionEnabled(chartInstance.$zoom._options.zoom.mode, 'x')) {
430-
var offsetX = beginPoint.target.getBoundingClientRect().left;
431-
startX = Math.min(beginPoint.clientX, event.clientX) - offsetX;
432-
endX = Math.max(beginPoint.clientX, event.clientX) - offsetX;
433-
}
423+
var offsetX = beginPoint.target.getBoundingClientRect().left;
424+
var startX = Math.min(beginPoint.clientX, event.clientX) - offsetX;
425+
var endX = Math.max(beginPoint.clientX, event.clientX) - offsetX;
434426

435-
if (directionEnabled(chartInstance.$zoom._options.zoom.mode, 'y')) {
436-
var offsetY = beginPoint.target.getBoundingClientRect().top;
437-
startY = Math.min(beginPoint.clientY, event.clientY) - offsetY;
438-
endY = Math.max(beginPoint.clientY, event.clientY) - offsetY;
439-
}
427+
var offsetY = beginPoint.target.getBoundingClientRect().top;
428+
var startY = Math.min(beginPoint.clientY, event.clientY) - offsetY;
429+
var endY = Math.max(beginPoint.clientY, event.clientY) - offsetY;
440430

441431
var dragDistanceX = endX - startX;
442432
var chartDistanceX = chartArea.right - chartArea.left;
443-
var zoomX = 1 + ((chartDistanceX - dragDistanceX) / chartDistanceX);
433+
var xEnabled = directionEnabled(chartInstance.$zoom._options.zoom.mode, 'x');
434+
var zoomX = xEnabled && dragDistanceX ? 1 + ((chartDistanceX - dragDistanceX) / chartDistanceX) : 1;
444435

445436
var dragDistanceY = endY - startY;
446437
var chartDistanceY = chartArea.bottom - chartArea.top;
447-
var zoomY = 1 + ((chartDistanceY - dragDistanceY) / chartDistanceY);
438+
var yEnabled = directionEnabled(chartInstance.$zoom._options.zoom.mode, 'y');
439+
var zoomY = yEnabled && dragDistanceY ? 1 + ((chartDistanceY - dragDistanceY) / chartDistanceY) : 1;
448440

449441
// Remove drag start and end before chart update to stop drawing selected area
450442
chartInstance.$zoom._dragZoomStart = null;

0 commit comments

Comments
 (0)