From 57baab0329f90475370bce7b76a6720a7f73e4f1 Mon Sep 17 00:00:00 2001
From: Neal Nelson <neal@makalumedia.com>
Date: Thu, 18 Nov 2010 11:12:40 +0100
Subject: [PATCH] Changed zoom flags to isZoomed function.

---
 dygraph.js      | 24 ++++++++++++++----------
 tests/zoom.html |  6 +++---
 2 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/dygraph.js b/dygraph.js
index 4b52555..f63fbc7 100644
--- a/dygraph.js
+++ b/dygraph.js
@@ -193,9 +193,8 @@ Dygraph.prototype.__init__ = function(div, file, attrs) {
   this.annotations_ = [];
 
   // Zoomed indicators - These indicate when the graph has been zoomed and on what axis.
-  this.zoomed = false;
-  this.zoomedX = false;
-  this.zoomedY = false;
+  this.zoomed_x_ = false;
+  this.zoomed_y_ = false;
 
   // Clear the div. This ensure that, if multiple dygraphs are passed the same
   // div, then only one will be drawn.
@@ -259,6 +258,14 @@ Dygraph.prototype.__init__ = function(div, file, attrs) {
   this.start_();
 };
 
+// axis is an optional parameter. Can be set to 'x' or 'y'.
+Dygraph.prototype.isZoomed = function(axis) {
+  if (axis == null) return this.zoomed_x_ || this.zoomed_y_;
+  if (axis == 'x') return this.zoomed_x_;
+  if (axis == 'y') return this.zoomed_y_;
+  throw "axis parameter to Dygraph.isZoomed must be missing, 'x' or 'y'.";
+};
+
 Dygraph.prototype.attr_ = function(name, seriesName) {
   if (seriesName &&
       typeof(this.user_attrs_[seriesName]) != 'undefined' &&
@@ -1089,8 +1096,7 @@ Dygraph.prototype.doZoomX_ = function(lowX, highX) {
  */
 Dygraph.prototype.doZoomXDates_ = function(minDate, maxDate) {
   this.dateWindow_ = [minDate, maxDate];
-  this.zoomed = true;
-  this.zoomedX = true;
+  this.zoomed_x_ = true;
   this.drawGraph_();
   if (this.attr_("zoomCallback")) {
     var yRange = this.yAxisRange();
@@ -1119,8 +1125,7 @@ Dygraph.prototype.doZoomY_ = function(lowY, highY) {
     valueRanges.push([low[1], hi[1]]);
   }
 
-  this.zoomed = true;
-  this.zoomedY = true;
+  this.zoomed_y_ = true;
   this.drawGraph_();
   if (this.attr_("zoomCallback")) {
     var xRange = this.xAxisRange();
@@ -1152,9 +1157,8 @@ Dygraph.prototype.doUnzoom_ = function() {
   if (dirty) {
     // Putting the drawing operation before the callback because it resets
     // yAxisRange.
-    this.zoomed = false;
-    this.zoomedX = false;
-    this.zoomedY = false;
+    this.zoomed_x_ = false;
+    this.zoomed_y_ = false;
     this.drawGraph_();
     if (this.attr_("zoomCallback")) {
       var minDate = this.rawData_[0][0];
diff --git a/tests/zoom.html b/tests/zoom.html
index 43ea545..d428d19 100644
--- a/tests/zoom.html
+++ b/tests/zoom.html
@@ -50,9 +50,9 @@
                 showDimensions(a,b,c,d);
               },
               drawCallback: function(me, initial) {
-                document.getElementById("zoomed").innerHTML = me.zoomed ? "True" : "False";
-                document.getElementById("zoomedX").innerHTML = me.zoomedX ? "True" : "False";
-                document.getElementById("zoomedY").innerHTML = me.zoomedY ? "True" : "False";
+                document.getElementById("zoomed").innerHTML = "" + me.isZoomed();
+                document.getElementById("zoomedX").innerHTML = "" + me.isZoomed("x");
+                document.getElementById("zoomedY").innerHTML = "" + me.isZoomed("y");
               }
             }
           );
-- 
2.7.4