X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=plugins%2Frange-selector.js;h=089e64aabd6ce1ec6dfd13d262395c96ed9f26a5;hb=94647da23ed251ba0f1da8d155d2552680a4e9cf;hp=08d04acb049478acf9acdccaeb68d35101d153ef;hpb=6835cab8d5aff48e96362414e5bd06c7db9418f0;p=dygraphs.git diff --git a/plugins/range-selector.js b/plugins/range-selector.js index 08d04ac..089e64a 100644 --- a/plugins/range-selector.js +++ b/plugins/range-selector.js @@ -176,7 +176,11 @@ rangeSelector.prototype.resize_ = function() { } var plotArea = this.dygraph_.layout_.getPlotArea(); - var xAxisLabelHeight = this.getOption_('xAxisHeight') || (this.getOption_('axisLabelFontSize') + 2 * this.getOption_('axisTickSize')); + + var xAxisLabelHeight = 0; + if(this.getOption_('drawXAxis')){ + xAxisLabelHeight = this.getOption_('xAxisHeight') || (this.getOption_('axisLabelFontSize') + 2 * this.getOption_('axisTickSize')); + } this.canvasRect_ = { x: plotArea.x, y: plotArea.y + plotArea.h + xAxisLabelHeight + 4, @@ -265,7 +269,7 @@ rangeSelector.prototype.createZoomHandles_ = function() { rangeSelector.prototype.initInteraction_ = function() { var self = this; var topElem = this.isIE_ ? document : window; - var pageXLast = 0; + var clientXLast = 0; var handle = null; var isZooming = false; var isPanning = false; @@ -278,7 +282,7 @@ rangeSelector.prototype.initInteraction_ = function() { // functions, defined below. Defining them this way (rather than with // "function foo() {...}" makes JSHint happy. var toXDataWindow, onZoomStart, onZoom, onZoomEnd, doZoom, isMouseInPanZone, - onPanStart, onPan, onPanEnd, doPan, onCanvasHover, getCursorPageX; + onPanStart, onPan, onPanEnd, doPan, onCanvasHover; // Touch event functions var onZoomHandleTouchEvent, onCanvasTouchEvent, addTouchEvents; @@ -291,24 +295,13 @@ rangeSelector.prototype.initInteraction_ = function() { return [xDataMin, xDataMax]; }; - getCursorPageX = function(e) { - if (e.pageX !== null) { - return e.pageX; - } else { - // Taken from jQuery. - var target = e.target || e.srcElement || document; - var eventDoc = target.ownerDocument || target.document || document; - var doc = eventDoc.documentElement, body = eventDoc.body; - return e.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); - } - }; - onZoomStart = function(e) { Dygraph.cancelEvent(e); isZooming = true; - pageXLast = getCursorPageX(e); + clientXLast = e.clientX; handle = e.target ? e.target : e.srcElement; if (e.type === 'mousedown' || e.type === 'dragstart') { + // These events are removed manually. Dygraph.addEvent(topElem, 'mousemove', onZoom); Dygraph.addEvent(topElem, 'mouseup', onZoomEnd); } @@ -323,22 +316,21 @@ rangeSelector.prototype.initInteraction_ = function() { } Dygraph.cancelEvent(e); - var pageX = getCursorPageX(e); - var delX = pageX - pageXLast; + var delX = e.clientX - clientXLast; if (Math.abs(delX) < 4) { return true; } - pageXLast = pageX; + clientXLast = e.clientX; // Move handle. var zoomHandleStatus = self.getZoomHandleStatus_(); var newPos; if (handle == self.leftZoomHandle_) { - newPos = pageX; + newPos = zoomHandleStatus.leftHandlePos + delX; newPos = Math.min(newPos, zoomHandleStatus.rightHandlePos - handle.width - 3); newPos = Math.max(newPos, self.canvasRect_.x); } else { - newPos = pageX; + newPos = zoomHandleStatus.rightHandlePos + delX; newPos = Math.min(newPos, self.canvasRect_.x + self.canvasRect_.w); newPos = Math.max(newPos, zoomHandleStatus.leftHandlePos + handle.width + 3); } @@ -401,8 +393,9 @@ rangeSelector.prototype.initInteraction_ = function() { if (!isPanning && isMouseInPanZone(e) && self.getZoomHandleStatus_().isZoomed) { Dygraph.cancelEvent(e); isPanning = true; - pageXLast = getCursorPageX(e); + clientXLast = e.clientX; if (e.type === 'mousedown') { + // These events are removed manually. Dygraph.addEvent(topElem, 'mousemove', onPan); Dygraph.addEvent(topElem, 'mouseup', onPanEnd); } @@ -417,12 +410,11 @@ rangeSelector.prototype.initInteraction_ = function() { } Dygraph.cancelEvent(e); - var pageX = getCursorPageX(e); - var delX = pageX - pageXLast; + var delX = e.clientX - clientXLast; if (Math.abs(delX) < 4) { return true; } - pageXLast = pageX; + clientXLast = e.clientX; // Move range view var zoomHandleStatus = self.getZoomHandleStatus_(); @@ -516,7 +508,7 @@ rangeSelector.prototype.initInteraction_ = function() { addTouchEvents = function(elem, fn) { var types = ['touchstart', 'touchend', 'touchmove', 'touchcancel']; for (var i = 0; i < types.length; i++) { - Dygraph.addEvent(elem, types[i], fn); + self.dygraph_.addAndTrackEvent(elem, types[i], fn); } }; @@ -524,14 +516,14 @@ rangeSelector.prototype.initInteraction_ = function() { this.setDefaultOption_('panEdgeFraction', 0.0001); var dragStartEvent = window.opera ? 'mousedown' : 'dragstart'; - Dygraph.addEvent(this.leftZoomHandle_, dragStartEvent, onZoomStart); - Dygraph.addEvent(this.rightZoomHandle_, dragStartEvent, onZoomStart); + this.dygraph_.addAndTrackEvent(this.leftZoomHandle_, dragStartEvent, onZoomStart); + this.dygraph_.addAndTrackEvent(this.rightZoomHandle_, dragStartEvent, onZoomStart); if (this.isUsingExcanvas_) { - Dygraph.addEvent(this.iePanOverlay_, 'mousedown', onPanStart); + this.dygraph_.addAndTrackEvent(this.iePanOverlay_, 'mousedown', onPanStart); } else { - Dygraph.addEvent(this.fgcanvas_, 'mousedown', onPanStart); - Dygraph.addEvent(this.fgcanvas_, 'mousemove', onCanvasHover); + this.dygraph_.addAndTrackEvent(this.fgcanvas_, 'mousedown', onPanStart); + this.dygraph_.addAndTrackEvent(this.fgcanvas_, 'mousemove', onCanvasHover); } // Touch events