Skip to content
Browse files

Adding waypoint and paging in events

  • Loading branch information...
1 parent cefa4c1 commit 33b915adefdd88a63d85f48e5969a8aaeb4af1bf @zmoazeni committed May 9, 2012
Showing with 126 additions and 70 deletions.
  1. +33 −6 coffee/site.coffee
  2. +4 −45 coffee/views.coffee
  3. +9 −4 css/site.css
  4. +2 −1 index.html
  5. +8 −0 js-lib/jquery.waypoints.min.js
  6. +2 −0 js-lib/spin.min.js
  7. +61 −12 js/site.js
  8. +2 −2 js/views.js
  9. +5 −0 sass/site.scss
View
39 coffee/site.coffee
@@ -37,7 +37,7 @@ class Event extends Spine.Model
@configure "Event", "type", "public", "repo", "created_at", "actor", "id", "payload"
@include TimeStamps
- @fetchPages: (user, callback, page = 1) ->
+ @fetchPages: (user, page, callback) ->
max = page + 2 # pulls down 3 pages at a time
fetchHelper = (currentPage, events, callback) =>
console.log("Fetching event page #{currentPage}")
@@ -47,18 +47,23 @@ class Event extends Spine.Model
$.each(response.data, (i, eventData) -> events.push(new Event(eventData)))
if currentPage < max && hasMorePages(response.meta)
fetchHelper(currentPage + 1, events, callback)
- else
+ else if hasMorePages(response.meta)
callback([currentPage + 1, events])
+ else
+ callback([-1, events])
+
fetchHelper(page, [], callback)
viewType: ->
switch @type
when "PullRequestReviewCommentEvent" then "pull_request_comment"
- when "IssueCommentEvent" then "issue_comment"
+ when "IssueCommentEvent"
+ if @payload.issue then "issue_comment" else "skip"
when "IssuesEvent"
if @payload.action == "opened" then "issue" else "skip"
- when "CommitCommentEvent" then "commit_comment"
+ when "CommitCommentEvent"
+ if @payload.comment then "commit_comment" else "skip"
when "ForkEvent" then "fork"
when "FollowEvent" then "follow"
when "PullRequestEvent"
@@ -71,7 +76,7 @@ class Event extends Spine.Model
if @payload.ref == "master" then "skip" else "branch"
else @payload.ref_type
when "PushEvent"
- if @payload.commits.length > 0 then "push" else "skip"
+ if @payload.commits?.length > 0 then "push" else "skip"
else "item"
viewInfo: ->
@@ -183,6 +188,7 @@ class window.App extends Spine.Controller
"#content": "content"
"#timeline":"timeline"
"#joined": "joined"
+ "#spinner": "spinner"
events:
"submit form":"search"
@@ -212,17 +218,38 @@ class window.App extends Spine.Controller
@timeline.masonry()
@page = 1
- Event.fetchPages user, ([page, events]) =>
+ @fetchSomeEvents()
+
+ fetchSomeEvents: =>
+ Event.fetchPages @user, @page, ([page, events]) =>
+ @startSpinner()
@page = page
events.forEach((event) -> event.save())
sorted = events.sort((a, b) -> b.created_at_date() - a.created_at_date())
+ @stopSpinner()
@appendEvents(sorted)
+ startSpinner: =>
+ @joined.before(@view("spinner"))
+ @refreshElements()
+ @refreshTimeline()
+ new Spinner().spin(@spinner[0])
+
+ stopSpinner: => @spinner.remove()
+
appendEvents: (events) ->
events.forEach (event) =>
[viewType, viewArgs] = event.viewInfo()
@joined.before(@view(viewType, viewArgs)) if viewType
@refreshTimeline()
+ @attachWaypoint()
+
+ attachWaypoint: ->
+ if @page != -1
+ @joined.waypoint (e, direction) =>
+ if direction == "down"
+ @fetchSomeEvents()
+ , {offset: 'bottom-in-view', triggerOnce:true}
placeArrows: ->
min_max = $.unique(@timeline.find(".item").map((e) -> parseInt($(this).css("left")) )).sort()
View
49 coffee/views.coffee
@@ -52,6 +52,10 @@ views["show"] = """
</div>
"""
+views["spinner"] = """
+<li id="spinner" class="prominent"></li>
+"""
+
views["item"] = """
<li class="item" data-id="{{id}}">
<span class="corner"></span>
@@ -179,48 +183,3 @@ views["follow"] = """
views["joined"] = """
<li id="joined" class="prominent"><div class="well">Joined: {{user.created_at_string}}</div></li>
"""
-
-views["static"] = """
- <header>
- <h1><img src="https://secure.gravatar.com/avatar/d46a89672353a9c5258e187c8095ea40?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png" alt="zmoazeni's gravatar" /> Zach Moazeni (zmoazeni)</h1>
- <ul>
- <li>blog: http://collectiveidea.com</li>
- <li>email: zach.moazeni@gmail.com</li>
- </ul>
- </header>
- <div id="recent-repos">
- <h1>Recent Repos</h1>
- <ol>
- <li><a href="https://github.com/zmoazeni/my_styles.git">my_styles</a> - My custom generators</li>
- <li><a href="https://github.com/zmoazeni/my_styles.git">harvested</a> - A Ruby Wrapper for the Harvest API http://www.getharvest.com/</li>
- <li><a href="https://github.com/zmoazeni/my_styles.git">karkeze</a> - Experimenting with Haskell and Full Text Search</li>
- </ol>
- </div>
-
- <div id="recent-gists">
- <h1>Recent Gists</h1>
- <ol>
- <li><a href="">https://api.github.com/gists/2550988</a></li>
- <li><a href="">https://api.github.com/gists/2512012</a></li>
- <li><a href="">https://api.github.com/gists/2550988</a></li>
- </ol>
- </div>
-
- <section>
- <div id="timeline-line">
- </div>
-
- <ol id="timeline">
- <li style="height: 80px"><span class="corner"></span>foo</li>
- <li><span class="corner"></span>bar</li>
- <li><span class="corner"></span>foo asdlfj asdlfkj asdlfkj a alfkj aslfkj asf
- ajf
- a dflaskjdf alsdkfj aslfkj asdlfkj aslfkajs flaksjdf alskjfaslkfj aslfkj aslfkj aslfkjsa flkasjflaskjf aslkjf salkfj aslkfj aslfkjas lfkjsa lfakjs flksaj fl</li>
- <li><span class="corner"></span>bar</li>
- <li><span class="corner"></span>foo</li>
- <li><span class="corner"></span>bar</li>
- <li><span class="corner"></span>foo</li>
- <li><span class="corner"></span>bar</li>
- </ol>
- </section>
-"""
View
13 css/site.css
@@ -70,10 +70,15 @@ section {
width: 220px;
}
/* line 69, ../sass/site.scss */
+#timeline #spinner {
+ height: 100px;
+ padding-left: 270px;
+}
+/* line 74, ../sass/site.scss */
#timeline .item, #timeline .prominent {
margin-top: 20px;
}
-/* line 73, ../sass/site.scss */
+/* line 78, ../sass/site.scss */
#timeline .corner {
display: block;
height: 15px;
@@ -84,18 +89,18 @@ section {
position: absolute;
margin-top: 8px;
}
-/* line 84, ../sass/site.scss */
+/* line 89, ../sass/site.scss */
#timeline li[data-align=l] .corner {
background: url("../img/right.png") no-repeat top right;
margin-left: 398px;
}
-/* line 89, ../sass/site.scss */
+/* line 94, ../sass/site.scss */
#timeline li[data-align=r] .corner {
background: url("../img/left.png") no-repeat top right;
margin-left: -23px;
}
-/* line 95, ../sass/site.scss */
+/* line 100, ../sass/site.scss */
footer {
clear: both;
}
View
3 index.html
@@ -19,9 +19,10 @@
</div>
<script src="js-lib/date.js" type="text/javascript"></script>
+ <script src="js-lib/spin.min.js" type="text/javascript"></script>
<script src="js-lib/jquery.min.js" type="text/javascript"></script>
<script src="js-lib/jquery.masonry.min.js" type="text/javascript"></script>
- <script src="js-lib/bootstrap.min.js" type="text/javascript"></script>
+ <script src="js-lib/jquery.waypoints.min.js" type="text/javascript"></scri <script src="js-lib/bootstrap.min.js" type="text/javascript"></script>
<script src="js-lib/spine/spine.js" type="text/javascript"></script>
<script src="js-lib/spine/route.js" type="text/javascript"></script>
<script src="js-lib/mustache.js" type="text/javascript"></script>
View
8 js-lib/jquery.waypoints.min.js
@@ -0,0 +1,8 @@
+/*
+jQuery Waypoints - v1.1.6
+Copyright (c) 2011-2012 Caleb Troughton
+Dual licensed under the MIT license and GPL license.
+https://github.com/imakewebthings/jquery-waypoints/blob/master/MIT-license.txt
+https://github.com/imakewebthings/jquery-waypoints/blob/master/GPL-license.txt
+*/
+(function($,k,m,i,d){var e=$(i),g="waypoint.reached",b=function(o,n){o.element.trigger(g,n);if(o.options.triggerOnce){o.element[k]("destroy")}},h=function(p,o){if(!o){return -1}var n=o.waypoints.length-1;while(n>=0&&o.waypoints[n].element[0]!==p[0]){n-=1}return n},f=[],l=function(n){$.extend(this,{element:$(n),oldScroll:0,waypoints:[],didScroll:false,didResize:false,doScroll:$.proxy(function(){var q=this.element.scrollTop(),p=q>this.oldScroll,s=this,r=$.grep(this.waypoints,function(u,t){return p?(u.offset>s.oldScroll&&u.offset<=q):(u.offset<=s.oldScroll&&u.offset>q)}),o=r.length;if(!this.oldScroll||!q){$[m]("refresh")}this.oldScroll=q;if(!o){return}if(!p){r.reverse()}$.each(r,function(u,t){if(t.options.continuous||u===o-1){b(t,[p?"down":"up"])}})},this)});$(n).bind("scroll.waypoints",$.proxy(function(){if(!this.didScroll){this.didScroll=true;i.setTimeout($.proxy(function(){this.doScroll();this.didScroll=false},this),$[m].settings.scrollThrottle)}},this)).bind("resize.waypoints",$.proxy(function(){if(!this.didResize){this.didResize=true;i.setTimeout($.proxy(function(){$[m]("refresh");this.didResize=false},this),$[m].settings.resizeThrottle)}},this));e.load($.proxy(function(){this.doScroll()},this))},j=function(n){var o=null;$.each(f,function(p,q){if(q.element[0]===n){o=q;return false}});return o},c={init:function(o,n){this.each(function(){var u=$.fn[k].defaults.context,q,t=$(this);if(n&&n.context){u=n.context}if(!$.isWindow(u)){u=t.closest(u)[0]}q=j(u);if(!q){q=new l(u);f.push(q)}var p=h(t,q),s=p<0?$.fn[k].defaults:q.waypoints[p].options,r=$.extend({},s,n);r.offset=r.offset==="bottom-in-view"?function(){var v=$.isWindow(u)?$[m]("viewportHeight"):$(u).height();return v-$(this).outerHeight()}:r.offset;if(p<0){q.waypoints.push({element:t,offset:null,options:r})}else{q.waypoints[p].options=r}if(o){t.bind(g,o)}if(n&&n.handler){t.bind(g,n.handler)}});$[m]("refresh");return this},remove:function(){return this.each(function(o,p){var n=$(p);$.each(f,function(r,s){var q=h(n,s);if(q>=0){s.waypoints.splice(q,1);if(!s.waypoints.length){s.element.unbind("scroll.waypoints resize.waypoints");f.splice(r,1)}}})})},destroy:function(){return this.unbind(g)[k]("remove")}},a={refresh:function(){$.each(f,function(r,s){var q=$.isWindow(s.element[0]),n=q?0:s.element.offset().top,p=q?$[m]("viewportHeight"):s.element.height(),o=q?0:s.element.scrollTop();$.each(s.waypoints,function(u,x){if(!x){return}var t=x.options.offset,w=x.offset;if(typeof x.options.offset==="function"){t=x.options.offset.apply(x.element)}else{if(typeof x.options.offset==="string"){var v=parseFloat(x.options.offset);t=x.options.offset.indexOf("%")?Math.ceil(p*(v/100)):v}}x.offset=x.element.offset().top-n+o-t;if(x.options.onlyOnScroll){return}if(w!==null&&s.oldScroll>w&&s.oldScroll<=x.offset){b(x,["up"])}else{if(w!==null&&s.oldScroll<w&&s.oldScroll>=x.offset){b(x,["down"])}else{if(!w&&o>x.offset){b(x,["down"])}}}});s.waypoints.sort(function(u,t){return u.offset-t.offset})})},viewportHeight:function(){return(i.innerHeight?i.innerHeight:e.height())},aggregate:function(){var n=$();$.each(f,function(o,p){$.each(p.waypoints,function(q,r){n=n.add(r.element)})});return n}};$.fn[k]=function(n){if(c[n]){return c[n].apply(this,Array.prototype.slice.call(arguments,1))}else{if(typeof n==="function"||!n){return c.init.apply(this,arguments)}else{if(typeof n==="object"){return c.init.apply(this,[null,n])}else{$.error("Method "+n+" does not exist on jQuery "+k)}}}};$.fn[k].defaults={continuous:true,offset:0,triggerOnce:false,context:i};$[m]=function(n){if(a[n]){return a[n].apply(this)}else{return a.aggregate()}};$[m].settings={resizeThrottle:200,scrollThrottle:100};e.load(function(){$[m]("refresh")})})(jQuery,"waypoint","waypoints",window);
View
2 js-lib/spin.min.js
@@ -0,0 +1,2 @@
+//fgnass.github.com/spin.js#v1.2.5
+(function(a,b,c){function g(a,c){var d=b.createElement(a||"div"),e;for(e in c)d[e]=c[e];return d}function h(a){for(var b=1,c=arguments.length;b<c;b++)a.appendChild(arguments[b]);return a}function j(a,b,c,d){var g=["opacity",b,~~(a*100),c,d].join("-"),h=.01+c/d*100,j=Math.max(1-(1-a)/b*(100-h),a),k=f.substring(0,f.indexOf("Animation")).toLowerCase(),l=k&&"-"+k+"-"||"";return e[g]||(i.insertRule("@"+l+"keyframes "+g+"{"+"0%{opacity:"+j+"}"+h+"%{opacity:"+a+"}"+(h+.01)+"%{opacity:1}"+(h+b)%100+"%{opacity:"+a+"}"+"100%{opacity:"+j+"}"+"}",0),e[g]=1),g}function k(a,b){var e=a.style,f,g;if(e[b]!==c)return b;b=b.charAt(0).toUpperCase()+b.slice(1);for(g=0;g<d.length;g++){f=d[g]+b;if(e[f]!==c)return f}}function l(a,b){for(var c in b)a.style[k(a,c)||c]=b[c];return a}function m(a){for(var b=1;b<arguments.length;b++){var d=arguments[b];for(var e in d)a[e]===c&&(a[e]=d[e])}return a}function n(a){var b={x:a.offsetLeft,y:a.offsetTop};while(a=a.offsetParent)b.x+=a.offsetLeft,b.y+=a.offsetTop;return b}var d=["webkit","Moz","ms","O"],e={},f,i=function(){var a=g("style");return h(b.getElementsByTagName("head")[0],a),a.sheet||a.styleSheet}(),o={lines:12,length:7,width:5,radius:10,rotate:0,color:"#000",speed:1,trail:100,opacity:.25,fps:20,zIndex:2e9,className:"spinner",top:"auto",left:"auto"},p=function q(a){if(!this.spin)return new q(a);this.opts=m(a||{},q.defaults,o)};p.defaults={},m(p.prototype,{spin:function(a){this.stop();var b=this,c=b.opts,d=b.el=l(g(0,{className:c.className}),{position:"relative",zIndex:c.zIndex}),e=c.radius+c.length+c.width,h,i;a&&(a.insertBefore(d,a.firstChild||null),i=n(a),h=n(d),l(d,{left:(c.left=="auto"?i.x-h.x+(a.offsetWidth>>1):c.left+e)+"px",top:(c.top=="auto"?i.y-h.y+(a.offsetHeight>>1):c.top+e)+"px"})),d.setAttribute("aria-role","progressbar"),b.lines(d,b.opts);if(!f){var j=0,k=c.fps,m=k/c.speed,o=(1-c.opacity)/(m*c.trail/100),p=m/c.lines;!function q(){j++;for(var a=c.lines;a;a--){var e=Math.max(1-(j+a*p)%m*o,c.opacity);b.opacity(d,c.lines-a,e,c)}b.timeout=b.el&&setTimeout(q,~~(1e3/k))}()}return b},stop:function(){var a=this.el;return a&&(clearTimeout(this.timeout),a.parentNode&&a.parentNode.removeChild(a),this.el=c),this},lines:function(a,b){function e(a,d){return l(g(),{position:"absolute",width:b.length+b.width+"px",height:b.width+"px",background:a,boxShadow:d,transformOrigin:"left",transform:"rotate("+~~(360/b.lines*c+b.rotate)+"deg) translate("+b.radius+"px"+",0)",borderRadius:(b.width>>1)+"px"})}var c=0,d;for(;c<b.lines;c++)d=l(g(),{position:"absolute",top:1+~(b.width/2)+"px",transform:b.hwaccel?"translate3d(0,0,0)":"",opacity:b.opacity,animation:f&&j(b.opacity,b.trail,c,b.lines)+" "+1/b.speed+"s linear infinite"}),b.shadow&&h(d,l(e("#000","0 0 4px #000"),{top:"2px"})),h(a,h(d,e(b.color,"0 0 1px rgba(0,0,0,.1)")));return a},opacity:function(a,b,c){b<a.childNodes.length&&(a.childNodes[b].style.opacity=c)}}),!function(){function a(a,b){return g("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">',b)}var b=l(g("group"),{behavior:"url(#default#VML)"});!k(b,"transform")&&b.adj?(i.addRule(".spin-vml","behavior:url(#default#VML)"),p.prototype.lines=function(b,c){function f(){return l(a("group",{coordsize:e+" "+e,coordorigin:-d+" "+ -d}),{width:e,height:e})}function k(b,e,g){h(i,h(l(f(),{rotation:360/c.lines*b+"deg",left:~~e}),h(l(a("roundrect",{arcsize:1}),{width:d,height:c.width,left:c.radius,top:-c.width>>1,filter:g}),a("fill",{color:c.color,opacity:c.opacity}),a("stroke",{opacity:0}))))}var d=c.length+c.width,e=2*d,g=-(c.width+c.length)*2+"px",i=l(f(),{position:"absolute",top:g,left:g}),j;if(c.shadow)for(j=1;j<=c.lines;j++)k(j,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(j=1;j<=c.lines;j++)k(j);return h(b,i)},p.prototype.opacity=function(a,b,c,d){var e=a.firstChild;d=d.shadow&&d.lines||0,e&&b+d<e.childNodes.length&&(e=e.childNodes[b+d],e=e&&e.firstChild,e=e&&e.firstChild,e&&(e.opacity=c))}):f=k(b,"animation")}(),a.Spinner=p})(window,document);
View
73 js/site.js
@@ -96,12 +96,9 @@
Event.include(TimeStamps);
- Event.fetchPages = function(user, callback, page) {
+ Event.fetchPages = function(user, page, callback) {
var fetchHelper, max,
_this = this;
- if (page == null) {
- page = 1;
- }
max = page + 2;
fetchHelper = function(currentPage, events, callback) {
var url;
@@ -113,20 +110,28 @@
});
if (currentPage < max && hasMorePages(response.meta)) {
return fetchHelper(currentPage + 1, events, callback);
- } else {
+ } else if (hasMorePages(response.meta)) {
return callback([currentPage + 1, events]);
+ } else {
+ return callback([-1, events]);
}
});
};
return fetchHelper(page, [], callback);
};
Event.prototype.viewType = function() {
+ var _ref;
switch (this.type) {
case "PullRequestReviewCommentEvent":
return "pull_request_comment";
case "IssueCommentEvent":
- return "issue_comment";
+ if (this.payload.issue) {
+ return "issue_comment";
+ } else {
+ return "skip";
+ }
+ break;
case "IssuesEvent":
if (this.payload.action === "opened") {
return "issue";
@@ -135,7 +140,12 @@
}
break;
case "CommitCommentEvent":
- return "commit_comment";
+ if (this.payload.comment) {
+ return "commit_comment";
+ } else {
+ return "skip";
+ }
+ break;
case "ForkEvent":
return "fork";
case "FollowEvent":
@@ -168,7 +178,7 @@
}
break;
case "PushEvent":
- if (this.payload.commits.length > 0) {
+ if (((_ref = this.payload.commits) != null ? _ref.length : void 0) > 0) {
return "push";
} else {
return "skip";
@@ -343,7 +353,8 @@
"#messages": "messages",
"#content": "content",
"#timeline": "timeline",
- "#joined": "joined"
+ "#joined": "joined",
+ "#spinner": "spinner"
};
App.prototype.events = {
@@ -360,6 +371,12 @@
this.navigateTo = __bind(this.navigateTo, this);
+ this.stopSpinner = __bind(this.stopSpinner, this);
+
+ this.startSpinner = __bind(this.startSpinner, this);
+
+ this.fetchSomeEvents = __bind(this.fetchSomeEvents, this);
+
this.renderUser = __bind(this.renderUser, this);
var _this = this;
@@ -381,7 +398,6 @@
}
App.prototype.renderUser = function(user) {
- var _this = this;
Repo.fetch(user);
this.content.html(this.view("show", {
user: user
@@ -392,20 +408,38 @@
this.refreshElements();
this.timeline.masonry();
this.page = 1;
- return Event.fetchPages(user, function(_arg) {
+ return this.fetchSomeEvents();
+ };
+
+ App.prototype.fetchSomeEvents = function() {
+ var _this = this;
+ return Event.fetchPages(this.user, this.page, function(_arg) {
var events, page, sorted;
page = _arg[0], events = _arg[1];
+ _this.startSpinner();
_this.page = page;
events.forEach(function(event) {
return event.save();
});
sorted = events.sort(function(a, b) {
return b.created_at_date() - a.created_at_date();
});
+ _this.stopSpinner();
return _this.appendEvents(sorted);
});
};
+ App.prototype.startSpinner = function() {
+ this.joined.before(this.view("spinner"));
+ this.refreshElements();
+ this.refreshTimeline();
+ return new Spinner().spin(this.spinner[0]);
+ };
+
+ App.prototype.stopSpinner = function() {
+ return this.spinner.remove();
+ };
+
App.prototype.appendEvents = function(events) {
var _this = this;
events.forEach(function(event) {
@@ -415,7 +449,22 @@
return _this.joined.before(_this.view(viewType, viewArgs));
}
});
- return this.refreshTimeline();
+ this.refreshTimeline();
+ return this.attachWaypoint();
+ };
+
+ App.prototype.attachWaypoint = function() {
+ var _this = this;
+ if (this.page !== -1) {
+ return this.joined.waypoint(function(e, direction) {
+ if (direction === "down") {
+ return _this.fetchSomeEvents();
+ }
+ }, {
+ offset: 'bottom-in-view',
+ triggerOnce: true
+ });
+ }
};
App.prototype.placeArrows = function() {
View
4 js/views.js
@@ -18,6 +18,8 @@
views["show"] = "<header class=\"page-header well row\">\n <div class=\"span1\"><img src=\"{{user.avatar_url}}\" alt=\"image of {{user.name}}\"/></div>\n <div class=\"span5\">\n <h1>{{user.name}} <a href=\"{{user.html_url}}\">{{user.login}}</a></h1>\n <ul>\n {{#user.email}}\n <li>Email: <a href=\"mailto:{{user.email}}\">{{user.email}}</a></li>\n {{/user.email}}\n\n {{#user.company}}\n <li>Company: {{user.company}}</li>\n {{/user.company}}\n\n {{#user.created_at}}\n <li>Joined: {{user.created_at_string}}</li>\n {{/user.created_at}}\n </ul>\n </div>\n</header>\n\n<div id=\"timeline-container\" class=\"row offset1\">\n <div id=\"timeline-line\">\n </div>\n\n <ol id=\"timeline\">\n </ol>\n</div>";
+ views["spinner"] = "<li id=\"spinner\" class=\"prominent\"></li>";
+
views["item"] = "<li class=\"item\" data-id=\"{{id}}\">\n <span class=\"corner\"></span>\n {{title}}\n <span class=\"date\">{{date}}</span>\n</li>";
views["push"] = "<li class=\"item\" data-id=\"{{id}}\">\n <span class=\"corner\"></span>\n <h1>Pushed {{num}} commit(s) to <a href=\"repo_url\">{{repo}}</a></h1>\n <ol class=\"commits\">\n {{#commits}}\n <li {{#hidden}}style=\"display:none;\" data-more{{/hidden}}><a href=\"{{commit_url}}\">{{commit}}</a></li>\n {{/commits}}\n\n {{#more}}\n <li data-more-placeholder>...</li>\n {{/more}}\n </ol>\n {{#more}}\n <div><a href=\"#\" data-show-more data-alt=\"less\" data-toggled=false>more</a></div>\n {{/more}}\n <span class=\"date\">{{date}}</span>\n</li>";
@@ -46,6 +48,4 @@
views["joined"] = "<li id=\"joined\" class=\"prominent\"><div class=\"well\">Joined: {{user.created_at_string}}</div></li>";
- views["static"] = "<header>\n <h1><img src=\"https://secure.gravatar.com/avatar/d46a89672353a9c5258e187c8095ea40?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png\" alt=\"zmoazeni's gravatar\" /> Zach Moazeni (zmoazeni)</h1>\n <ul>\n <li>blog: http://collectiveidea.com</li>\n <li>email: zach.moazeni@gmail.com</li>\n </ul>\n</header>\n<div id=\"recent-repos\">\n <h1>Recent Repos</h1>\n <ol>\n <li><a href=\"https://github.com/zmoazeni/my_styles.git\">my_styles</a> - My custom generators</li>\n <li><a href=\"https://github.com/zmoazeni/my_styles.git\">harvested</a> - A Ruby Wrapper for the Harvest API http://www.getharvest.com/</li>\n <li><a href=\"https://github.com/zmoazeni/my_styles.git\">karkeze</a> - Experimenting with Haskell and Full Text Search</li>\n </ol>\n</div>\n\n<div id=\"recent-gists\">\n <h1>Recent Gists</h1>\n <ol>\n <li><a href=\"\">https://api.github.com/gists/2550988</a></li>\n <li><a href=\"\">https://api.github.com/gists/2512012</a></li>\n <li><a href=\"\">https://api.github.com/gists/2550988</a></li>\n </ol>\n</div>\n\n<section>\n <div id=\"timeline-line\">\n </div>\n\n <ol id=\"timeline\">\n <li style=\"height: 80px\"><span class=\"corner\"></span>foo</li>\n <li><span class=\"corner\"></span>bar</li>\n <li><span class=\"corner\"></span>foo asdlfj asdlfkj asdlfkj a alfkj aslfkj asf\n ajf\n a dflaskjdf alsdkfj aslfkj asdlfkj aslfkajs flaksjdf alskjfaslkfj aslfkj aslfkj aslfkjsa flkasjflaskjf aslkjf salkfj aslkfj aslfkjas lfkjsa lfakjs flksaj fl</li>\n <li><span class=\"corner\"></span>bar</li>\n <li><span class=\"corner\"></span>foo</li>\n <li><span class=\"corner\"></span>bar</li>\n <li><span class=\"corner\"></span>foo</li>\n <li><span class=\"corner\"></span>bar</li>\n </ol>\n</section>";
-
}).call(this);
View
5 sass/site.scss
@@ -66,6 +66,11 @@ section {
}
}
+ #spinner {
+ height: 100px;
+ padding-left: 270px;
+ }
+
.item, .prominent {
margin-top: 20px;
}

0 comments on commit 33b915a

Please sign in to comment.
Something went wrong with that request. Please try again.