pull/475/head
Pete Matsyburka 6 months ago
parent 7fee82ded2
commit 4e5abb3c09

@ -7,7 +7,7 @@ class TemplateFoldersController < ApplicationController
@templates = @template_folder.templates.active.accessible_by(current_ability)
.preload(:author, :template_accesses)
@templates = Templates.search(@templates, params[:q])
@templates = Templates::Order.call(@templates, cookies.permanent[:dashboard_templates_order])
@templates = Templates::Order.call(@templates, current_user, cookies.permanent[:dashboard_templates_order])
@pagy, @templates = pagy(@templates, limit: 12)
end

@ -12,7 +12,8 @@ class TemplatesDashboardController < ApplicationController
@template_folders = @template_folders.where(id: @templates.active.select(:folder_id))
@template_folders = TemplateFolders.search(@template_folders, params[:q])
@template_folders = sort_template_folders(@template_folders, cookies.permanent[:dashboard_templates_order])
@template_folders = sort_template_folders(@template_folders, current_user,
cookies.permanent[:dashboard_templates_order])
@pagy, @template_folders = pagy(
@template_folders,
@ -25,7 +26,7 @@ class TemplatesDashboardController < ApplicationController
else
@template_folders = @template_folders.reject { |e| e.name == TemplateFolder::DEFAULT_NAME }
@templates = filter_templates(@templates)
@templates = Templates::Order.call(@templates, cookies.permanent[:dashboard_templates_order])
@templates = Templates::Order.call(@templates, current_user, cookies.permanent[:dashboard_templates_order])
limit =
if @template_folders.size < 4
@ -57,12 +58,13 @@ class TemplatesDashboardController < ApplicationController
Templates.search(rel, params[:q])
end
def sort_template_folders(template_folders, order)
def sort_template_folders(template_folders, current_user, order)
case order
when 'used_at'
subquery =
Template.left_joins(:submissions)
.group(:folder_id)
.where(account_id: current_user.account_id)
.select(
:folder_id,
Template.arel_table[:updated_at].maximum.as('updated_at_max'),

@ -12,6 +12,7 @@
</button>
</li>
</toggle-cookies>
<% if local_assigns[:with_recently_used] != false %>
<toggle-cookies data-value="used_at" data-key="dashboard_templates_order">
<li>
<button class="<%= 'bg-base-200' if dashboard_templates_order == 'used_at' %>">
@ -20,6 +21,7 @@
</button>
</li>
</toggle-cookies>
<% end %>
<toggle-cookies data-value="name" data-key="dashboard_templates_order">
<li>
<button class="<%= 'bg-base-200' if dashboard_templates_order == 'name' %>">

@ -37,7 +37,7 @@
</div>
<% templates_order_select_html = capture do %>
<% if params[:q].blank? && @pagy.pages > 1 %>
<%= render('shared/templates_order_select') %>
<%= render('shared/templates_order_select', with_recently_used: @pagy.count < 10_000) %>
<% end %>
<% end %>
<%= render 'shared/pagination', pagy: @pagy, items_name: 'templates', right_additional_html: templates_order_select_html %>

@ -36,7 +36,7 @@
<% end %>
<% templates_order_select_html = capture do %>
<% if params[:q].blank? && @pagy.pages > 1 %>
<%= render('shared/templates_order_select') %>
<%= render('shared/templates_order_select', with_recently_used: @pagy.count < 10_000) %>
<% end %>
<% end %>
<% if @template_folders.present? %>

@ -4,10 +4,11 @@ module Templates
module Order
module_function
def call(templates, order)
def call(templates, current_user, order)
case order
when 'used_at'
subquery = Submission.select(:template_id, Submission.arel_table[:created_at].maximum.as('created_at'))
.where(account_id: current_user.account_id)
.group(:template_id)
templates = templates.joins(

Loading…
Cancel
Save