Skip to content

Commit d17c8f1

Browse files
committed
proper order and some css
1 parent 1ecb55b commit d17c8f1

13 files changed

+11115
-10455
lines changed

dist/api.js

+10,297-10,298
Large diffs are not rendered by default.

dist/api.min.js

+502-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/article.html

+96-34
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css" />
66
<link rel="stylesheet" href="http://node-os.com/css/default.css" />
77
<script type="application/javascript" src="http://cloud.github.com/downloads/wycats/handlebars.js/handlebars-1.0.0.beta.6.js"></script>
8-
<script type="text/javascript" src="/api.min.js" ></script>
8+
<script type="text/javascript" src="api.js" ></script>
99
<style>
1010
.more {display:none}
1111
#articles img{max-width:100%}
1212
#articles article .title img{height:50px}
1313
</style>
14+
1415
</head>
1516
<body>
1617
<header class="navbar navbar-default navbar-fixed-top" role="navigation">
@@ -42,18 +43,21 @@
4243
<div class="col-sm-8 col-sm-offset-2 {{class}}" >
4344
<header class="alert alert-danger" role="alert">
4445
<h3 class="title">{{name}}</h3>
45-
<a href="#" class="remove" > To remove this message, click here</a>
4646
</header>
4747
<div class="content">{{{message}}}</div>
48-
<footer>
48+
<div>
4949
Don't worry, it probably was not your fault... probably....
5050
<br/>
5151
Even if it was,
52-
<a target="_blank" href="https://github.com/formula1/NodeOS-Blog/issues" >just submit an issue :)</a>
52+
<a target="_blank" href="https://github.com/NodeOS/GitBlog/issues" >just submit an issue :)</a>
53+
</div>
54+
<footer>
55+
<a class="remove btn btn-danger btn-xs" >Remove this message</a>
5356
</footer>
5457
</div>
5558
</article>
5659
</script>
60+
5761
<div id="westoredata" class="jumbotron">
5862
<h1>We store data on your computer</h1>
5963
<div>
@@ -81,6 +85,7 @@ <h1>We store data on your computer</h1>
8185
</div>
8286
<p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p>
8387
</div>
88+
8489
<div class="container blogsingle" >
8590
</div>
8691
<script type="text/html" class="template blogsingle" >
@@ -98,6 +103,7 @@ <h3 class="title">
98103
</div>
99104
</article>
100105
</script>
106+
101107
<div class="container comments" >
102108
</div>
103109
<script type="text/html" class="template comments">
@@ -116,6 +122,7 @@ <h3 class="title">
116122
</div>
117123
</article>
118124
</script>
125+
119126
</section>
120127
<!-- END: ISSUES ITEM TEMPLATE -->
121128

@@ -161,56 +168,87 @@ <h3 class="footer-title">Share</h3>
161168
<!-- START: BIND DATA TO VIEW -->
162169
<script type="text/javascript">
163170
var async = require("async");
171+
var version = 1;
172+
var userversion = localStorage.getItem("cacheorUri-version");
173+
if(!userversion || userversion === "undefined" || userversion < version){
174+
localStorage.clear();
175+
}
176+
localStorage.setItem("cacheorUri-version",version);
164177

165178
var in_memory = {};
166179

180+
function checkArrayOrder(ari){
181+
return !ari || ari.length < 2?
182+
"unk":
183+
ari[0].timestamp < ari[ari.length -1].timestamp?
184+
"asc":"desc";
185+
}
186+
167187
function cacheOrUriIterator(cachename, itemCBs){
168188
var cached = localStorage.getItem(cachename);
169189
if(!cached || cached === "undefined" || cached === "[]" ){
170190
in_memory[cachename] = [];
171191
return UriIterator(cachename, void(0), itemCBs);
172192
}
173-
console.log("cached");
174193
cached = JSON.parse(cached);
175194
if(!Array.isArray(cached)){
176195
cached = [cached];
177196
}
178-
async.eachSeries(cached,
179-
itemCBs.ready,
180-
function(e,results){
181-
in_memory[cachename] = cached;
182-
UriIterator(cachename, cached[cached.length - 1].timestamp, itemCBs);
183-
});
197+
var order = checkArrayOrder(cached);
198+
in_memory[cachename] = cached;
199+
UriIterator(cachename, cached[cached.length - 1].timestamp, itemCBs,order);
184200
}
185201

