diff --git a/src/posts.py b/src/posts.py index 1305c72..eeeac88 100644 --- a/src/posts.py +++ b/src/posts.py @@ -145,14 +145,14 @@ class Posts: group=True) ]))) - def browse(self, limit, startkey, categories=[], json=True): + def browse(self, limit, startkey, categories=[], json=True, backwards=False): args = { "num" : limit, "categories" : dumps(categories) } if startkey: - args["startkey"] = startkey + args["endkey" if backwards else "startkey"] = startkey results = self.db.list( "blogPosts/categories", @@ -163,5 +163,4 @@ class Posts: for categories, post in results: post["content"] = markdown(post["content"]) posts.append([categories, post]) - return jsonify(posts) if json else posts diff --git a/src/scripts/browse.tag b/src/scripts/browse.tag index 192a1e9..eafd210 100644 --- a/src/scripts/browse.tag +++ b/src/scripts/browse.tag @@ -33,14 +33,27 @@ -
- +
+
+
+ +
+
+ +
+
@@ -62,7 +75,7 @@ self.loading = false; self.category = self.opts.state.category_filter; self.converter = new showdown.Converter(); self.lastkey = false; -self.pagesize = 5; +self.pagesize = 4; self.openPost = (id) => { return ((ev) => { @@ -91,7 +104,7 @@ self.filterCategories = (category) => { }); self.opts.state.category_filter = category; - window.cached(`/blog/getbrowse/${category}/${self.pagesize}/${self.lastkey ? self.lastkey : ""}`) + window.cached(`/blog/getbrowse/${category}/${self.pagesize}/${self.startkey ? self.startkey : ""}`) .then((resp) => { return resp.json() }) .then((results) => { self.opts.state.results = results; @@ -102,12 +115,34 @@ self.filterCategories = (category) => { }) } +self.getPrev = (endkey) => { + self.update({"loading" : true}); + var endpoint; + + if (self.category) { + endpoint = `/blog/prevbrowse/${self.opts.state.category_filter}/${self.pagesize}/${endkey}`; + } + else { + endpoint = `/blog/prevbrowse/${self.pagesize}/${endkey}`; + } + + window.cached(endpoint) + .then((resp) => { return resp.json() }) + .then((results) => { + self.opts.state.results = results; + self.update({ + "loading" : false, + "pagenum" : self.pagenum-1 + }); + }); +} + self.getNext = (startkey) => { self.update({"loading" : true}); var endpoint; if (self.category) { - endpoint = `/blog/getbrowse/${self.category}/${self.pagesize}/${startkey}`; + endpoint = `/blog/getbrowse/${self.opts.state.category_filter}/${self.pagesize}/${startkey}`; } else { endpoint = `/blog/getbrowselim/${self.pagesize}/${startkey}`; @@ -118,7 +153,8 @@ self.getNext = (startkey) => { .then((results) => { self.opts.state.results = results.slice(1, results.length); self.update({ - "loading" : false + "loading" : false, + "pagenum" : self.pagenum+1 }); }); } @@ -140,6 +176,11 @@ self.getmore = (ev) => { self.getNext(self.opts.state.results.slice(-1)[0][1].id) } +self.getprev = (ev) => { + ev.preventDefault(); + self.getPrev(self.opts.state.results[0][1].id) +} + self.on("mount", () => { if (!self.opts.state.category_filter && !self.opts.state.category_tag) { self.getInitial(); diff --git a/src/website.py b/src/website.py index bf1860b..49f4d15 100755 --- a/src/website.py +++ b/src/website.py @@ -163,7 +163,7 @@ def NeverWhere(configfile=None): @app.route("/blog/browse//") def browse_categories(category, start): - results = posts.browse(5, start*5, categories=[category], json=False) + results = posts.browse(4, start*4, categories=[category], json=False) return render_template("index.html", page="browse", start=start, @@ -262,6 +262,7 @@ def NeverWhere(configfile=None): def getbrowse(limit, startkey): return posts.browse(limit, startkey) + # forwards pagination @app.route("/blog/getbrowse///") def getbycategory(category, limit, startkey): return posts.browse(limit, startkey, categories=[category]) @@ -269,6 +270,16 @@ def NeverWhere(configfile=None): @app.route("/blog/getbrowse///") def getbycategoryinitial(category, limit): return posts.browse(limit, False, categories=[category]) + + # backwards pagination + @app.route("/blog/prevbrowse//") + def prevbrowse(limit, endkey): + return posts.browse(limit, endkey, backwards=True) + + @app.route("/blog/prevbrowse///") + def prevbycategory(category, limit, endkey): + return posts.browse(limit, endkey, categories=[category], backwards=True) + return app app = NeverWhere()