Browse Source

make sure to use preloaded results

pull/1/head
wes 8 years ago
parent
commit
493072060c
  1. 10
      src/posts.py
  2. 24
      src/scripts/browse.tag
  3. 10
      src/scripts/editor.tag

10
src/posts.py

@ -118,7 +118,12 @@ class Posts:
return jsonify(posts) return jsonify(posts)
def links(self, json=True): def links(self, json=True):
"""
Get the links we want to show
"""
result = list(self.db.iterview("blogPosts/links", 1, include_docs=True)) result = list(self.db.iterview("blogPosts/links", 1, include_docs=True))
# make sure there are results
if len(result) >= 1: if len(result) >= 1:
xs = result[0].doc.get("links", []) xs = result[0].doc.get("links", [])
return jsonify(xs) if json else xs return jsonify(xs) if json else xs
@ -134,6 +139,11 @@ class Posts:
return jsonify(False) return jsonify(False)
def categories(self): def categories(self):
"""
Get the full list of all categories
"""
# the view returns a list of lists of category names
# we want to get the unique ones in a flat list
return list(set(chain.from_iterable([ return list(set(chain.from_iterable([
c["key"][1] for c in c["key"][1] for c in
self.db.view("blogPosts/categories", self.db.view("blogPosts/categories",

24
src/scripts/browse.tag

@ -4,7 +4,11 @@
style={navStyle} style={navStyle}
class="container" class="container"
> >
<div class="columns"> <div
if={opts.state.pagenum > 0 ||
opts.state.results.length == pagesize}
class="columns"
>
<div class="col-4"> <div class="col-4">
<button <button
disabled={(opts.state.pagenum == 0) || loading} disabled={(opts.state.pagenum == 0) || loading}
@ -18,7 +22,9 @@
<div class="col-4"> <div class="col-4">
<button <button
class="btn btn-primary branded" class="btn btn-primary branded"
disabled={(opts.state.results.length != pagesize) || loading} disabled={((opts.state.results.length != pagesize) ||
loading ||
disabled)}
style={nextStyle} style={nextStyle}
onclick={getmore} onclick={getmore}
> >
@ -78,6 +84,7 @@ var self = this;
self.route = route; self.route = route;
self.loading = false; self.loading = false;
self.disabled = false;
self.converter = new showdown.Converter(); self.converter = new showdown.Converter();
self.pagesize = 4; self.pagesize = 4;
@ -116,6 +123,7 @@ self.filterCategories = (category) => {
self.route(`browse/${category}`); self.route(`browse/${category}`);
self.update({ self.update({
"disabled" : false,
"loading" : true "loading" : true
}); });
self.opts.state.pagenum = 0; self.opts.state.pagenum = 0;
@ -142,11 +150,11 @@ self.getPrev = (endkey) => {
else { else {
endpoint = `/blog/prevbrowse/${self.pagesize}/${endkey}`; endpoint = `/blog/prevbrowse/${self.pagesize}/${endkey}`;
} }
self.opts.state.pagenum--;
window.cached(endpoint) window.cached(endpoint)
.then((resp) => { return resp.json() }) .then((resp) => { return resp.json() })
.then((results) => { .then((results) => {
self.opts.state.pagenum--;
self.opts.state.results = results; self.opts.state.results = results;
self.update({ self.update({
"loading" : false "loading" : false
@ -164,12 +172,17 @@ self.getNext = (startkey) => {
else { else {
endpoint = `/blog/getbrowselim/${self.pagesize}/${startkey}`; endpoint = `/blog/getbrowselim/${self.pagesize}/${startkey}`;
} }
self.opts.state.pagenum++;
window.cached(endpoint) window.cached(endpoint)
.then((resp) => { return resp.json() }) .then((resp) => { return resp.json() })
.then((results) => { .then((results) => {
if (results.length > 0) {
self.opts.state.results = results; self.opts.state.results = results;
self.opts.state.pagenum++;
}
else {
self.disabled = true;
}
self.update({ self.update({
"loading" : false "loading" : false
}); });
@ -204,6 +217,9 @@ self.on("mount", () => {
if (!self.opts.state.category_filter && !self.opts.state.category_tag) { if (!self.opts.state.category_filter && !self.opts.state.category_tag) {
self.getInitial(); self.getInitial();
} }
else if (self.opts.state.results.length > 0 && !self.opts.state.category_tag) {
return;
}
else if (self.opts.state.category_tag) { else if (self.opts.state.category_tag) {
self.filterCategories(self.opts.state.category_tag)(); self.filterCategories(self.opts.state.category_tag)();
} }

10
src/scripts/editor.tag

@ -13,7 +13,7 @@
<div class="column col-6"> <div class="column col-6">
<button <button
style={{"float" : "right"}} style={{"float" : "right"}}
class="btn btn-primary" class="btn btn-primary branded"
onclick={goLeft} onclick={goLeft}
> >
Prev Prev
@ -22,7 +22,7 @@
<div class="column col-6"> <div class="column col-6">
<button <button
style={{"float" : "left"}} style={{"float" : "left"}}
class="btn btn-primary" class="btn btn-primary branded"
onclick={goRight} onclick={goRight}
> >
Next Next
@ -36,13 +36,13 @@
<span>Editing post {!this.isNewPost ? this._id : ""}</span> <span>Editing post {!this.isNewPost ? this._id : ""}</span>
<p> <p>
<button <button
class="btn btn-primary" class="btn btn-primary branded"
onclick={deletePost(!this.isNewPost ? this._id : false)} onclick={deletePost(!this.isNewPost ? this._id : false)}
> >
Delete Post Delete Post
</button> </button>
<button <button
class="btn btn-primary" class="btn btn-primary branded"
onclick={newPost} onclick={newPost}
> >
New Post New Post
@ -59,7 +59,7 @@
{ placeholder } { placeholder }
</textarea> </textarea>
<button onclick={submit} <button onclick={submit}
class="btn post-submit centered"> class="btn post-submit centered branded">
Submit Post Submit Post
</button> </button>
</p> </p>

Loading…
Cancel
Save