X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=tests%2Finteraction.js;h=6ce65a8553e9e5999c5c13295852b502acd613f0;hb=3b196163552cb25ae554ac48a20fe3131bee5dd1;hp=f4925da2315871e61c6cfe535a0e1472e2fdfeed;hpb=a13309c00be29d09bdd4e9d9fc7664a2466a6a01;p=dygraphs.git diff --git a/tests/interaction.js b/tests/interaction.js index f4925da..6ce65a8 100644 --- a/tests/interaction.js +++ b/tests/interaction.js @@ -1,6 +1,7 @@ - +// Code for a variety of interaction models. Used in interaction.html, but split out from +// that file so they can be tested in isolation. +// function downV3(event, g, context) { - resetGraphScroll(); context.initializeMouseDown(event, g, context); if (event.altKey || event.shiftKey) { Dygraph.startZoom(event, g, context); @@ -10,7 +11,6 @@ function downV3(event, g, context) { } function moveV3(event, g, context) { - resetGraphScroll(); if (context.isPanning) { Dygraph.movePan(event, g, context); } else if (context.isZooming) { @@ -62,6 +62,12 @@ function offsetToPercentage(g, offsetX, offsetY) { function dblClickV3(event, g, context) { // Reducing by 20% makes it 80% the original size, which means // to restore to original size it must grow by 25% + + if (!(event.offsetX && event.offsetY)){ + event.offsetX = event.layerX - event.target.offsetLeft; + event.offsetY = event.layerY - event.target.offsetTop; + } + var percentages = offsetToPercentage(g, event.offsetX, event.offsetY); var xPct = percentages[0]; var yPct = percentages[1]; @@ -73,20 +79,16 @@ function dblClickV3(event, g, context) { } } -var scrollTimeMillis = 0; +var lastClickedGraph = null; -function suspendGraphScroll() { - scrollTimeMillis = new Date().getTime(); -} - -function resetGraphscroll() { - scrollTimeMillis = 0; +function clickV3(event, g, context) { + lastClickedGraph = g; + event.preventDefault(); + event.stopPropagation(); } function scrollV3(event, g, context) { - var millis = new Date().getTime(); - if (millis - scrollTimeMillis < 250) { - suspendGraphScroll(); + if (lastClickedGraph != g) { return; } var normal = event.detail ? event.detail * -1 : event.wheelDelta / 40; @@ -94,12 +96,18 @@ function scrollV3(event, g, context) { // that verbatim, it would be a 7.5%. var percentage = normal / 50; + if (!(event.offsetX && event.offsetY)){ + event.offsetX = event.layerX - event.target.offsetLeft; + event.offsetY = event.layerY - event.target.offsetTop; + } + var percentages = offsetToPercentage(g, event.offsetX, event.offsetY); var xPct = percentages[0]; var yPct = percentages[1]; zoom(g, percentage, xPct, yPct); - Dygraph.cancelEvent(event); + event.preventDefault(); + event.stopPropagation(); } // Adjusts [x, y] toward each other by zoomInPercentage% @@ -143,8 +151,9 @@ function moveV4(event, g, context) { var RANGE = 7; if (v4Active) { - var canvasx = Dygraph.pageX(event) - Dygraph.findPosX(g.graphDiv); - var canvasy = Dygraph.pageY(event) - Dygraph.findPosY(g.graphDiv); + var graphPos = Dygraph.findPos(g.graphDiv); + var canvasx = Dygraph.pageX(event) - graphPos.x; + var canvasy = Dygraph.pageY(event) - graphPos.y; var rows = g.numRows(); // Row layout: @@ -189,7 +198,7 @@ function upV4(event, g, context) { } function dblClickV4(event, g, context) { - restorePositioning(g4); + restorePositioning(g); } function drawV4(x, y) {