updater's query now has its own uuid
authorThierry Parmentelat <thierry.parmentelat@inria.fr>
Thu, 11 Apr 2013 10:39:24 +0000 (12:39 +0200)
committerThierry Parmentelat <thierry.parmentelat@inria.fr>
Thu, 11 Apr 2013 10:39:24 +0000 (12:39 +0200)
Makefile
plugins/updater/updater.js
plugins/updater/updater.py
third-party/uuid/Math.uuid.js [new file with mode: 0644]
third-party/uuid/Math.uuid.js.url [new file with mode: 0644]

index 961fc51..69c1336 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -40,6 +40,8 @@ THIRD-PARTY-RESOURCES += $(shell ls third-party/jquery/js/jquery.min.js)
 # for storing the visible status of plugins
 THIRD-PARTY-RESOURCES += $(shell ls third-party/jquery-html5storage/jquery.html5storage.js)
 THIRD-PARTY-RESOURCES += $(shell ls third-party/jquery-html5storage/jquery.html5storage.min.js)
+# creating queries uuids on the fly
+THIRD-PARTY-RESOURCES += $(shell ls third-party/uuid/Math.uuid.js)
 # spin comes in plain or min, + the jquery plugin, and our own settings
 THIRD-PARTY-RESOURCES += $(shell ls third-party/spin/*.js)
 # used in QueryCode
index 26390a8..7bfaf6d 100644 (file)
        // implementation wouldn't fly
        // we keep this for a later improvement
        var query=manifold.find_query (options.query_uuid);
-       console.log("retrieved query " + query.__repr());
+       messages.info("retrieved query " + query.__repr());
        // very rough way of filling this for now
        this.update_query = 
            new ManifoldQuery ("update", query.subject, null, query.filters, 
                               {}, // params
                               query.fields, 
                               undefined, /* unique */ 
-                              query.query_uuid, /* tmp */
+                              Math.uuid(32,16), 
                               undefined, undefined /* maybe some day I'll get that one */);
        // arm button once document is loaded
        (function(updater) {$(document).ready(function(){updater.arm_button()})})(this);
 
        this.arm_button = function () {
-           console.log("arm_button");
            $('#updater-' + this.options.plugin_uuid).click(this, this.submit_update_request);
        },
        this.submit_update_request = function (e) {
-           console.log("submit_update_request");
+           messages.debug("submit_update_request");
            var query_uuid = e.data.options.query_uuid;
            var update_query = e.data.update_query;
            $.publish("/messages/debug","Updater.submit_update_request " + update_query.__repr());
@@ -93,7 +92,9 @@
        },
   
        update_slice = function (e, rows, query) {
+
            /* This function is called twice : get and update */
+
       
            var data = e.data.instance.data().Slices;
       
index 506416b..f04afc2 100644 (file)
@@ -13,7 +13,10 @@ class Updater (Plugin):
 
     def requirements (self):
         return {
-            'js_files' :  [ "js/updater.js" , "js/manifold.js", "js/manifold-query.js", ],
+            'js_files' :  [ "js/updater.js" , "js/manifold.js", "js/manifold-query.js", 
+                            "js/spin.presets.js", "js/spin.min.js", "js/jquery.spin.js",
+                            "js/Math.uuid.js",
+                            ],
             'css_files' : "css/updater.css",
             }
 
diff --git a/third-party/uuid/Math.uuid.js b/third-party/uuid/Math.uuid.js
new file mode 100644 (file)
index 0000000..7538e67
--- /dev/null
@@ -0,0 +1,92 @@
+/*!
+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.
+*/
+
+/*
+ * 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/third-party/uuid/Math.uuid.js.url b/third-party/uuid/Math.uuid.js.url
new file mode 100644 (file)
index 0000000..0ff2b79
--- /dev/null
@@ -0,0 +1 @@
+http://www.broofa.com/Tools/Math.uuid.js