X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph-utils.js;h=d2051bf51fcd3338135b4c5250efa3a193deff75;hb=b5481aea020c5fa66baef26508671591527bd3df;hp=10a393cfb2c6948e5d1cf7dac085ab2a595129d9;hpb=d91ba598b82c927945744c7041dc05500b5545b3;p=dygraphs.git diff --git a/dygraph-utils.js b/dygraph-utils.js index 10a393c..d2051bf 100644 --- a/dygraph-utils.js +++ b/dygraph-utils.js @@ -816,7 +816,9 @@ Dygraph.createIterator = function(array, start, length, opt_predicate) { // Shim layer with setTimeout fallback. // From: http://paulirish.com/2011/requestanimationframe-for-smart-animating/ -Dygraph.requestAnimFrame = (function(){ +// Should be called with the window context: +// Dygraph.requestAnimFrame.call(window, function() {}) +Dygraph.requestAnimFrame = (function() { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || @@ -841,7 +843,7 @@ Dygraph.requestAnimFrame = (function(){ * @private */ Dygraph.repeatAndCleanup = function(repeatFn, maxFrames, framePeriodInMillis, - cleanupFn) { + cleanupFn) { var frameNumber = 0; var previousFrameNumber; var startTime = new Date().getTime(); @@ -854,7 +856,7 @@ Dygraph.repeatAndCleanup = function(repeatFn, maxFrames, framePeriodInMillis, (function loop() { if (frameNumber >= maxFrames) return; - Dygraph.requestAnimFrame(function() { + Dygraph.requestAnimFrame.call(window, function() { // Determine which frame to draw based on the delay so far. Will skip // frames if necessary. var currentTime = new Date().getTime(); @@ -871,7 +873,7 @@ Dygraph.repeatAndCleanup = function(repeatFn, maxFrames, framePeriodInMillis, repeatFn(maxFrameArg); // Ensure final call with maxFrameArg. cleanupFn(); } else { - if (frameDelta != 0) { // Don't call repeatFn with duplicate frames. + if (frameDelta !== 0) { // Don't call repeatFn with duplicate frames. repeatFn(frameNumber); } loop(); @@ -1027,7 +1029,6 @@ Dygraph.regularShape_ = function( delta = delta || Math.PI * 2 / sides; ctx.beginPath(); - var first = true; var initialAngle = rotationRadians; var angle = initialAngle; @@ -1211,3 +1212,20 @@ Dygraph.detectLineDelimiter = function(data) { return null; }; + +/** + * Is one element contained by another? + * @param {Element} containee The contained element. + * @param {Element} container The container element. + * @return {boolean} Whether containee is inside (or equal to) container. + * @private + */ +Dygraph.isElementContainedBy = function(containee, container) { + if (container === null || containee === null) { + return false; + } + while (containee && containee !== container) { + containee = containee.parentNode; + } + return (containee === container); +};