From 7c28f5b05e6c67858a46795e42d41b9ac1aa7716 Mon Sep 17 00:00:00 2001 From: Chip Black Date: Wed, 2 Mar 2011 03:53:15 -0800 Subject: [PATCH 1/1] Add permalink functionality, clean up page switching a little --- www/css/blerg.css | 4 ++++ www/js/blerg.js | 34 ++++++++++++++++++++++------------ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/www/css/blerg.css b/www/css/blerg.css index 3867c3b..1ceca6d 100644 --- a/www/css/blerg.css +++ b/www/css/blerg.css @@ -129,6 +129,10 @@ h1, h2, h3 { font-style: italic; } +.record .info a { + color: #8F8F8F; +} + #navigation { font-size: small; color: #8F8F8F; diff --git a/www/js/blerg.js b/www/js/blerg.js index 25f1e94..21d7d34 100644 --- a/www/js/blerg.js +++ b/www/js/blerg.js @@ -5,7 +5,7 @@ // Config var baseURL = ''; var recordTemplate = new Template( - '
#{data}
Posted #{date}
' + '
#{data}
Posted #{date}. [permalink]
' ); var tagRecordTemplate = new Template( '
#{data}
Posted by @#{author} on #{date}
' @@ -111,8 +111,7 @@ LoginStatus.prototype.post = function(msg) { qlink(this.username); } else { currentPager.itemCount++; - currentPager.pageStart = null; - currentPager.loadItems(); + currentPager.reload(); } } else { alert('Post failed!'); @@ -185,18 +184,29 @@ Pager.prototype.displayItems = function() { document.body.scrollTo(); } +Pager.prototype.reload = function() { + this.pageStart = null; + this.loadItems(null, null, Pager.prototype.showPageAt.bind(this, this.itemCount - 1)); +} + Pager.prototype.showPageAt = function(r) { var end = (r - 9 > 0 ? r - 9 : 0); if (this.itemCache[r] && this.itemCache[end]) { this.pageStart = r; this.displayItems(); } else { - this.loadItems((r >= 49 ? r - 49 : 0), r); + this.loadItems((r >= 49 ? r - 49 : 0), r, Pager.prototype.showPageAt.bind(this, r)); } } Pager.prototype.showRecord = function(r) { - this.showPageAt(r); + if (this.itemCache[r]) { + $('older_link').hide(); + $('newer_link').hide(); + items.update(this.itemCache[r].html); + } else { + this.loadItems(r, r, Pager.prototype.showRecord.bind(this, r)); + } } @@ -234,7 +244,8 @@ function User(username) { var j = r.responseText.evalJSON(); if (j) { this.itemCount = parseInt(j.record_count); - this.displayItems(); + if (!this.pageStart) + this.showPageAt(this.itemCount - 1); } }.bind(this) }); @@ -254,7 +265,7 @@ User.prototype.show = function() { $('usercontrols').show(); } -User.prototype.loadItems = function(from, to) { +User.prototype.loadItems = function(from, to, continuation) { var url; if (from != undefined && to != undefined) { url = baseURL + '/get/' + this.username + '/' + from + '-' + to; @@ -270,13 +281,14 @@ User.prototype.loadItems = function(from, to) { if (records && records.length > 0) { records.each(function(v) { v.id = v.record; + v.author = this.username; mangleRecord(v, recordTemplate); - }); + }.bind(this)); this.addItems(records); if (!this.pageStart) this.pageStart = records[0].recInt; } - this.displayItems(); + continuation(); }.bind(this), onFailure: function(r) { this.displayItems(); @@ -725,10 +737,8 @@ function hashSwitch() { } else { currentPager.showRecord(r); } - } else { - currentPager.pageStart = currentPager.itemCount - 1; - currentPager.loadItems(); } + // Do nothing otherwise, the User constructor takes care of it } else { $$('[name=section]').each(function(v) { v.update('Welcome') }); $('signup').hide(); -- 2.25.1