186-
function UriIterator(cachename, timestamp, itemCBs){
202+
function UriIterator(cachename, timestamp, itemCBs, order){
187203
itemCBs.timestamp2URI(timestamp,function(uri){
188204
jQuery.get(uri).done(function(data){
189205
if(!Array.isArray(data)){
190206
data = [data];
191207
}
192208
async.eachSeries(data, function(item,next){
193209
itemCBs.prep(item,function(item){
194-
itemCBs.ready(item, next);
210+
next();
195211
});
196212
},function(err,results){
197213
if(err) return itemCBs.error(err);
198-
in_memory[cachename] = in_memory[cachename].concat(data);
214+
var doublecheck_order = checkArrayOrder(data)
215+
if(order != "unk"){
216+
if(order != doublecheck_order && doublecheck_order != "unk"){
217+
in_memory[cachename].sort(function(a,b){
218+
return doublecheck_order=="asc"?
219+
a.timestamp-b.timestamp:
220+
b.timestamp-a.timestamp;
221+
});
222+
order = doublecheck_order;
223+
}
224+
}else if(doublecheck_order == "unk"){
225+
order = "asc";
226+
}
227+
228+
var temp = order=="asc"?
229+
in_memory[cachename].concat(data):
230+
data.concat(in_memory[cachename]);
231+
delete in_memory[cachename];
199232
try{
200-
localStorage.setItem( cachename,JSON.stringify(in_memory[cachename]) );
233+
localStorage.setItem( cachename,JSON.stringify(temp) );
201234
}catch(e){
202235
return itemCBs.error(e);
203236
}
204-
delete in_memory[cachename];
205-
if(data.length === 0){
206-
itemCBs.done(timestamp);
207-
}else{
208-
itemCBs.done(data[data.length -1].timestamp);
209-
}
237+
async.eachSeries(temp, function(item,next){
238+
itemCBs.ready(item, next);
239+
},function(err,results){
240+
if(data.length === 0){
241+
itemCBs.done(timestamp);
242+
}else{
243+
itemCBs.done(data[data.length -1].timestamp);
244+
}
245+
});
210246
});
211247
}).fail(itemCBs.error);
212248
});
213249
}
250+
251+
214252
function Template(template,contain,unique){
215253
this.template = Handlebars.compile(jQuery(template).html());
216254
this.contain = jQuery(contain);
@@ -221,7 +259,7 @@ <h3 class="footer-title">Share</h3>
221259
this.unique[unique[l]] = false;
222260
}
223261
}
224-
this.contain.find(".remove").on("click",this.remove.bind(this));
262+
this.contain.find(".remove").on("click",this.remove);
225263
}
226264

227265
Template.prototype.add = function(item){
@@ -230,7 +268,9 @@ <h3 class="footer-title">Share</h3>
230268
this.unique[item.class] = true;
231269
}
232270
console.log("appending");
233-
this.contain.append(this.template(item));
271+
item = jQuery(this.template(item));
272+
item.find(".remove").on("click",this.remove);
273+
this.contain.append(item);
234274
};
235275

236276
Template.prototype.remove = function(e){
@@ -242,6 +282,8 @@ <h3 class="footer-title">Share</h3>
242282
}
243283
art.remove();
244284
};
285+
286+
245287
jQuery(function($){
246288
$("#westoredata>p a").click(function(e){
247289
e.preventDefault();
@@ -306,7 +348,9 @@ <h3 class="footer-title">Share</h3>
306348
});
307349
});
308350
}
351+
309352
var errorHandler;
353+
var queue =[];
310354
jQuery(function($){
311355
errorHandler = new Template(
312356
"script.template.error",
@@ -325,14 +369,18 @@ <h3 class="footer-title">Share</h3>
325369
oldwinerr(message, filename, lineno, colno, error );
326370
}
327371
};
372+
queue.forEach(errorHandler.add.bind(errorHandler));
328373
});
329374

330375
function addError(error){
376+
var e;
331377
if(error.status){
332-
errorHandler.add({name:"Ajax: "+error.status, message:error.responseText});
378+
e={name:"Ajax: "+error.status, message:error.responseText};
333379
}else{
334-
errorHandler.add({name:error.name, message:error.stack});
380+
e = {name:error.name, message:error.stack};
335381
}
382+
if(!errorHandler) return queue.push(e);
383+
errorHandler.add(e);
336384
}
337385

338386
function add403(){
@@ -342,37 +390,47 @@ <h3 class="footer-title">Share</h3>
342390
};
343391
if(user.isLoggedIn){
344392
topush.message = "Apparently, people have been using our app too much..."+
345-
"<button onclick='user.login()'>Log in</button>";
393+
"<button class='btn btn-primary' onclick='user.login()'>Log in</button>";
346394
}else{
347395
topush.message = "If you'd like to continue, please "+
348-
"<button onclick='user.login()'>Log in</button>";
396+
"<button class='btn btn-primary' onclick='user.login()'>Log in</button>";
349397
}
398+
if(!errorHandler) return queue.push(topush);
350399
errorHandler.add(topush);
351400
}
352401

353402
function add404(){
354-
errorHandler.add({
403+
e = {
355404
name: "Your in the wrong place my friend.",
356405
message: "<a href='/'>Heres a hand, we'll get you back on the right track</a>"
357-
});
406+
};
407+
if(!errorHandler) return queue.push(e);
408+
errorHandler.add(e);
358409
}
410+
411+
359412
var config = {
360413
cid: "dafb27cb88db35267e75",
361414
yqluri: "store://gdDAnJkTXAuVgzAQ8wboA2"
362415
};
363416

364417
var AuthProvider = require("auth-provider");
365418

366-
window.user = new AuthProvider(
367-
config.cid,
368-
yql_access(config.yqluri)
369-
);
419+
AuthProvider.init({
420+
github:{
421+
client_id: config.cid,
422+
access_retriever:yql_access(config.yqluri)
423+
}
424+
});
425+
426+
window.user = new AuthProvider();
370427
user.on("error",function(e){
371428
console.error(e);
372429
});
373430
user.on("login",function(token){
374431
jQuery(".four-zero-three .content").text("You've authenticated!");
375432
});
433+
376434
var num = (function(){
377435
var temp = document.location.href.split("#!")[1];
378436
console.log(temp);
@@ -441,6 +499,8 @@ <h3 class="footer-title">Share</h3>
441499
}
442500
);
443501
});
502+
503+
444504
var commentHandler;
445505

446506
jQuery(function($){
@@ -484,7 +544,9 @@ <h3 class="footer-title">Share</h3>
484544
}
485545
);
486546
});
547+
487548
</script>
488549
<!-- END: BIND DATA TO VIEW -->
489550
</body>
490-
</html>
551+
</html>
552+

0 commit comments

Comments
 (0)