un-deprecate minimal example in README file
[dygraphs.git] / dygraph-canvas.js
index 45d27af..c3a8296 100644 (file)
@@ -17,7 +17,7 @@
 DygraphLayout = function(dygraph, options) {
   this.dygraph_ = dygraph;
   this.options = {};  // TODO(danvk): remove, use attr_ instead.
-  MochiKit.Base.update(this.options, options ? options : {});
+  Dygraph.update(this.options, options ? options : {});
   this.datasets = new Array();
 };
 
@@ -37,13 +37,19 @@ DygraphLayout.prototype.evaluate = function() {
 
 DygraphLayout.prototype._evaluateLimits = function() {
   this.minxval = this.maxxval = null;
-  for (var name in this.datasets) {
-    var series = this.datasets[name];
-    var x1 = series[0][0];
-    if (!this.minxval || x1 < this.minxval) this.minxval = x1;
-
-    var x2 = series[series.length - 1][0];
-    if (!this.maxxval || x2 > this.maxxval) this.maxxval = x2;
+  if (this.options.dateWindow) {
+    this.minxval = this.options.dateWindow[0];
+    this.maxxval = this.options.dateWindow[1];
+  } else {
+    for (var name in this.datasets) {
+      if (!this.datasets.hasOwnProperty(name)) continue;
+      var series = this.datasets[name];
+      var x1 = series[0][0];
+      if (!this.minxval || x1 < this.minxval) this.minxval = x1;
+
+      var x2 = series[series.length - 1][0];
+      if (!this.maxxval || x2 > this.maxxval) this.maxxval = x2;
+    }
   }
   this.xrange = this.maxxval - this.minxval;
   this.xscale = (this.xrange != 0 ? 1/this.xrange : 1.0);
@@ -58,6 +64,8 @@ DygraphLayout.prototype._evaluateLineCharts = function() {
   // add all the rects
   this.points = new Array();
   for (var setName in this.datasets) {
+    if (!this.datasets.hasOwnProperty(setName)) continue;
+
     var dataset = this.datasets[setName];
     for (var j = 0; j < dataset.length; j++) {
       var item = dataset[j];
@@ -117,6 +125,7 @@ DygraphLayout.prototype.evaluateWithError = function() {
   // Copy over the error terms
   var i = 0; // index in this.points
   for (var setName in this.datasets) {
+    if (!this.datasets.hasOwnProperty(setName)) continue;
     var j = 0;
     var dataset = this.datasets[setName];
     for (var j = 0; j < dataset.length; j++, i++) {
@@ -146,7 +155,7 @@ DygraphLayout.prototype.removeAllDatasets = function() {
  * @param {Object} new_options an associative array of new properties
  */
 DygraphLayout.prototype.updateOptions = function(new_options) {
-  MochiKit.Base.update(this.options, new_options ? new_options : {});
+  Dygraph.update(this.options, new_options ? new_options : {});
 };
 
 // Subclass PlotKit.CanvasRenderer to add:
@@ -179,23 +188,12 @@ DygraphCanvasRenderer = function(dygraph, element, layout, options) {
     "drawXGrid": true,
     "gridLineColor": "rgb(128,128,128)"
   };
-  MochiKit.Base.update(this.options, options);
+  Dygraph.update(this.options, options);
 
   this.layout = layout;
   this.element = element;
   this.container = this.element.parentNode;
 
-  // Stuff relating to Canvas on IE support    
-  this.isIE = (/MSIE/.test(navigator.userAgent) && !window.opera);
-
-  if (this.isIE && !isNil(G_vmlCanvasManager)) {
-      this.IEDelay = 0.5;
-      this.maxTries = 5;
-      this.renderDelay = null;
-      this.clearDelay = null;
-      this.element = G_vmlCanvasManager.initElement(this.element);
-  }
-
   this.height = this.element.height;
   this.width = this.element.width;
 
@@ -333,7 +331,9 @@ DygraphCanvasRenderer.prototype._renderAxis = function() {
   var makeDiv = function(txt) {
     var div = document.createElement("div");
     for (var name in labelStyle) {
-      div.style[name] = labelStyle[name];
+      if (labelStyle.hasOwnProperty(name)) {
+        div.style[name] = labelStyle[name];
+      }
     }
     div.appendChild(document.createTextNode(txt));
     return div;
@@ -345,7 +345,7 @@ DygraphCanvasRenderer.prototype._renderAxis = function() {
   context.lineWidth = this.options.axisLineWidth;
 
   if (this.options.drawYAxis) {
-    if (this.layout.yticks) {
+    if (this.layout.yticks && this.layout.yticks.length > 0) {
       for (var i = 0; i < this.layout.yticks.length; i++) {
         var tick = this.layout.yticks[i];
         if (typeof(tick) == "function") return;
@@ -448,7 +448,11 @@ DygraphCanvasRenderer.prototype._renderLineChart = function() {
   var errorBars = this.layout.options.errorBars;
 
   var setNames = [];
-  for (var name in this.layout.datasets) setNames.push(name);
+  for (var name in this.layout.datasets) {
+    if (this.layout.datasets.hasOwnProperty(name)) {
+      setNames.push(name);
+    }
+  }
   var setCount = setNames.length;
 
   //Update Points
@@ -548,7 +552,8 @@ DygraphCanvasRenderer.prototype._renderLineChart = function() {
           if (drawPoints || isIsolated) {
            ctx.beginPath();
            ctx.fillStyle = color;
-           ctx.arc(point.canvasx, point.canvasy, pointSize, 0, 360, false);
+           ctx.arc(point.canvasx, point.canvasy, pointSize,
+                   0, 2 * Math.PI, false);
            ctx.fill();
           }
         }