projects
/
dygraphs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Import babel polyfill (#813)
[dygraphs.git]
/
src
/
extras
/
synchronizer.js
diff --git
a/src/extras/synchronizer.js
b/src/extras/synchronizer.js
old mode 100644
(file)
new mode 100755
(executable)
index
bd75050
..
6f369f3
--- a/
src/extras/synchronizer.js
+++ b/
src/extras/synchronizer.js
@@
-35,7
+35,14
@@
/* global Dygraph:false */
'use strict';
/* global Dygraph:false */
'use strict';
-Dygraph.synchronize = function(/* dygraphs..., opts */) {
+var Dygraph;
+if (window.Dygraph) {
+ Dygraph = window.Dygraph;
+} else if (typeof(module) !== 'undefined') {
+ Dygraph = require('../dygraph');
+}
+
+var synchronize = function(/* dygraphs..., opts */) {
if (arguments.length === 0) {
throw 'Invalid invocation of Dygraph.synchronize(). Need >= 1 argument.';
}
if (arguments.length === 0) {
throw 'Invalid invocation of Dygraph.synchronize(). Need >= 1 argument.';
}
@@
-107,7
+114,7
@@
Dygraph.synchronize = function(/* dygraphs..., opts */) {
if (!prevCallbacks[j]) {
prevCallbacks[j] = {};
}
if (!prevCallbacks[j]) {
prevCallbacks[j] = {};
}
- for (var k
in callBackTypes
) {
+ for (var k
= callBackTypes.length - 1; k >= 0; k--
) {
prevCallbacks[j][callBackTypes[k]] = dygraphs[j].getFunctionOption(callBackTypes[k]);
}
}
prevCallbacks[j][callBackTypes[k]] = dygraphs[j].getFunctionOption(callBackTypes[k]);
}
}
@@
-146,6
+153,16
@@
Dygraph.synchronize = function(/* dygraphs..., opts */) {
};
};
};
};
+function arraysAreEqual(a, b) {
+ if (!Array.isArray(a) || !Array.isArray(b)) return false;
+ var i = a.length;
+ if (i !== b.length) return false;
+ while (i--) {
+ if (a[i] !== b[i]) return false;
+ }
+ return true;
+}
+
function attachZoomHandlers(gs, syncOpts, prevCallbacks) {
var block = false;
for (var i = 0; i < gs.length; i++) {
function attachZoomHandlers(gs, syncOpts, prevCallbacks) {
var block = false;
for (var i = 0; i < gs.length; i++) {
@@
-162,15
+179,22
@@
function attachZoomHandlers(gs, syncOpts, prevCallbacks) {
for (var j = 0; j < gs.length; j++) {
if (gs[j] == me) {
if (prevCallbacks[j] && prevCallbacks[j].drawCallback) {
for (var j = 0; j < gs.length; j++) {
if (gs[j] == me) {
if (prevCallbacks[j] && prevCallbacks[j].drawCallback) {
- prevCallbacks[j].drawCallback
(me, initial
);
+ prevCallbacks[j].drawCallback
.apply(this, arguments
);
}
continue;
}
}
continue;
}
+
+ // Only redraw if there are new options
+ if (arraysAreEqual(opts.dateWindow, gs[j].getOption('dateWindow')) &&
+ arraysAreEqual(opts.valueRange, gs[j].getOption('valueRange'))) {
+ continue;
+ }
+
gs[j].updateOptions(opts);
}
block = false;
}
gs[j].updateOptions(opts);
}
block = false;
}
- },
fals
e /* no need to redraw */);
+ },
tru
e /* no need to redraw */);
}
}
}
}
@@
-187,7
+211,7
@@
function attachSelectionHandlers(gs, prevCallbacks) {
for (var i = 0; i < gs.length; i++) {
if (me == gs[i]) {
if (prevCallbacks[i] && prevCallbacks[i].highlightCallback) {
for (var i = 0; i < gs.length; i++) {
if (me == gs[i]) {
if (prevCallbacks[i] && prevCallbacks[i].highlightCallback) {
- prevCallbacks[i].highlightCallback
(event, x, points, row, seriesName
);
+ prevCallbacks[i].highlightCallback
.apply(this, arguments
);
}
continue;
}
}
continue;
}
@@
-205,7
+229,7
@@
function attachSelectionHandlers(gs, prevCallbacks) {
for (var i = 0; i < gs.length; i++) {
if (me == gs[i]) {
if (prevCallbacks[i] && prevCallbacks[i].unhighlightCallback) {
for (var i = 0; i < gs.length; i++) {
if (me == gs[i]) {
if (prevCallbacks[i] && prevCallbacks[i].unhighlightCallback) {
- prevCallbacks[i].unhighlightCallback
(event
);
+ prevCallbacks[i].unhighlightCallback
.apply(this, arguments
);
}
continue;
}
}
continue;
}
@@
-213,8
+237,10
@@
function attachSelectionHandlers(gs, prevCallbacks) {
}
block = false;
}
}
block = false;
}
- });
+ }
, true /* no need to redraw */
);
}
}
}
}
+Dygraph.synchronize = synchronize;
+
})();
})();