Merge pull request #657 from kbaggott/master
authorDan Vanderkam <danvdk@gmail.com>
Thu, 24 Sep 2015 17:37:54 +0000 (13:37 -0400)
committerDan Vanderkam <danvdk@gmail.com>
Thu, 24 Sep 2015 17:37:54 +0000 (13:37 -0400)
Fixing issue with xRangePad being ignored on unzoom

auto_tests/tests/interaction_model.js
src/dygraph.js

index 834613c..3d6e3d0 100644 (file)
@@ -457,4 +457,49 @@ describe('animated zooms', function() {
 
 });
 
+//bulk copied from "testCorrectAxisValueRangeAfterUnzoom"
+//tests if the xRangePad is taken into account after unzoom.
+it('testCorrectAxisPaddingAfterUnzoom', function() {
+  var g = new Dygraph(document.getElementById("graph"),
+      data2, {
+        valueRange: [1, 50],
+        dateWindow: [1, 9],
+        xRangePad: 10,
+        animatedZooms:false
+      });
+
+  var extremes = g.xAxisExtremes();
+  
+  // Zoom x axis
+  DygraphOps.dispatchMouseDown_Point(g, 100, 100);
+  DygraphOps.dispatchMouseMove_Point(g, 130, 100);
+  DygraphOps.dispatchMouseUp_Point(g, 130, 100);
+
+  // Zoom y axis
+  DygraphOps.dispatchMouseDown_Point(g, 100, 100);
+  DygraphOps.dispatchMouseMove_Point(g, 100, 130);
+  DygraphOps.dispatchMouseUp_Point(g, 100, 130);
+  var currentYAxisRange = g.yAxisRange();
+  var currentXAxisRange = g.xAxisRange();
+  
+  //check that the range for the axis has changed
+  assert.notEqual(1, currentXAxisRange[0]);
+  assert.notEqual(10, currentXAxisRange[1]);
+  assert.notEqual(1, currentYAxisRange[0]);
+  assert.notEqual(50, currentYAxisRange[1]);
+  
+  // unzoom by doubleclick.  This is really the order in which a browser
+  // generates events, and we depend on it.
+  DygraphOps.dispatchMouseDown_Point(g, 10, 10);
+  DygraphOps.dispatchMouseUp_Point(g, 10, 10);
+  DygraphOps.dispatchMouseDown_Point(g, 10, 10);
+  DygraphOps.dispatchMouseUp_Point(g, 10, 10);
+  DygraphOps.dispatchDoubleClick(g, null);
+  
+  // check if range for x-axis was reset to original value 
+  var newXAxisRange = g.xAxisRange();
+  assert.equal(extremes[0], newXAxisRange[0]);
+  assert.equal(extremes[1], newXAxisRange[1]);
+});
+
 });
index 0b42d86..a28e231 100644 (file)
@@ -1656,10 +1656,11 @@ Dygraph.prototype.resetZoom = function() {
     this.zoomed_x_ = false;
     this.zoomed_y_ = false;
 
-    var minDate = this.rawData_[0][0];
-    var maxDate = this.rawData_[this.rawData_.length - 1][0];
+    //calculate extremes to avoid lack of padding on reset.
+    var extremes = this.xAxisExtremes();
+    var minDate = extremes[0],
+        maxDate = extremes[1];
 
-    // With only one frame, don't bother calculating extreme ranges.
     // TODO(danvk): merge this block w/ the code below.
     if (!this.getBooleanOption("animatedZooms")) {
       this.dateWindow_ = null;