From 0d7e007d56a1e5ea0285ca9c2379e20c3c91bf9e Mon Sep 17 00:00:00 2001 From: Sanj Date: Thu, 23 Feb 2012 21:00:52 +0530 Subject: [PATCH] use uuid function to generate UUID and not new Date().getTime since too many seconds have passed since the start of the epoch for a mysql integer field to handle --- edgware/static/js/Math.uuid.js | 94 ++++++++++++++++++++++++++++++++++ edgware/templates/editor.html | 4 +- 2 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 edgware/static/js/Math.uuid.js diff --git a/edgware/static/js/Math.uuid.js b/edgware/static/js/Math.uuid.js new file mode 100644 index 0000000..fe24cd1 --- /dev/null +++ b/edgware/static/js/Math.uuid.js @@ -0,0 +1,94 @@ +/*! +Math.uuid.js (v1.4) +http://www.broofa.com +mailto:robert@broofa.com + +Copyright (c) 2010 Robert Kieffer +Dual licensed under the MIT and GPL licenses. +*/ + +//From: http://www.broofa.com/Tools/Math.uuid.js + +/* + * Generate a random uuid. + * + * USAGE: Math.uuid(length, radix) + * length - the desired number of characters + * radix - the number of allowable values for each character. + * + * EXAMPLES: + * // No arguments - returns RFC4122, version 4 ID + * >>> Math.uuid() + * "92329D39-6F5C-4520-ABFC-AAB64544E172" + * + * // One argument - returns ID of the specified length + * >>> Math.uuid(15) // 15 character ID (default base=62) + * "VcydxgltxrVZSTV" + * + * // Two arguments - returns ID of the specified length, and radix. (Radix must be <= 62) + * >>> Math.uuid(8, 2) // 8 character ID (base=2) + * "01001010" + * >>> Math.uuid(8, 10) // 8 character ID (base=10) + * "47473046" + * >>> Math.uuid(8, 16) // 8 character ID (base=16) + * "098F4D35" + */ +(function() { + // Private array of chars to use + var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); + + Math.uuid = function (len, radix) { + var chars = CHARS, uuid = [], i; + radix = radix || chars.length; + + if (len) { + // Compact form + for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix]; + } else { + // rfc4122, version 4 form + var r; + + // rfc4122 requires these characters + uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; + uuid[14] = '4'; + + // Fill in random data. At i==19 set the high bits of clock sequence as + // per rfc4122, sec. 4.1.5 + for (i = 0; i < 36; i++) { + if (!uuid[i]) { + r = 0 | Math.random()*16; + uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; + } + } + } + + return uuid.join(''); + }; + + // A more performant, but slightly bulkier, RFC4122v4 solution. We boost performance + // by minimizing calls to random() + Math.uuidFast = function() { + var chars = CHARS, uuid = new Array(36), rnd=0, r; + for (var i = 0; i < 36; i++) { + if (i==8 || i==13 || i==18 || i==23) { + uuid[i] = '-'; + } else if (i==14) { + uuid[i] = '4'; + } else { + if (rnd <= 0x02) rnd = 0x2000000 + (Math.random()*0x1000000)|0; + r = rnd & 0xf; + rnd = rnd >> 4; + uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; + } + } + return uuid.join(''); + }; + + // A more compact, but less performant, RFC4122v4 solution: + Math.uuidCompact = function() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8); + return v.toString(16); + }); + }; +})(); diff --git a/edgware/templates/editor.html b/edgware/templates/editor.html index b2af408..5ba92d8 100644 --- a/edgware/templates/editor.html +++ b/edgware/templates/editor.html @@ -19,6 +19,7 @@ + @@ -48,7 +49,8 @@ REVISION_NO = {{rev_no}}; FRONTEND_URL = "{{frontend_url}}"; {% endif %} - var UUID = parseInt(new Date().getTime() / (10000 * (Math.random() * 10))); + var UUID = Math.uuid(7,10); +// var UUID = parseInt(new Date().getTime() / (10000 * (Math.random() * 10))); USER_ID = {{ user.id }}; isAjaxActive = false; $(document).ready(function() {