You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by su...@apache.org on 2018/05/30 16:13:51 UTC

[incubator-echarts] 01/02: tweak scroll move.

This is an automated email from the ASF dual-hosted git repository.

sushuang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-echarts.git

commit ac0ba7d0a32355184716598f94eb40f9e49f84c7
Author: sushuang <su...@gmail.com>
AuthorDate: Tue May 29 23:30:47 2018 +0800

    tweak scroll move.
---
 src/component/helper/RoamController.js | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/src/component/helper/RoamController.js b/src/component/helper/RoamController.js
index 0c994ef..fcee269 100644
--- a/src/component/helper/RoamController.js
+++ b/src/component/helper/RoamController.js
@@ -185,6 +185,8 @@ function mousewheel(e) {
     var shouldMove = checkKeyBinding(this, 'moveOnMouseWheel', e);
     var wheelDelta = e.wheelDelta;
     var absWheelDeltaDelta = Math.abs(wheelDelta);
+    var originX = e.offsetX;
+    var originY = e.offsetY;
 
     // wheelDelta maybe -0 in chrome mac.
     if (wheelDelta === 0 || (!shouldZoom && !shouldMove)) {
@@ -203,16 +205,19 @@ function mousewheel(e) {
         // wheelDelta of mouse wheel is bigger than touch pad.
         var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1;
         var scale = wheelDelta > 0 ? factor : 1 / factor;
-        zoom.call(this, e, scale, e.offsetX, e.offsetY);
+        checkPointerAndTrigger(
+            'zoom', this, e, {scale: scale, originX: originX, originY: originY}
+        );
     }
 
     if (shouldMove) {
         // FIXME: Should do more test in different environment.
         var absDelta = Math.abs(wheelDelta);
         // wheelDelta of mouse wheel is bigger than touch pad.
-        var scrollDelta = absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05;
-        var sign = wheelDelta > 0 ? 1 : -1;
-        this.trigger('scrollMove', {scrollDelta: sign * scrollDelta});
+        var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05);
+        checkPointerAndTrigger(
+            'scrollMove', this, e, {scrollDelta: scrollDelta, originX: originX, originY: originY}
+        );
     }
 }
 
@@ -221,17 +226,21 @@ function pinch(e) {
         return;
     }
     var scale = e.pinchScale > 1 ? 1.1 : 1 / 1.1;
-    zoom.call(this, e, scale, e.pinchX, e.pinchY);
+    checkPointerAndTrigger(
+        'zoom', this, e, {scale: scale, originX: e.pinchX, originY: e.pinchY}
+    );
 }
 
-function zoom(e, scale, originX, originY) {
-    if (this.pointerChecker && this.pointerChecker(e, originX, originY)) {
+function checkPointerAndTrigger(eventName, controller, e, contollerEvent) {
+    if (controller.pointerChecker
+        && controller.pointerChecker(e, contollerEvent.originX, contollerEvent.originY)
+    ) {
         // When mouse is out of roamController rect,
         // default befavoius should not be be disabled, otherwise
         // page sliding is disabled, contrary to expectation.
         eventTool.stop(e.event);
 
-        this.trigger('zoom', {scale: scale, originX: originX, originY: originY});
+        controller.trigger(eventName, contollerEvent);
     }
 }
 

-- 
To stop receiving notification emails like this one, please contact
sushuang@apache.org.

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org