update status div
[dygraphs.git] / dygraph-canvas.js
index 26dd646..a848001 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();
 };
 
@@ -38,6 +38,7 @@ DygraphLayout.prototype.evaluate = function() {
 DygraphLayout.prototype._evaluateLimits = function() {
   this.minxval = this.maxxval = null;
   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;
@@ -58,6 +59,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 +120,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 +150,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 +183,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 +326,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 +340,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 +443,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
@@ -486,7 +485,7 @@ DygraphCanvasRenderer.prototype._renderLineChart = function() {
         if (point.name == setName) {
           if (!point.y || isNaN(point.y)) {
             prevX = -1;
-            return;
+            continue;
           }
           var newYs = [ point.y - point.errorPlus * yscale,
                         point.y + point.errorMinus * yscale ];
@@ -548,7 +547,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();
           }
         }