delay synchronizing until all the dygraphs are ready.
authorRuss Nelson <russnelson@gmail.com>
Mon, 23 Feb 2015 22:00:24 +0000 (17:00 -0500)
committerRobert Konigsberg <konigsberg@google.com>
Tue, 26 May 2015 20:54:48 +0000 (16:54 -0400)
extras/synchronizer.js

index f2ba905..d2c5bbf 100644 (file)
@@ -96,16 +96,24 @@ Dygraph.synchronize = function(/* dygraphs..., opts */) {
     throw 'Invalid invocation of Dygraph.synchronize(). ' +
           'Need two or more dygraphs to synchronize.';
   }
+  
+  var readycount = dygraphs.length;
+  for (var i = 0; i < dygraphs.length; i++) {
+    var g = dygraphs[i];
+    g.ready( function() {
+      if (--readycount == 0) {
+        // Listen for draw, highlight, unhighlight callbacks.
+        if (opts.zoom) {
+          attachZoomHandlers(dygraphs, opts, prevCallbacks);
+        }
 
-  // Listen for draw, highlight, unhighlight callbacks.
-  if (opts.zoom) {
-    attachZoomHandlers(dygraphs, opts, prevCallbacks);
-  }
-
-  if (opts.selection) {
-    attachSelectionHandlers(dygraphs, prevCallbacks);
+        if (opts.selection) {
+          attachSelectionHandlers(dygraphs, prevCallbacks);
+        }
+      }
+    });
   }
-
   return {
     detach: function() {
       for (var i = 0; i < dygraphs.length; i++) {