sort by followers

This commit is contained in:
Kyle Drake 2015-06-06 15:09:15 -07:00
parent 6452442f42
commit 3023c8badd
2 changed files with 9 additions and 2 deletions

View file

@ -43,6 +43,12 @@ def browse_sites_dataset
end end
case params[:sort_by] case params[:sort_by]
when 'followers'
site_dataset = site_dataset.association_left_join :follows
site_dataset.select_all! :sites
site_dataset.select_append! Sequel.lit("count(follows.site_id) AS follow_count")
site_dataset.group! :sites__id
site_dataset.order! :follow_count.desc, :updated_at.desc
when 'supporters' when 'supporters'
site_dataset.exclude! plan_type: nil site_dataset.exclude! plan_type: nil
site_dataset.exclude! plan_type: 'free' site_dataset.exclude! plan_type: 'free'
@ -81,7 +87,7 @@ def browse_sites_dataset
site_dataset.where! ['sites.is_nsfw = ?', (params[:is_nsfw] == 'true' ? true : false)] site_dataset.where! ['sites.is_nsfw = ?', (params[:is_nsfw] == 'true' ? true : false)]
if params[:tag] if params[:tag] && params[:sort_by] != 'followers'
site_dataset = site_dataset.association_join(:tags).select_all(:sites) site_dataset = site_dataset.association_join(:tags).select_all(:sites)
site_dataset.where! ['tags.name = ?', params[:tag]] site_dataset.where! ['tags.name = ?', params[:tag]]
site_dataset.where! ['tags.is_nsfw = ?', (params[:is_nsfw] == 'true' ? true : false)] site_dataset.where! ['tags.is_nsfw = ?', (params[:is_nsfw] == 'true' ? true : false)]

View file

@ -26,6 +26,7 @@
<div class="select-Container"> <div class="select-Container">
<select name="sort_by" id="sort_by" class="input-Select"> <select name="sort_by" id="sort_by" class="input-Select">
<option value="last_updated" <%= params[:sort_by] == 'last_updated' ? 'selected' : '' %>>Last Updated</option> <option value="last_updated" <%= params[:sort_by] == 'last_updated' ? 'selected' : '' %>>Last Updated</option>
<option value="followers" <%= params[:sort_by] == 'followers' ? 'selected' : '' %>>Most Followers</option>
<option value="supporters" <%= params[:sort_by] == 'supporters' ? 'selected' : '' %>>Neocities Supporters</option> <option value="supporters" <%= params[:sort_by] == 'supporters' ? 'selected' : '' %>>Neocities Supporters</option>
<option value="featured" <%= params[:sort_by] == 'featured' ? 'selected' : '' %>>Featured</option> <option value="featured" <%= params[:sort_by] == 'featured' ? 'selected' : '' %>>Featured</option>
<option value="views" <%= params[:sort_by] == 'views' ? 'selected' : '' %>>Most Views</option> <option value="views" <%= params[:sort_by] == 'views' ? 'selected' : '' %>>Most Views</option>
@ -48,7 +49,7 @@
<div class="col col-50 filter"> <div class="col col-50 filter">
<form method="GET" action="browse"> <form method="GET" action="browse">
<fieldset class="grouping"> <fieldset class="grouping">
<% unless is_education? %> <% unless is_education? || params[:sort_by] == 'followers' %>
<label class="text-Label" for="tag"><span class="hide-on-mobile">Search by </span>Tag:</label> <label class="text-Label" for="tag"><span class="hide-on-mobile">Search by </span>Tag:</label>
<input class="input-Area typeahead" id="tag" name="tag" type="text" placeholder="pokemon" value="<%= params[:tag] %>" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" dir="auto"> <input class="input-Area typeahead" id="tag" name="tag" type="text" placeholder="pokemon" value="<%= params[:tag] %>" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" dir="auto">
<input style="vertical-align: -4px;margin-left: 4px;" type="submit" class="btn-Action" value="Search"> <input style="vertical-align: -4px;margin-left: 4px;" type="submit" class="btn-Action" value="Search">