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);
}
}
};
- 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';
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++) {