Merge branch 'master' of github.com:danvk/dygraphs
authorDan Vanderkam <dan@dygraphs.com>
Tue, 2 Aug 2011 04:19:17 +0000 (07:19 +0300)
committerDan Vanderkam <dan@dygraphs.com>
Tue, 2 Aug 2011 04:19:17 +0000 (07:19 +0300)
dygraph.js
tests/customLabel.html
tests/resize.html

index f004c4e..1861fb6 100644 (file)
@@ -650,6 +650,12 @@ Dygraph.prototype.createInterface_ = function() {
 
   this.createStatusMessage_();
   this.createDragInterface_();
+
+  // Update when the window is resized.
+  // TODO(danvk): drop frames depending on complexity of the chart.
+  Dygraph.addEvent(window, 'resize', function(e) {
+    dygraph.resize();
+  });
 };
 
 /**
@@ -771,6 +777,7 @@ Dygraph.prototype.createStatusMessage_ = function() {
       "overflow": "hidden"};
     Dygraph.update(messagestyle, this.attr_('labelsDivStyles'));
     var div = document.createElement("div");
+    div.className = "dygraph-legend";
     for (var name in messagestyle) {
       if (messagestyle.hasOwnProperty(name)) {
         div.style[name] = messagestyle[name];
@@ -1899,6 +1906,10 @@ Dygraph.prototype.predraw_ = function() {
 
   // If the data or options have changed, then we'd better redraw.
   this.drawGraph_();
+
+  // This is used to determine whether to do various animations.
+  var end = new Date();
+  this.drawingTimeMs_ = (end - start);
 };
 
 /**
@@ -2985,9 +2996,8 @@ Dygraph.prototype.resize = function(width, height) {
     width = height = null;
   }
 
-  // TODO(danvk): there should be a clear() method.
-  this.maindiv_.innerHTML = "";
-  this.attrs_.labelsDiv = null;
+  var old_width = this.width_;
+  var old_height = this.height_;
 
   if (width) {
     this.maindiv_.style.width = width + "px";
@@ -2999,8 +3009,13 @@ Dygraph.prototype.resize = function(width, height) {
     this.height_ = this.maindiv_.offsetHeight;
   }
 
-  this.createInterface_();
-  this.predraw_();
+  if (old_width != this.width_ || old_height != this.height_) {
+    // TODO(danvk): there should be a clear() method.
+    this.maindiv_.innerHTML = "";
+    this.attrs_.labelsDiv = null;
+    this.createInterface_();
+    this.predraw_();
+  }
 
   this.resize_lock = false;
 };
index d878f48..d206f60 100644 (file)
@@ -26,8 +26,7 @@
               errorBars: true,
               labelsDivWidth: 100,
               labelsDivStyles: {
-                'background-color': 'transparent',
-                'top': '210px'
+                'backgroundColor': 'transparent',
               },
               labelsSeparateLines: true,
               yAxisLabelWidth: 20
index 2d2a02e..562fa9c 100644 (file)
 
     <script type="text/javascript" src="data.js"></script>
     <style type="text/css">
-    html, body {
-      height: 100%;
+    #div_g {
+      position: absolute;
+      left: 10px;
+      right: 10px;
+      top: 40px;
+      bottom: 10px;
     }
     </style>
   </head>
   <body>
-    <div id="div_g" style="width:95%; height:95%"></div>
+    <p>Resize the window. The dygraph will resize with it.</p>
+    <div id="div_g"></div>
 
     <script type="text/javascript">
       g = new Dygraph(
               errorBars: true
             }
           );
-
-      window.onresize = function() {
-        g.resize();
-      }
     </script>
   </body>
 </html>