--- reviewpages/scripts/binreports.js (revision 262)
+++ reviewpages/scripts/binreports.js (working copy)
@@ -0,3 +1,6 @@
+function escape_id(s) {
+ return escape(s).replace(/[%@.]/g, '');
+}
function deslash(s) {
return s.replace(/\\/g, '\\\\')
@@ -79,6 +82,12 @@
/*
* .c = comments {'id': 'comment'}
+ * .x = alient comments {'author': { 'time' : {
+ * .c = {'id': 'comment'}
+ * .i = {'id': {'l40': 'comment'}}
+ * .a = [3,4,7]
+ * }}}
+ * .t = unix time (getTime())
* .i = inline comments {'id':{'l40': 'comment'}}
* .a = agreed [7,4,5]
* .d = id '102034012'
@@ -105,74 +114,79 @@
return false;
}
-function merge(r1, r2) {
- if (r1 && r2) {
- var rep = {};
- rep.d = r2.d;
- var i;
- if (r1.a && r1.a.length > 0) {
- rep.a = [];
- for (i=0; i<r1.a.length; ++i)
- add(rep.a, r1.a[i]);
- }
- if (r2.a && r2.a.length > 0) {
- if (!rep.a) rep.a = [];
- for (i=0; i<r2.a.length; ++i)
- add(rep.a, r2.a[i]);
- }
- if (r1.c) {
- rep.c = {};
- for (i in r1.c)
- rep[i] = r1.c[i]
- }
- if (r2.c) {
- if (!rep.c) rep.c = {};
- for (i in r2.c)
- rep[i] = r2.c[i]
- }
- if (r1.n) rep.n = r1.n;
- if (r2.n) rep.n = r2.n;
- if (r1.i) {
- rep.i = {};
- for (i in r1.i)
- rep.i[i] = r1.i[i]
- }
- if (r2.i) {
- if (!rep.i) rep.i = {};
- for (i in r2.i)
- rep.i[i] = r2.i[i]
- }
- return rep;
- } else if (r1) {
- return r1;
- } else if (r2) {
- return r2;
- } else {
- return null;
- }
-}
-
function check_hash() {
var msg = window.location.hash;
if (!msg || msg.length < 10)
- return;
+ return null;
window.location.hash = "";
- save_rep(str_to_rep(msg.substring(1)));
+ return str_to_rep(msg.substring(1));
+}
+
+function merge_obj(a, b) {
+ if (b == null) {
+ return null;
+ }
+ switch (typeof b) {
+ case 'number':
+ case 'string':
+ case 'boolean': a = b;
+ break;
+ case 'object':
+ if (b.constructor === Array) {
+ if (!a) a = [];
+ for(var i=0; i<b.length; ++i) {
+ add(a, b[i]);
+ }
+ } else {
+ if (!a) a = {};
+ for (var field in b) {
+ a[field] = merge_obj(a[field], b[field]);
+ }
+ }
+ break;
+ }
+ return a;
+}
+
+/*
+ * Accept the rep moving its .a and such to .x
+ */
+function merge(rep, rep1) {
+ if (!rep1) return rep;
+ if (!rep) return rep1;
+ var name = rep1.n ? rep1.n : 'Anonymous';
+
+ if (!rep.x) rep.x = {};
+ if (!rep.x[name])
+ rep.x[name] = {};
+ if (!rep.x[name][rep1.t])
+ rep.x[name][rep1.t] = {};
+ var d = rep.x[name][rep1.t];
+ if (rep1.c)
+ d.c = rep1.c;
+ if (rep1.a)
+ d.a = rep1.a;
+ if (rep1.i)
+ d.i = rep1.i;
+
+ if (rep1.x) {
+ rep.x = merge_obj(rep.x, rep1.x);
+ }
+ return rep;
}
function save_rep(rep) {
+ rep.t = new Date().getTime() - 1287854282865;
- //var old_rep = load_rep();
- //var new_rep = merge(old_rep, rep);
setCookie("rp_"+reviewID, prepare_data(rep), getNextDay());
}
function load_rep() {
- check_hash();
+ var rep = check_hash();
var data = getCookie("rp_"+reviewID);
if (data && data!="") {
- return str_to_rep(data);
+ rep = merge(str_to_rep(data), rep);
}
- return null;/*merge(rep_hash, rep_coo);*/
+ return rep;
}
function on_load() {