optimize performance for site profile render

This commit is contained in:
Kyle Drake 2014-06-05 01:23:10 -07:00
parent 13988ad74a
commit e1eb377a92
8 changed files with 38 additions and 171 deletions

View file

@ -5,7 +5,7 @@ class Comment < Sequel::Model
one_to_many :comment_likes one_to_many :comment_likes
def liking_site_names def liking_site_names
comment_likes.collect {|comment_like| comment_like.actioning_site.username } comment_likes_dataset.select(:id, :actioning_site_id).all.collect {|comment_like| comment_like.actioning_site_dataset.select(:username).first.username }
end end
def site_likes?(site) def site_likes?(site)

View file

@ -18,7 +18,7 @@ class Event < Sequel::Model
end end
def liking_site_names def liking_site_names
likes.collect {|like| like.actioning_site.username } likes_dataset.select(:actioning_site_id).all.collect {|like| like.actioning_site_dataset.select(:username).first.username }
end end
def add_site_comment(site, message) def add_site_comment(site, message)

View file

@ -6,7 +6,7 @@ class SiteChange < Sequel::Model
one_to_many :site_change_files one_to_many :site_change_files
def site_change_filenames(limit=4) def site_change_filenames(limit=4)
site_change_files[0..limit-1].collect {|f| f.filename}.sort_by {|f| f.match('html') ? 0 : 1} site_change_files_dataset.select(:filename).limit(limit).all.collect {|f| f.filename}.sort_by {|f| f.match('html') ? 0 : 1}
end end
def self.record(site, filename) def self.record(site, filename)

View file

@ -1,24 +1,26 @@
<% if (!is_current_site && site.followings_dataset.count > 0) || is_current_site %> <% site_followings = site.followings %>
<% if (!is_current_site && !site_followings.empty?) || is_current_site %>
<h3><%= is_current_site ? 'You follow' : 'This site follows' %></h3> <h3><%= is_current_site ? 'You follow' : 'This site follows' %></h3>
<div class="following"> <div class="following">
<% if site.followings_dataset.count == 0 %> <% if site_followings.empty? %>
<p>You are not following any sites yet. Add some by <a href="/browse">browsing sites</a> or looking at your tags. <p>You are not following any sites yet. Add some by <a href="/browse">browsing sites</a> or looking at your tags.
<% else %> <% else %>
<% site.followings.each do |following| %> <% site.followings_dataset.select(:site_id).all.each do |following| %>
<a href="/site/<%= following.site.username %>"><img src="<%= site.screenshot_path 'index.html', '37x37' %>" class="avatar"></a> <a href="/site/<%= following.site_dataset.select(:username).first.username %>"><img src="<%= site.screenshot_path 'index.html', '37x37' %>" class="avatar"></a>
<% end %> <% end %>
<% end %> <% end %>
</div> </div>
<% end %> <% end %>
<% if (!is_current_site && site.follows_dataset.count > 0) || is_current_site %> <% if (!is_current_site && !site_followings.empty?) || is_current_site %>
<h3>Followers</h3> <h3>Followers</h3>
<div class="following"> <div class="following">
<% if site.follows_dataset.count == 0 %> <% if site_followings.empty? %>
No followers yet. No followers yet.
<% else %> <% else %>
<% site.follows.each do |follow| %> <% site.follows_dataset.select(:actioning_site_id).all.each do |follow| %>
<a href="/site/<%= follow.actioning_site.username %>"><img src="<%= follow.actioning_site.screenshot_path 'index.html', '37x37' %>" class="avatar"></a> <% follow_actioning_site = follow.actioning_site_dataset.select(:username).first %>
<a href="/site/<%= follow_actioning_site.username %>"><img src="<%= follow_actioning_site.screenshot_path 'index.html', '37x37' %>" class="avatar"></a>
<% end %> <% end %>
<% end %> <% end %>
</div> </div>

View file

