From 1d2021b5a18294d549b3fe076bf9f2fa0d152eea Mon Sep 17 00:00:00 2001 From: KyleBaggott Date: Tue, 15 Sep 2015 14:02:02 +0100 Subject: [PATCH] fixing issue with xRangePad being ignored on unzoom, with auto_test. --- auto_tests/tests/interaction_model.js | 45 +++++++++++++++++++++++++++++++++++ src/dygraph.js | 7 +++--- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/auto_tests/tests/interaction_model.js b/auto_tests/tests/interaction_model.js index 834613c..dc7105e 100644 --- a/auto_tests/tests/interaction_model.js +++ b/auto_tests/tests/interaction_model.js @@ -457,4 +457,49 @@ describe('animated zooms', function() { }); +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 y-axis was reset to original value + // TODO check if range for x-axis is correct. + // Currently not possible because dateRange is set to null and extremes are returned + var newXAxisRange = g.xAxisRange(); + assert.equal(extremes[0], newXAxisRange[0]); + assert.equal(extremes[1], newXAxisRange[1]); +}); + }); diff --git a/src/dygraph.js b/src/dygraph.js index 4f3ce77..f9b0169 100644 --- a/src/dygraph.js +++ b/src/dygraph.js @@ -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; -- 2.7.4