Skip to content

Commit 98543e7

Browse files
authored
Minor optimization for _mouseUpHandler (#236)
1 parent 6d7164c commit 98543e7

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

src/plugin.js

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,6 @@ var zoomPlugin = {
417417

418418
node.removeEventListener('mousemove', chartInstance.$zoom._mouseMoveHandler);
419419

420-
var chartArea = chartInstance.chartArea;
421420
var beginPoint = chartInstance.$zoom._dragZoomStart;
422421

423422
var offsetX = beginPoint.target.getBoundingClientRect().left;
@@ -429,25 +428,30 @@ var zoomPlugin = {
429428
var endY = Math.max(beginPoint.clientY, event.clientY) - offsetY;
430429

431430
var dragDistanceX = endX - startX;
431+
var dragDistanceY = endY - startY;
432+
433+
// Remove drag start and end before chart update to stop drawing selected area
434+
chartInstance.$zoom._dragZoomStart = null;
435+
chartInstance.$zoom._dragZoomEnd = null;
436+
437+
if (dragDistanceX <= 0 && dragDistanceY <= 0) {
438+
return;
439+
}
440+
441+
var chartArea = chartInstance.chartArea;
442+
432443
var chartDistanceX = chartArea.right - chartArea.left;
433444
var xEnabled = directionEnabled(chartInstance.$zoom._options.zoom.mode, 'x');
434445
var zoomX = xEnabled && dragDistanceX ? 1 + ((chartDistanceX - dragDistanceX) / chartDistanceX) : 1;
435446

436-
var dragDistanceY = endY - startY;
437447
var chartDistanceY = chartArea.bottom - chartArea.top;
438448
var yEnabled = directionEnabled(chartInstance.$zoom._options.zoom.mode, 'y');
439449
var zoomY = yEnabled && dragDistanceY ? 1 + ((chartDistanceY - dragDistanceY) / chartDistanceY) : 1;
440450

441-
// Remove drag start and end before chart update to stop drawing selected area
442-
chartInstance.$zoom._dragZoomStart = null;
443-
chartInstance.$zoom._dragZoomEnd = null;
444-
445-
if (dragDistanceX > 0 || dragDistanceY > 0) {
446-
doZoom(chartInstance, zoomX, zoomY, {
447-
x: (startX - chartArea.left) / (1 - dragDistanceX / chartDistanceX) + chartArea.left,
448-
y: (startY - chartArea.top) / (1 - dragDistanceY / chartDistanceY) + chartArea.top
449-
});
450-
}
451+
doZoom(chartInstance, zoomX, zoomY, {
452+
x: (startX - chartArea.left) / (1 - dragDistanceX / chartDistanceX) + chartArea.left,
453+
y: (startY - chartArea.top) / (1 - dragDistanceY / chartDistanceY) + chartArea.top
454+
});
451455
};
452456
node.ownerDocument.addEventListener('mouseup', chartInstance.$zoom._mouseUpHandler);
453457

0 commit comments

Comments
 (0)