@ -13,13 +13,16 @@
<div class="news-item follow"> <div class="news-item follow">
<div class="title"> <div class="title">
<div class="icon"></div> <div class="icon"></div>
<a href="/site/<%= event.actioning_site.username %>" class="user"><%= event.actioning_site.username %></a> followed <a href="/site/<%= event.site.username %>" class="user"><%= event.site.username %>'s</a> website<span class="date"><%= event.created_at.ago %></span> <% actioning_site_username = event.actioning_site_dataset.select(:username).first.username %>
<% event_site_username = event.site_dataset.select(:username).first.username %>
<a href="/site/<%= actioning_site_username %>" class="user"><%= actioning_site_username %></a> followed <a href="/site/<%= event_site_username %>" class="user"><%= event_site_username %>'s</a> website<span class="date"><%= event.created_at.ago %></span>
</div> </div>
<% elsif event.site_change_id %> <% elsif event.site_change_id %>
<div class="news-item update"> <div class="news-item update">
<div class="title"> <div class="title">
<div class="icon"></div> <div class="icon"></div>
<a href="http://<%= site.username %>.neocities.org" class="user"><%= site.username %>.neocities.org</a> has been updated <span class="date"><%= event.created_at.ago %></span> <% event_site_username = event.site_dataset.select(:username).first.username %>
<a href="http://<%= event_site_username %>.neocities.org" class="user"><%= event_site_username %>.neocities.org</a> has been updated <span class="date"><%= event.created_at.ago %></span>
</div> </div>
<div class="content"> <div class="content">
<div class="files"> <div class="files">
@ -41,23 +44,6 @@
</div> </div>
</div> </div>
<% end %> <% end %>
<!--
<div class="file">
<div class="html-thumbnail misc"><a href=""><span class="misc-icon">css</span><span class="title">styles.css</span></a></div>
</div>
<div class="file">
<div class="html-thumbnail html"><a href=""><img src="http://neocities.org/site_screenshots/codeventurer.jpg"><span class="title">styles.css</span></a></div>
</div>
<div class="file">
<div class="html-thumbnail misc"><a href=""><span class="misc-icon">js</span><span class="title">styles.css</span></a></div>
</div>
<div class="file">
<div class="html-thumbnail image"><a href=""><img src="/site_thumbnails/victoria/constructioncat2.png.105x63.png"><span class="title">cat.jpg</span></a></div>
</div>
<div class="file">
<div class="html-thumbnail misc"><a href=""><span class="misc-icon">js</span><span class="title">styles.css</span></a></div>
</div>
-->
</div> </div>
</div> </div>
<% end %> <% end %>
@ -68,20 +54,20 @@
<div class="content"> <div class="content">
<div class="comments"> <div class="comments">
<% event.comments.each do |comment| %> <% event.comments.each do |comment| %>
<% comment_actioning_site = comment.actioning_site_dataset.select(:username).first %>
<div class="comment" id="comment_<%= comment.id %>"> <div class="comment" id="comment_<%= comment.id %>">
<img class="avatar" src="<%= comment.actioning_site.screenshot_url('index.html', '82x62') %>"> <img class="avatar" src="<%= comment_actioning_site.screenshot_url('index.html', '82x62') %>">
<a href="/site/<%= comment.actioning_site.username %>" class="user"><%= comment.actioning_site.username %></a> <a href="/site/<%= comment_actioning_site.username %>" class="user"><%= comment_actioning_site.username %></a>
<span class="date"><%= comment.created_at.ago %></span> <span class="date"><%= comment.created_at.ago %></span>
<p><%= comment.message %></p> <p><%= comment.message %></p>
</div> </div>
<div class="actions"> <div class="actions">
<% comment_likes_count = comment.comment_likes_dataset.count %>
<% if current_site %> <% if current_site %>
<a href="#" class="comment_like" id="comment_<%= comment.id %>_like" data-placement="bottom" data-toggle="tooltip" data-original-title="<%= comment.liking_site_names.join('<br>') %>" onclick="Comment.toggleLike(<%= comment.id %>, '<%= csrf_token %>'); return false"><%= comment.site_likes?(current_site) ? 'Unlike' : 'Like' %><%= comment.comment_likes_dataset.count > 0 ? " (#{comment.comment_likes_dataset.count})" : '' %></a> <a href="#" class="comment_like" id="comment_<%= comment.id %>_like" data-placement="bottom" data-toggle="tooltip" data-original-title="<%= comment.liking_site_names.join('<br>') %>" onclick="Comment.toggleLike(<%= comment.id %>, '<%= csrf_token %>'); return false"><%= comment.site_likes?(current_site) ? 'Unlike' : 'Like' %><%= comment_likes_count > 0 ? " (#{comment_likes_count})" : '' %></a>
<% else %> <% else %>
<% comment_like_count = comment.comment_likes_dataset.count %> <% if comment_likes_count > 0 %>
<% if comment_like_count > 0 %> <%= comment_likes_count %> <%= comment_likes_count == 1 ? 'like' : 'likes' %>
<%= comment_like_count %> <%= comment_like_count == 1 ? 'like' : 'likes' %>
<% end %> <% end %>
<% end %> <% end %>
@ -101,100 +87,3 @@
<% end %> <% end %>
<%== erb :'_news_templates', layout: false %> <%== erb :'_news_templates', layout: false %>
<!--
<div class="news-item follow">
<div class="title">
<div class="icon"></div>
<a href="" class="user">Derp</a> followed <a href="" class="user">Foo's</a> website<span class="date">7h</span>
</div>
</div>
<div class="news-item tip">
<div class="title">
<div class="icon"></div>
<a href="" class="user">Derp</a> tipped <a href="" class="user">Foo's</a> website: <a href="" class="comment">Wow, great work here! Please keep updating :)</a><span class="date">Apr 23</span>
</div>
</div>
<div class="news-item comment">
<div class="title">
<div class="icon"></div>
<a href="" class="user">Derp</a> commented on <a href="" class="user">victoria's</a> website: <a href="" class="comment">I had a question - how did you make it so that the...</a>
<span class="date">Apr 20</span>
</div>
</div>
<div class="news-item follow">
<div class="title">
<div class="icon"></div>
<a href="" class="user">Derp</a> followed <a href="" class="user">victoria's</a> website<span class="date">Apr 7</span>
</div>
</div>
<div class="news-item update">
<div class="title">
<div class="icon"></div>
<a href="" class="user">Derp</a> made an update <span class="date">Apr 7</span>
</div>
<div class="content">
<div class="files">
<div class="file">
<div class="html-thumbnail misc"><a href=""><span class="misc-icon">css</span><span class="title">styles.css</span></a></div>
</div>
<div class="file">
<div class="html-thumbnail html"><a href=""><img src="http://neocities.org/site_screenshots/codeventurer.jpg"><span class="title">styles.css</span></a></div>
</div>
<div class="file">
<div class="html-thumbnail misc"><a href=""><span class="misc-icon">js</span><span class="title">styles.css</span></a></div>
</div>
<div class="file">
<div class="html-thumbnail image"><a href=""><img src="/site_thumbnails/victoria/constructioncat2.png.105x63.png"><span class="title">cat.jpg</span></a></div>
</div>
<div class="file">
<div class="html-thumbnail misc"><a href=""><span class="misc-icon">js</span><span class="title">styles.css</span></a></div>
</div>
</div>
<div class="actions"><a href="">Like (1)</a> <a href="">Reply</a></div>
</div>
</div>
<div class="news-item comment for-me">
<div class="title">
<div class="icon" style="background-image:url(https://neocities.org/site_screenshots/codeventurer.jpg);"></div>
<a href="" class="user">Foo</a>
<span class="date">Apr 7</span>
<div class="comment">Your site is amazing. Very helpful information. Would love to see more updates if you have time. Your site is amazing. Very helpful information. Would love to see more updates if you have time. </div>
</div>
<div class="content">
<div class="actions"><a href="">Like (1)</a> <a href="">Reply</a></div>
<div class="comments">
<div class="comment">
<img class="avatar" src="https://neocities.org/site_screenshots/victoria.jpg">
<a href="" class="user">victoria</a> Indeed, it's great!<span class="date">Apr 7</span>
<div class="actions"><a href="">Like (1)</a></div>
</div>
</div>
</div>
</div>
<div class="news-item comment">
<div class="title">
<div class="icon"></div>
<a href="" class="user">Derp</a> commented on <a href="" class="user">Foo's</a> website: <a href="" class="comment">I had a question - how did you make it so that the...</a>
<span class="date">Apr 7</span>
</div>
</div>
<div class="news-item tip for-me">
<div class="title">
<div class="icon" style="background-image:url(https://neocities.org/site_screenshots/victoria.jpg);"></div>
<a href="" class="user">victoria</a> tipped .01 BTC
<span class="date">Apr 7</span>
<div class="comment">Hey, this looks great!</div>
</div>
<div class="content">
<div class="actions"><a href="">Like (1)</a> <a href="">Reply</a></div>
</div>
</div>
-->

