Skip to content

Commit

Permalink
mimeograph fix
Browse files Browse the repository at this point in the history
  • Loading branch information
amark committed May 8, 2018
1 parent 71ccb5d commit a4d5599
Show file tree
Hide file tree
Showing 7 changed files with 75 additions and 70 deletions.
2 changes: 1 addition & 1 deletion examples/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ ul, li {
.gap {
padding: 3%;
}
.ditch {
.gully {
margin-top: 2em;
margin-bottom: 2em;
}
Expand Down
2 changes: 1 addition & 1 deletion gun.min.js

Large diffs are not rendered by default.

128 changes: 66 additions & 62 deletions lib/time.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,111 +13,115 @@
var t = new Date(Gun.state()).toISOString().split(/[\-t\:\.z]/ig);
var gun = this, root = gun.back(-1);
var p, tmp = t.pop();
gun.get('_', function(msg, ev){ ev.off();
var id = (msg.put && msg.put['#']) || ((root.back('opt.uuid') || Gun.text.random)(6) + ':'); // TODO: BUG! THIS SHOULD NOT BE HARDCODED.
//gun.get('_', function(msg, ev){ ev.off();
//var id = (msg.put && msg.put['#']) || (((gun._).soul || (root.back('opt.uuid') || Gun.text.random)(6)) + ':'); // TODO: BUG! THIS SHOULD NOT BE HARDCODED.
var id = (gun._).soul; // TODO: BUG! THIS SHOULD NOT BE HARDCODED.
p = id;
if(!p){ return cb({err: "For now, a timegraph can only be saved as a root node."}), this }
// could shrink this into a loop. Do later?
t = [p].concat(t);
var rid = (root.back('opt.uuid') || Gun.text.random)(9);
var milli = ify({}, p + t.join(':'));
var milli = ify({}, t.join(':'));
milli[rid] = data;
tmp = t.pop();
var sec = ify({}, p + t.join(':'));
var sec = ify({}, t.join(':'));
sec[tmp] = milli;
tmp = t.pop();
var min = ify({}, p + t.join(':'));
var min = ify({}, t.join(':'));
min[tmp] = sec;
tmp = t.pop();
var hour = ify({}, p + t.join(':'));
var hour = ify({}, t.join(':'));
hour[tmp] = min;
tmp = t.pop();
var day = ify({}, p + t.join(':'));
var day = ify({}, t.join(':'));
day[tmp] = hour;
tmp = t.pop();
var month = ify({}, p + t.join(':'));
var month = ify({}, t.join(':'));
month[tmp] = day;
tmp = t.pop();
var year = ify({}, p + t.join(':'));
var year = ify({}, t.join(':'));
year[tmp] = month;
tmp = t.pop();
var time = ify({}, p + t.join(':'));
var time = ify({}, t.join(':') || id);
time[tmp] = year;
var ref = root.put(time);
gun.put(ref, cb);
})
gun.put(time, cb);
//})
return gun;
}
function travel(cb, opt, b, gun){
var root = gun.back(-1), tmp;
(opt = Gun.num.is(opt)? {start: opt} : opt || {}).seen = opt.seen || {};
var t = new Date(opt.start || Gun.state()).toISOString().split(/[\-t\:\.z]/ig).slice(0,-1);
gun.get('_', function(msg, ev){ ev.off();
(opt = Gun.num.is(opt)? {last: opt} : opt || {}).seen = opt.seen || {};
var t = now();
gun.get('_', function(msg, ev){
var id = (msg.put && msg.put['#']);
if(':' == id[id.length-1]){
id = id.slice(0,-1);
} else {
id = null;
}
if(!id){ return Gun.log("Could not find time index.") }
opt.at = opt.start = [id].concat(t);
find(opt, cb, root);
})
if(!id){ return }
if(false === opt.next){ ev.off() }
else { opt.next = true }
opt.start = [opt.id = id].concat(t);
opt.low = opt.low || opt.start;
opt.top = opt.top || opt.start;
opt.now = [id].concat(now());
//console.log("UPDATE");
find(opt, cb, root, opt.at? opt.now : opt.at = opt.start);
});
return gun;
}
function find(o, cb, root){
var at = o.at, t = at.join(':');
if(1 == at.length){ t += ':' }
if(o.seen[t]){ return } o.seen[t] = true;
var next = o.start[at.length];
function now(t){
return new Date(t || Gun.state()).toISOString().split(/[\-t\:\.z]/ig).slice(0,-1);
}
function find(o, cb, root, at, off){
var at = at || o.at, t = at.join(':'), tmp;
if(!off){
if(o.seen[t]){ return }
o.seen[t] = true;
}
var next = (o.low || o.start)[at.length];
root.get(t).get(function(msg, ev){
if(off){ ev.off() }
var g = this;
if(/*true || */u === msg.put){
o.at = at.slice(0,-1);
console.debug(5, o.at);
console.debug(4, o.at);
console.debug(3, o.at);
console.debug(2, o.at);
console.debug(1, o.at);
find(o, cb, root);
//console.log(at, msg.put);
if(u === msg.put){
find(o, cb, root, at.slice(0,-1), off);
return;
}
if(7 < at.length){
var l = Object.keys(msg.put).length;
if(l === o.seen[t]){ return }
Gun.node.is(msg.put, function(v, k){
cb(v, k, ev);
if(o.last){ --o.last }
})
});
o.seen[t] = l;
if(!o.last){ return }
if(o.last <= 0){ return }
var tmp = {seen: {}};
tmp.last = o.last;
tmp.start = tmp.at = o.at;
tmp.at = tmp.at.slice(0,-1);
tmp.was = true;
find(tmp, cb, root);
o.low = at;
var tmp = at.slice(0,-1);
find(o, cb, root, tmp, true);
return;
}
if(u === msg.put){ return }
if(o.last){
if(o.last && false !== off){
var keys = Object.keys(msg.put).sort().reverse();
var less = Gun.list.map(keys, function(k){
if(parseFloat(k) < parseFloat(next)){ return k }
})
});
if(!less){
o.at = at.slice(0,-1);
find(o, cb, root);
return;
find(o, cb, root, at.slice(0,-1), true);
} else {
var tmp = (at || o.at).slice();
tmp.push(less);
(o.low = tmp.slice()).push(Infinity);
find(o, cb, root, tmp, true);
}
o.at.push(less);
(o.start = o.at.slice()).push(Infinity);
o.at.length === 8 && (console.debug.i = console.debug.i || 1);
find(o, cb, root);
return;
}
if(off){ return }
if(!o.next){ return }
if(at < o.start.slice(0, at.length)){ return }
var n = [o.id].concat(now()), top = n[at.length];
Gun.node.is(msg.put, function(v, k){
if(k < o.start[at.length]){ return }
(o.at = at.slice()).push(k)
//console.log('>>>>>', o.at);
find(o, cb, root);
})
//console.log(o.at, msg.put, o.start[o.at.length]);
if(k > top){ return }
(v = at.slice()).push(k);
find(o, cb, root, v, false);
});
})
}
}());
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "gun",
"version": "0.9.994",
"version": "0.9.995",
"description": "A realtime, decentralized, offline-first, graph data synchronization engine.",
"main": "index.js",
"browser": "gun.min.js",
Expand Down
2 changes: 1 addition & 1 deletion src/graph.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ var Graph = {};
if(!(is = valid(v,k,n, at,env))){ return }
if(!k){
at.node = at.node || n || {};
if(obj_has(v, Node._)){
if(obj_has(v, Node._)){ // && Node.soul(v) ? for safety ?
at.node._ = obj_copy(v._);
}
at.node = Node.soul.ify(at.node, Val.rel.is(at.rel));
Expand Down
1 change: 1 addition & 0 deletions src/put.js
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ function batch(){ var as = this;
} function no(v,k){ if(v){ return true } }

function map(v,k,n, at){ var as = this;
//if(Gun.is(v)){} // TODO: HANDLE!
if(k || !at.path.length){ return }
(as.res||iife)(function(){
var path = at.path, ref = as.ref, opt = as.opt;
Expand Down
8 changes: 4 additions & 4 deletions src/state.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ var Type = require('./type');
var Node = require('./node');
function State(){
var t;
if(perf){
t = start + perf.now();
} else {
/*if(perf){
t = start + perf.now(); // Danger: Accuracy decays significantly over time, even if precise.
} else {*/
t = time();
}
//}
if(last < t){
return N = 0, last = t + State.drift;
}
Expand Down

0 comments on commit a4d5599

Please sign in to comment.