X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph-range-selector.js;h=9ae04d0270c2f0c5cff74fdeaa49464ba6c29bb9;hb=966ac3fa0de18a7b5ddefe4aba6938d8358ea0cf;hp=18eeee03f29ee4d7e931d1a68a692bd82e9573a7;hpb=758a629f806fa73483f730fb343013acd0ace078;p=dygraphs.git diff --git a/dygraph-range-selector.js b/dygraph-range-selector.js index 18eeee0..9ae04d0 100644 --- a/dygraph-range-selector.js +++ b/dygraph-range-selector.js @@ -255,7 +255,12 @@ DygraphRangeSelector.prototype.initInteraction_ = function() { return e.srcElement == self.iePanOverlay_; } else { // Getting clientX directly from the event is not accurate enough :( - var clientX = self.canvasRect_.x + (e.layerX !== undefined ? e.layerX : e.offsetX); + var clientX; + if (e.offsetX != undefined) { + clientX = self.canvasRect_.x + e.offsetX; + } else { + clientX = e.clientX; + } var zoomHandleStatus = self.getZoomHandleStatus_(); return (clientX > zoomHandleStatus.leftHandlePos && clientX < zoomHandleStatus.rightHandlePos); } @@ -342,24 +347,8 @@ DygraphRangeSelector.prototype.initInteraction_ = function() { } }; - var interactionModel = { - 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); - } - } - }; - - this.dygraph_.attrs_.interactionModel = interactionModel; + this.dygraph_.attrs_.interactionModel = + Dygraph.Interaction.dragIsPanInteractionModel; this.dygraph_.attrs_.panEdgeFraction = 0.0001; var dragStartEvent = window.opera ? 'mousedown' : 'dragstart'; @@ -466,17 +455,24 @@ DygraphRangeSelector.prototype.computeCombinedSeriesAndLimits_ = function() { var sum; var count; var yVal, y; - var mutipleValues = typeof data[0][1] != 'number'; + var mutipleValues; var i, j, k; - if (mutipleValues) { - sum = []; - count = []; - for (k = 0; k < data[0][1].length; k++) { - sum.push(0); - count.push(0); + // Find out if data has multiple values per datapoint. + // Go to first data point that actually has values (see http://code.google.com/p/dygraphs/issues/detail?id=246) + for (i = 0; i < data.length; i++) { + if (data[i].length > 1 && data[i][1] != null) { + mutipleValues = typeof data[i][1] != 'number'; + if (mutipleValues) { + sum = []; + count = []; + for (k = 0; k < data[i][1].length; k++) { + sum.push(0); + count.push(0); + } + } + break; } - mutipleValues = true; } for (i = 0; i < data.length; i++) {