X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph-utils.js;h=db0431426f822bf8fcab38a13813fe09cc9a2b50;hb=b1a3b195f92497b7dd659171af60fa46c93c50c2;hp=bf488efd02eb59467a13ee0399fd0473bc0d5220;hpb=41ee764f8a4eca14b72c66116b6cca0084b82b77;p=dygraphs.git diff --git a/dygraph-utils.js b/dygraph-utils.js index bf488ef..db04314 100644 --- a/dygraph-utils.js +++ b/dygraph-utils.js @@ -589,6 +589,43 @@ Dygraph.createCanvas = function() { /** * @private + * Call a function N times at a given interval, then call a cleanup function + * once. repeat_fn is called once immediately, then (times - 1) times + * asynchronously. If times=1, then cleanup_fn() is also called synchronously. + * @param repeat_fn {Function} Called repeatedly -- takes the number of calls + * (from 0 to times-1) as an argument. + * @param times {number} The number of times to call repeat_fn + * @param every_ms {number} Milliseconds between calls + * @param cleanup_fn {Function} A function to call after all repeat_fn calls. + * @private + */ +Dygraph.repeatAndCleanup = function(repeat_fn, times, every_ms, cleanup_fn) { + var count = 0; + var start_time = new Date().getTime(); + repeat_fn(count); + if (times == 1) { + cleanup_fn(); + return; + } + + (function loop() { + if (count >= times) return; + var target_time = start_time + (1 + count) * every_ms; + setTimeout(function() { + count++; + repeat_fn(count) + if (count >= times - 1) { + cleanup_fn(); + } else { + loop(); + } + }, target_time - new Date().getTime()); + // TODO(danvk): adjust every_ms to produce evenly-timed function calls. + })(); +}; + +/** + * @private * This function will scan the option list and determine if they * require us to recalculate the pixel positions of each point. * @param { List } a list of options to check. @@ -608,7 +645,6 @@ Dygraph.isPixelChangingOptionList = function(labels, attrs) { 'colorSaturation': true, 'colorValue': true, 'colors': true, - 'connectSeparatedPoints': true, 'digitsAfterDecimal': true, 'drawCallback': true, 'drawPoints': true,