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() {