View file

@ -1,10 +1,10 @@
<div id="event_<%= event.id %>_actions" class="actions"> <div id="event_<%= event.id %>_actions" class="actions">
<% event_likes_count = event.likes_dataset.count %>
<% if current_site %> <% if current_site %>
<a href="#" id="like" data-placement="bottom" data-toggle="tooltip" data-original-title="<%= event.liking_site_names.join('<br>') %>" onclick="new Like(<%= event.id %>, '<%= csrf_token %>').toggleLike(); return false"><%= event.site_likes?(current_site) ? 'Unlike' : 'Like' %><%= event.likes_dataset.count > 0 ? " (#{event.likes_dataset.count})" : '' %></a> <a href="#" id="like" data-placement="bottom" data-toggle="tooltip" data-original-title="<%= event.liking_site_names.join('<br>') %>" onclick="new Like(<%= event.id %>, '<%= csrf_token %>').toggleLike(); return false"><%= event.site_likes?(current_site) ? 'Unlike' : 'Like' %><%= event_likes_count > 0 ? " (#{event_likes_count})" : '' %></a>
<% else %> <% else %>
<% event_like_count = event.likes_dataset.count %> <% if event_likes_count > 0 %>
<% if event_like_count > 0 %> <%= event_likes_count %> <%= event_likes_count == 1 ? 'like' : 'likes' %>
<%= event_like_count %> <%= event_like_count == 1 ? 'like' : 'likes' %>
<% end %> <% end %>
<% end %> <% end %>
<% if current_site %> <% if current_site %>

