X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph-interaction-model.js;h=a3de6f76d96c8fe609bcbd37d57b3aff4484f906;hb=38dbac3e0b3c24486d3f548ae63dabd6e1d73bc3;hp=401876937e76bfc985c3e9d41f83501f46f5122a;hpb=c0f54d4f7444bea88d6c26020c566b42b3fe45e5;p=dygraphs.git diff --git a/dygraph-interaction-model.js b/dygraph-interaction-model.js index 4018769..a3de6f7 100644 --- a/dygraph-interaction-model.js +++ b/dygraph-interaction-model.js @@ -10,9 +10,10 @@ * @author Robert Konigsberg (konigsberg@google.com) */ +/*jshint globalstrict: true */ +/*global Dygraph:false */ "use strict"; - /** * A collection of functions to facilitate build custom interaction models. * @class @@ -33,6 +34,7 @@ Dygraph.Interaction = {}; * dragStartX/dragStartY/etc. properties). This function modifies the context. */ Dygraph.Interaction.startPan = function(event, g, context) { + var i, axis; context.isPanning = true; var xRange = g.xAxisRange(); context.dateRange = xRange[1] - xRange[0]; @@ -53,8 +55,8 @@ Dygraph.Interaction.startPan = function(event, g, context) { var boundedValues = []; var maxYPixelsToDraw = g.height_ * g.attr_("panEdgeFraction"); - for (var i = 0; i < g.axes_.length; i++) { - var axis = g.axes_[i]; + for (i = 0; i < g.axes_.length; i++) { + axis = g.axes_[i]; var yExtremes = axis.extremeRange; var boundedTopY = g.toDomYCoord(yExtremes[0], i) + maxYPixelsToDraw; @@ -71,8 +73,8 @@ Dygraph.Interaction.startPan = function(event, g, context) { // Record the range of each y-axis at the start of the drag. // If any axis has a valueRange or valueWindow, then we want a 2D pan. context.is2DPan = false; - for (var i = 0; i < g.axes_.length; i++) { - var axis = g.axes_[i]; + for (i = 0; i < g.axes_.length; i++) { + axis = g.axes_[i]; var yRange = g.yAxisRange(i); // TODO(konigsberg): These values should be in |context|. // In log scale, initialTopValue, dragValueRange and unitsPerPixel are log scale. @@ -180,7 +182,7 @@ Dygraph.Interaction.endPan = function(event, g, context) { var regionHeight = Math.abs(context.dragEndY - context.dragStartY); if (regionWidth < 2 && regionHeight < 2 && - g.lastx_ != undefined && g.lastx_ != -1) { + g.lastx_ !== undefined && g.lastx_ != -1) { Dygraph.Interaction.treatMouseOpAsClick(g, event, context); } @@ -314,7 +316,7 @@ Dygraph.Interaction.endZoom = function(event, g, context) { var regionHeight = Math.abs(context.dragEndY - context.dragStartY); if (regionWidth < 2 && regionHeight < 2 && - g.lastx_ != undefined && g.lastx_ != -1) { + g.lastx_ !== undefined && g.lastx_ != -1) { Dygraph.Interaction.treatMouseOpAsClick(g, event, context); } @@ -411,8 +413,26 @@ Dygraph.Interaction.nonInteractiveModel_ = { var regionHeight = Math.abs(context.dragEndY - context.dragStartY); if (regionWidth < 2 && regionHeight < 2 && - g.lastx_ != undefined && g.lastx_ != -1) { + g.lastx_ !== undefined && g.lastx_ != -1) { Dygraph.Interaction.treatMouseOpAsClick(g, event, context); } } }; + +// Default interaction model when using the range selector. +Dygraph.Interaction.dragIsPanInteractionModel = { + mousedown: function(event, g, context) { + context.initializeMouseDown(event, g, context); + Dygraph.startPan(event, g, context); + }, + mousemove: function(event, g, context) { + if (context.isPanning) { + Dygraph.movePan(event, g, context); + } + }, + mouseup: function(event, g, context) { + if (context.isPanning) { + Dygraph.endPan(event, g, context); + } + } +};