lib/riemann/dash/public/util.js in riemann-dash-0.2.1 vs lib/riemann/dash/public/util.js in riemann-dash-0.2.3

- old
+ new

@@ -1,54 +1,47 @@ var util = (function() { - // Unique IDs - var uniqueId = function(bytes) { - bytes = bytes || 20; - var s = ''; - for (var i = 0; i < bytes * 2; i++) { - s += Math.floor(Math.random() * 16).toString(16); - } - return s; - } + return { + merge: function(m1, m2) { + // Merge two maps nondestructively. + return _.extend({}, m1, m2) + }, + slur: function(period, f) { + // Wraps a function in another, which calls f at most once every period + // milliseconds. Tries to minimize latency. - // Merge two maps nondestructively. - var merge = function(m1, m2) { - return _.extend(_.clone(m1), m2); - } + var lastRun = new Date(); + lastRun.setYear(0); + var queued = false; + var execute = function(context, args) { + f.apply(context, args); + lastRun = new Date(); + queued = false; + }; - // Wraps a function in another, which calls f at most once every period - // milliseconds. Tries to minimize latency. - var slur = function(period, f) { - var lastRun = new Date(); - lastRun.setYear(0); - var queued = false; - var execute = function(context, args) { - f.apply(context, args); - lastRun = new Date(); - queued = false; - }; + return function() { + // If queued, do nothing + if (queued) { + return; + } - return function() { - // If queued, do nothing - if (queued) { - return; + var dt = (new Date()) - lastRun; + if (period <= dt) { + // We're free to go + execute(this, arguments); + } + else { + // Too soon, enqueue a new job. + window.setTimeout(execute, period - dt, this, arguments); + } } - - var dt = (new Date()) - lastRun; - if (period <= dt) { - // We're free to go - execute(this, arguments); - } else { - // Too soon, enqueue a new job. - window.setTimeout(execute, period - dt, this, arguments); - } + }, + uniqueId: function(length) { + // Unique-ish IDs as a length sized string of hex + var id = '', hex = '0123456789abcdef'; + _(length || 40).times(function() { id += hex[_.random(15)]; }); + return id; } - } - - return { - merge: merge, - slur: slur, - uniqueId: uniqueId - } + }; })(); $(function() { // Allow disabling text selection. $.extend($.fn.disableTextSelect = function() {