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()