X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;ds=sidebyside;f=www%2Fjs%2Fblerg.js;h=96f6cb2d7a15569b5ab635d970cca8cf48e4220e;hb=b4f3c5710795c0792e7e21659571002079acd133;hp=737d84cefc2759b2060469a237219d311b60c71d;hpb=f13f6cbe98cab2e170fb714047cd794fbd39e228;p=blerg.git diff --git a/www/js/blerg.js b/www/js/blerg.js index 737d84c..96f6cb2 100644 --- a/www/js/blerg.js +++ b/www/js/blerg.js @@ -8,7 +8,10 @@ var recordTemplate = new Template( '
").replace(/\r?\n/g, "
");
@@ -353,7 +360,7 @@ function signup() {
},
onSuccess: function(r) {
$('signup').hide();
- location.hash = username;
+ location.href = '/#' + username;
hashSwitch();
loginStatus.login(username, password);
@@ -398,15 +405,92 @@ function resizePostContent() {
}, 150);
}
+var tickerTimer = null;
+var tickerHead, tickerTail;
+
+function tickerFader(a, b, p) {
+ var p2 = 1 - p;
+
+ a.style.opacity = p;
+ a.style.lineHeight = (100 * p) + '%';
+
+ b.style.opacity = p2;
+ b.style.lineHeight = (100 * p2) + '%';
+ if (p == 1.0)
+ b.hide();
+}
+
+function fadeOut(p) {
+}
+
+function ticker() {
+ tickerHead.show();
+ Bytex64.FX.run(tickerFader.curry(tickerHead, tickerTail), 0.5);
+ tickerHead = tickerHead.nextSibling;
+ tickerTail = tickerTail.nextSibling;
+ if (tickerHead == null) {
+ stopTicker();
+ loadLatest.delay(10);
+ }
+}
+
+function startTicker() {
+ stopTicker();
+ for (var elem = $('latest-posts').firstChild; elem != null; elem = elem.nextSibling) {
+ elem.hide();
+ }
+
+ // Show the first five
+ tickerHead = $('latest-posts').firstChild;
+ for (var i = 0; i < 5 && tickerHead; i++) {
+ tickerHead.show();
+ tickerHead = tickerHead.nextSibling;
+ }
+ tickerTail = $('latest-posts').firstChild;
+ tickerTimer = setInterval(ticker, 5000);
+}
+
+function stopTicker() {
+ if (tickerTimer)
+ clearInterval(tickerTimer);
+ tickerTimer = null;
+}
+
+function loadLatest() {
+ new Ajax.Request(baseURL + '/latest.json', {
+ onSuccess: function(r) {
+ var j = r.responseText.evalJSON();
+
+ $('latest-tags').update();
+ j.tags.each(function(v) {
+ var a = new Element('a', {href: '/#tag/' + v});
+ a.insert('#' + v);
+ $('latest-tags').insert(a);
+ $('latest-tags').appendChild(document.createTextNode(' '));
+ });
+
+ $('latest-posts').update();
+ j.records.each(function(v) {
+ v.data = v.data.replace(/&/g, '&').replace(//g, '>');
+ v.date = (new Date(v.timestamp * 1000)).toString();
+ var html = latestRecordsTemplate.evaluate(v);
+ $('latest-posts').insert(html);
+ });
+ startTicker();
+ }
+ });
+}
+
function hashSwitch() {
var m;
+ stopTicker();
if (m = location.search.match(/^\?post\/([^/]+)\/(.+)/)) {
$('post').show();
$('post.content').value = '[' + decodeURIComponent(m[1]).replace(']','').replace('[','') + '](' + decodeURIComponent(m[2]) + ')';
- } else if (m = location.hash.match(/^#(ref|tag)\/(\w+)$/)) {
+ } else if (m = location.hash.match(/^#(ref|tag)\/([A-Za-z0-9_-]+)$/)) {
currentPager = new Tag(m[1], m[2]);
currentPager.show();
- } else if (m = location.hash.match(/^#(\w+)(:(\d+))?$/)) {
+ } else if (m = location.hash.match(/^#([A-Za-z0-9_-]+)(:(\d+))?$/)) {
if (!currentPager || currentPager.username != m[1])
currentPager = new User(m[1]);
currentPager.show();
@@ -433,6 +517,7 @@ function hashSwitch() {
$('older_link').hide();
$('welcome').show();
$('rss').hide();
+ loadLatest();
}
}