Browse Source

performance improvements

pull/1/head
wes 8 years ago
parent
commit
8c23887520
  1. 38
      src/scripts/app.tag
  2. 9
      src/scripts/post.tag
  3. 4
      src/scripts/postsview.tag
  4. 24
      src/scripts/riotblog.js
  5. 1
      src/styles/riotblog.scss
  6. 29
      src/templates/index.html
  7. 8
      src/website.py

38
src/scripts/app.tag

@ -27,12 +27,12 @@
class="mobile-menu tab tab-block menu"> class="mobile-menu tab tab-block menu">
<li <li
each="{page in ['posts', 'projects', 'links', 'about']}" each="{page in ['posts', 'projects', 'links', 'about']}"
class={"navigate-tab tab-item animated fadeIn " + (this.parent.active.get(page) ? "active" : "")} class={"navigate-tab tab-item animated fadeIn " + (parent.active.get(page) ? "active" : "")}
data-is="navtab" data-is="navtab"
active={this.parent.active.get(page)} active={parent.active.get(page)}
to={this.parent.to(page)} to={parent.to(page)}
title={page} title={page}
onclick={this.parent.menuOff} onclick={parent.menuOff}
> >
</li> </li>
</ul> </ul>
@ -41,20 +41,20 @@
<ul class="hide-md hide-sm hide-xs navigate tab tab-block"> <ul class="hide-md hide-sm hide-xs navigate tab tab-block">
<li <li
each="{page in ['posts', 'projects', 'links', 'about']}" each="{page in ['posts', 'projects', 'links', 'about']}"
class={"navigate-tab tab-item animated fadeIn " + (this.parent.active.get(page) ? "active" : "")} class={"navigate-tab tab-item animated fadeIn " + (parent.active.get(page) ? "active" : "")}
data-is="navtab" data-is="navtab"
active={this.parent.active.get(page)} active={parent.active.get(page)}
to={this.parent.to(page)} to={parent.to(page)}
title={page} title={page}
> >
</li> </li>
</ul> </ul>
<div class="projects-content"> <div class="projects-content">
<loading if={!this.state.loaded}></loading> <loading if={!state.loaded}></loading>
<projectsview <projectsview
class="animated fadeInDown" class="animated fadeInDown"
if={this.active.get("projects") && this.state.loaded} if={active.get("projects") && state.loaded}
state={this.state} state={state}
ref="projectsview" ref="projectsview"
> >
</projectsview> </projectsview>
@ -62,20 +62,20 @@
<div class="content"> <div class="content">
<postsview <postsview
cached={this.cached} cached={cached}
state={this.state} state={state}
if={this.active.get("posts")} if={active.get("posts")}
ref="postsview" ref="postsview"
> >
</postsview> </postsview>
<about <about
if={this.active.get("about")} if={active.get("about")}
> >
</about> </about>
<links <links
cached={this.cached} cached={cached}
state={this.state} state={state}
if={this.active.get("links")} if={active.get("links")}
> >
</links> </links>
</div> </div>
@ -90,6 +90,7 @@ import './links.tag';
import './loading.tag'; import './loading.tag';
import fetchCached from 'fetch-cached'; import fetchCached from 'fetch-cached';
import 'whatwg-fetch';
import Z from './zipper.js'; import Z from './zipper.js';
import pathEq from 'ramda/src/pathEq'; import pathEq from 'ramda/src/pathEq';
import route from 'riot-route'; import route from 'riot-route';
@ -189,7 +190,6 @@ var about = activate("about");
var links = activate("links"); var links = activate("links");
function posts(_id) { function posts(_id) {
console.log(self.state);
if (self.state._id != _id) { if (self.state._id != _id) {
self.state._id = _id; self.state._id = _id;
} }
@ -216,7 +216,7 @@ self.route("projects", projects);
self.route("about", about); self.route("about", about);
self.route("links", links); self.route("links", links);
self.on("mount", () => { self.one("updated", () => {
route.start(true); route.start(true);
}); });

9
src/scripts/post.tag

@ -63,7 +63,10 @@ self.prevloading = "";
self.nextloading = ""; self.nextloading = "";
self.content = ""; self.content = "";
self.swipe = false; self.swipe = false;
self.loading = self.opts.state.loaded;
self.on("mount", () => {
self.loading = self.opts.state.loaded;
});
RiotControl.on("filtercategory", RiotControl.on("filtercategory",
(ev) => { (ev) => {
@ -183,7 +186,9 @@ getPost(_id) {
.then((resp) => { self.updatePost(JSON.parse(resp)) }) .then((resp) => { self.updatePost(JSON.parse(resp)) })
} }
self.getPost(self.opts.state._id); self.on("mount", () => {
self.getPost(self.opts.state._id);
});
</script> </script>
</post> </post>

4
src/scripts/postsview.tag

@ -1,8 +1,8 @@
<postsview> <postsview>
<posts> <posts>
<post <post
cached={this.parent.opts.cached} cached={parent.opts.cached}
state={this.parent.opts.state} state={parent.opts.state}
> >
</post> </post>
</posts> </posts>

24
src/scripts/riotblog.js

@ -10,18 +10,20 @@ import { default as promise } from 'es6-promise';
import { default as smooth } from 'smoothscroll-polyfill'; import { default as smooth } from 'smoothscroll-polyfill';
import 'element-closest'; import 'element-closest';
promise.Promise.polyfill(); window.addEventListener("load", () => {
smooth.polyfill();
window.RiotControl = RiotControl; promise.Promise.polyfill();
smooth.polyfill();
RiotControl.addStore(new riot.observable()); window.RiotControl = RiotControl;
riot.mount("app"); RiotControl.addStore(new riot.observable());
riot.mount("post", riot.mount("app");
{ riot.mount("post",
"creator" : "author" {
}); "creator" : "author"
});
riot.mount("bbutton"); riot.mount("bbutton");
riot.mount("projects"); riot.mount("projects");
});

1
src/styles/riotblog.scss

@ -62,6 +62,7 @@ $navbarHeight: 100px;
border: none; border: none;
color: black !important; color: black !important;
text-decoration: none; text-decoration: none;
text-transform: capitalize;
&:hover { &:hover {
background-color: $brandingBG !important; background-color: $brandingBG !important;
} }

29
src/templates/index.html

@ -1,14 +1,12 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<head> <head>
<link rel="stylesheet" href="/styles/primop.me.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="fragment" content="!"> <meta name="fragment" content="!">
</head> </head>
<html> <html>
<body> <body>
<app csrf_token="{{ csrf_token() }}"></app> <div data-is="app" csrf_token="{{ csrf_token() }}"></div>
</body> </body>
<footer> <footer>
<script> <script>
@ -18,9 +16,9 @@
if (d.getElementById(id)) return t; if (d.getElementById(id)) return t;
js = d.createElement(s); js = d.createElement(s);
js.id = id; js.id = id;
js.async = true;
js.src = "https://platform.twitter.com/widgets.js"; js.src = "https://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs); fjs.parentNode.insertBefore(js, fjs);
t._e = []; t._e = [];
t.ready = function(f) { t.ready = function(f) {
t._e.push(f); t._e.push(f);
@ -29,15 +27,34 @@
return t; return t;
}(document, "script", "twitter-wjs")); }(document, "script", "twitter-wjs"));
</script> </script>
<div id="fb-root"></div> <div id="fb-root"></div>
<script>(function(d, s, id) { <script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0]; var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return; if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id; js = d.createElement(s); js.id = id;
js.async = true;
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.8"; js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.8";
fjs.parentNode.insertBefore(js, fjs); fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk')); }(document, 'script', 'facebook-jssdk'));
</script> </script>
<script type="text/javascript" src="/scripts/riotblog.min.js"></script>
<script type="text/javascript">
(function() {
function loadCSS(href) {
var css = document.createElement('link');
css.href = href;
css.rel = 'stylesheet';
css.type = 'text/css';
document.getElementsByTagName('head')[0].appendChild(css);
}
var hrefs = ['/styles/primop.me.min.css', 'https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css'];
for (var i = 0, l = hrefs.length; i < l; i++) {
loadCSS(hrefs[i]);
}
})();
</script>
<script async type="text/javascript" src="/scripts/riotblog.min.js"></script>
</footer> </footer>
</html> </html>

8
src/website.py

@ -170,6 +170,12 @@ def NeverWhere(configfile=None):
app = NeverWhere() app = NeverWhere()
@app.teardown_appcontext
def teardown_couchdb(exception):
posts = getattr(g, 'posts', None)
if posts is not None:
del posts.db
posts = LocalProxy(get_posts) posts = LocalProxy(get_posts)
login_manager.init_app(app) login_manager.init_app(app)
@ -179,4 +185,4 @@ csrf = CSRFProtect()
csrf.init_app(app) csrf.init_app(app)
if __name__ == "__main__": if __name__ == "__main__":
NeverWhere("./appconfig").run(host="localhost", port=8001, debug=True) NeverWhere().run(host="localhost", port=8001, debug=True)

Loading…
Cancel
Save