X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph-utils.js;h=8b9dfd9940e2d113b2f5d5096e0b47f5215424ba;hb=758a629f806fa73483f730fb343013acd0ace078;hp=3d77148654e82d9e391008e17245b1845bd528d3;hpb=ab80172e885f5cafb2525dab0bf4102d49e8f7b6;p=dygraphs.git diff --git a/dygraph-utils.js b/dygraph-utils.js index 3d77148..8b9dfd9 100644 --- a/dygraph-utils.js +++ b/dygraph-utils.js @@ -11,6 +11,8 @@ * search) and generic DOM-manipulation functions. */ +/*jshint globalstrict: true */ +/*global Dygraph:false, G_vmlCanvasManager:false, Node:false, printStackTrace: false */ "use strict"; Dygraph.LOG_SCALE = 10; @@ -19,7 +21,7 @@ Dygraph.LN_TEN = Math.log(Dygraph.LOG_SCALE); /** @private */ Dygraph.log10 = function(x) { return Math.log(x) / Dygraph.LN_TEN; -} +}; // Various logging levels. Dygraph.DEBUG = 1; @@ -43,7 +45,7 @@ Dygraph.log = function(severity, message) { var st; if (typeof(printStackTrace) != 'undefined') { // Remove uninteresting bits: logging functions and paths. - var st = printStackTrace({guess:false}); + st = printStackTrace({guess:false}); while (st[0].indexOf("stacktrace") != -1) { st.splice(0, 1); } @@ -317,6 +319,7 @@ Dygraph.pageY = function(e) { * @return { Boolean } Whether the number is zero or NaN. */ // TODO(danvk): rename this function to something like 'isNonZeroNan'. +// TODO(danvk): determine when else this returns false (e.g. for undefined or null) Dygraph.isOK = function(x) { return x && !isNaN(x); }; @@ -359,7 +362,7 @@ Dygraph.floatFormat = function(x, opt_precision) { // // Finally, the argument for toExponential() is the number of trailing digits, // so we take off 1 for the value before the '.'. - return (Math.abs(x) < 1.0e-3 && x != 0.0) ? + return (Math.abs(x) < 1.0e-3 && x !== 0.0) ? x.toExponential(p - 1) : x.toPrecision(p); }; @@ -414,28 +417,31 @@ Dygraph.round_ = function(num, places) { * @param { Integer } [high] The last index in arry to consider (optional) */ Dygraph.binarySearch = function(val, arry, abs, low, high) { - if (low == null || high == null) { + if (low === null || low === undefined || + high === null || high === undefined) { low = 0; high = arry.length - 1; } if (low > high) { return -1; } - if (abs == null) { + if (abs === null || abs === undefined) { abs = 0; } var validIndex = function(idx) { return idx >= 0 && idx < arry.length; - } - var mid = parseInt((low + high) / 2); + }; + var mid = parseInt((low + high) / 2, 10); var element = arry[mid]; if (element == val) { return mid; } + + var idx; if (element > val) { if (abs > 0) { // Accept if element > val, but also if prior element < val. - var idx = mid - 1; + idx = mid - 1; if (validIndex(idx) && arry[idx] < val) { return mid; } @@ -445,7 +451,7 @@ Dygraph.binarySearch = function(val, arry, abs, low, high) { if (element < val) { if (abs < 0) { // Accept if element < val, but also if prior element > val. - var idx = mid + 1; + idx = mid + 1; if (validIndex(idx) && arry[idx] > val) { return mid; } @@ -478,8 +484,8 @@ Dygraph.dateParser = function(dateStr) { d = Dygraph.dateStrToMillis(dateStrSlashed); } else if (dateStr.length == 8) { // e.g. '20090712' // TODO(danvk): remove support for this format. It's confusing. - dateStrSlashed = dateStr.substr(0,4) + "/" + dateStr.substr(4,2) - + "/" + dateStr.substr(6,2); + dateStrSlashed = dateStr.substr(0,4) + "/" + dateStr.substr(4,2) + "/" + + dateStr.substr(6,2); d = Dygraph.dateStrToMillis(dateStrSlashed); } else { // Any format that Date.parse will accept, e.g. "2009/07/12" or @@ -539,7 +545,7 @@ Dygraph.updateDeep = function (self, o) { if (typeof(o) != 'undefined' && o !== null) { for (var k in o) { if (o.hasOwnProperty(k)) { - if (o[k] == null) { + if (o[k] === null) { self[k] = null; } else if (Dygraph.isArrayLike(o[k])) { self[k] = o[k].slice(); @@ -627,7 +633,7 @@ Dygraph.createCanvas = function() { * Android does not fully support the tag, e.g. w/r/t/ clipping. */ Dygraph.isAndroid = function() { - return /Android/.test(navigator.userAgent); + return (/Android/).test(navigator.userAgent); }; /** @@ -656,7 +662,7 @@ Dygraph.repeatAndCleanup = function(repeat_fn, times, every_ms, cleanup_fn) { var target_time = start_time + (1 + count) * every_ms; setTimeout(function() { count++; - repeat_fn(count) + repeat_fn(count); if (count >= times - 1) { cleanup_fn(); } else {