View file

@ -13,15 +13,16 @@
<div class="stats"> <div class="stats">
<div class="stat"><strong><%= site.hits_english %></strong> <span>hits</span></div> <div class="stat"><strong><%= site.hits_english %></strong> <span>hits</span></div>
<div class="stat"><strong><%= site.follows_dataset.count %></strong> <span>followers</span></div> <div class="stat"><strong><%= site.follows_dataset.count %></strong> <span>followers</span></div>
<div class="stat tips"><strong><%= site.tips_dataset.count %></strong> <span>tips</span></div> <!-- <div class="stat tips"><strong><%= site.tips_dataset.count %></strong> <span>tips</span></div> -->
</div> </div>
<div class="actions"> <div class="actions">
<% if current_site == site %> <% if current_site == site %>
<a href="/dashboard" class="btn-Action edit"><span><i class="fa fa-pencil"></i> Edit Site</span></a> <a href="/dashboard" class="btn-Action edit"><span><i class="fa fa-pencil"></i> Edit Site</span></a>
<% end %> <% end %>
<% if current_site != site %> <% if current_site != site %>
<a id="followLink" href="#" onclick="Site.toggleFollow(<%= site.id %>, '<%= csrf_token %>')" class="btn-Action <%= current_site.is_following?(site) ? '' : 'follow' %>"> <% is_following = current_site.is_following?(site) %>
<span><%= current_site.is_following?(site) ? 'Unfollow' : 'Follow' %></span> <a id="followLink" href="#" onclick="Site.toggleFollow(<%= site.id %>, '<%= csrf_token %>')" class="btn-Action <%= is_following ? '' : 'follow' %>">
<span><%= is_following ? 'Unfollow' : 'Follow' %></span>
</a> </a>
<!-- <a href="#" class="btn-Action tip"><span>Tip</span></a> --> <!-- <a href="#" class="btn-Action tip"><span>Tip</span></a> -->
<% end %> <% end %>
@ -59,7 +60,8 @@
</div> </div>
<% end %> <% end %>
<% if site.latest_events.empty? %> <% latest_events = site.latest_events %>
<% if latest_events.empty? %>
<div> <div>
<p>No recent activity.</p> <p>No recent activity.</p>
<% if site == current_site %> <% if site == current_site %>
@ -69,7 +71,7 @@
<% end %> <% end %>
</div> </div>
<% else %> <% else %>
<%== erb :'_news', layout: false, locals: {site: site, events: site.events_dataset.order(:id.desc).all} %> <%== erb :'_news', layout: false, locals: {site: site, events: latest_events} %>
<% end %> <% end %>
</div> </div>
@ -112,29 +114,3 @@
</div> </div>
</div></div> </div></div>
</div> </div>
<div class="modal hide fade" id="shareModal" tabindex="-1" role="dialog" aria-labelledby="shareModalLabel" aria-hidden="true">
<div class="modal-header">
<button class="close" type="button" data-dismiss="modal" aria-hidden="true">x</button>
<h3 id="shareModalLabel">Share this Site</h3>
</div>
<div class="modal-body">
<p>
<a href="https://twitter.com/share" class="twitter-share-button" data-text="<%= site.username %>.neocities.org is awesome!" data-via="neocitiesweb" data-count="none">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
</p>
<p>
<a href="http://www.tumblr.com/share" title="Share on Tumblr" style="display:inline-block; text-indent:-9999px; overflow:hidden; width:61px; height:20px; background:url('http://platform.tumblr.com/v1/share_2.png') top left no-repeat transparent;">Share on Tumblr</a>
</p>
<p>
<a href="http://www.reddit.com/submit" onclick="window.location = 'http://www.reddit.com/submit?url=' + encodeURIComponent(window.location); return false"> <img src="http://www.reddit.com/static/spreddit7.gif" alt="submit to reddit" border="0" /> </a>
</p>
<p>
</p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Done</button>
</div>
</div>