-
+// 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);
}
function moveV3(event, g, context) {
- resetGraphScroll();
if (context.isPanning) {
Dygraph.movePan(event, g, context);
} else if (context.isZooming) {
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];
}
}
-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;
// 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%
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:
}
function dblClickV4(event, g, context) {
- restorePositioning(g4);
+ restorePositioning(g);
}
function drawV4(x, y) {