adjust sort order

pull/502/head
Pete Matsyburka 4 months ago
parent 8fd9af3a6a
commit d3236ae4a1

@ -3,11 +3,13 @@
class TemplateFoldersController < ApplicationController class TemplateFoldersController < ApplicationController
load_and_authorize_resource :template_folder load_and_authorize_resource :template_folder
helper_method :selected_order
def show def show
@templates = @template_folder.templates.active.accessible_by(current_ability) @templates = @template_folder.templates.active.accessible_by(current_ability)
.preload(:author, :template_accesses) .preload(:author, :template_accesses)
@templates = Templates.search(current_user, @templates, params[:q]) @templates = Templates.search(current_user, @templates, params[:q])
@templates = Templates::Order.call(@templates, current_user, cookies.permanent[:dashboard_templates_order]) @templates = Templates::Order.call(@templates, current_user, selected_order)
@pagy, @templates = pagy_auto(@templates, limit: 12) @pagy, @templates = pagy_auto(@templates, limit: 12)
end end
@ -25,6 +27,16 @@ class TemplateFoldersController < ApplicationController
private private
def selected_order
@selected_order ||=
if cookies.permanent[:dashboard_templates_order].blank? ||
(cookies.permanent[:dashboard_templates_order] == 'used_at' && can?(:manage, :countless))
'created_at'
else
cookies.permanent[:dashboard_templates_order]
end
end
def template_folder_params def template_folder_params
params.require(:template_folder).permit(:name) params.require(:template_folder).permit(:name)
end end

@ -8,12 +8,13 @@ class TemplatesDashboardController < ApplicationController
TEMPLATES_PER_PAGE = 12 TEMPLATES_PER_PAGE = 12
FOLDERS_PER_PAGE = 18 FOLDERS_PER_PAGE = 18
helper_method :selected_order
def index def index
@template_folders = @template_folders.where(id: @templates.active.select(:folder_id)) @template_folders = @template_folders.where(id: @templates.active.select(:folder_id))
@template_folders = TemplateFolders.search(@template_folders, params[:q]) @template_folders = TemplateFolders.search(@template_folders, params[:q])
@template_folders = sort_template_folders(@template_folders, current_user, @template_folders = sort_template_folders(@template_folders, current_user, selected_order)
cookies.permanent[:dashboard_templates_order])
@pagy, @template_folders = pagy( @pagy, @template_folders = pagy(
@template_folders, @template_folders,
@ -26,7 +27,7 @@ class TemplatesDashboardController < ApplicationController
else else
@template_folders = @template_folders.reject { |e| e.name == TemplateFolder::DEFAULT_NAME } @template_folders = @template_folders.reject { |e| e.name == TemplateFolder::DEFAULT_NAME }
@templates = filter_templates(@templates).preload(:author, :template_accesses) @templates = filter_templates(@templates).preload(:author, :template_accesses)
@templates = Templates::Order.call(@templates, current_user, cookies.permanent[:dashboard_templates_order]) @templates = Templates::Order.call(@templates, current_user, selected_order)
limit = limit =
if @template_folders.size < 4 if @template_folders.size < 4
@ -101,6 +102,16 @@ class TemplatesDashboardController < ApplicationController
end end
end end
def selected_order
@selected_order ||=
if cookies.permanent[:dashboard_templates_order].blank? ||
(cookies.permanent[:dashboard_templates_order] == 'used_at' && can?(:manage, :countless))
'created_at'
else
cookies.permanent[:dashboard_templates_order]
end
end
def load_related_submissions def load_related_submissions
@related_submissions = Submission.accessible_by(current_ability) @related_submissions = Submission.accessible_by(current_ability)
.left_joins(:template) .left_joins(:template)

@ -1,4 +1,3 @@
<% dashboard_templates_order = cookies.permanent[:dashboard_templates_order] || 'created_at' %>
<form action="<%= url_for %>" method="get" class="dropdown dropdown-top hidden md:inline"> <form action="<%= url_for %>" method="get" class="dropdown dropdown-top hidden md:inline">
<label tabindex="0" class="btn btn-sm h-10"> <label tabindex="0" class="btn btn-sm h-10">
<%= svg_icon('arrow_sort', class: 'w-5 h-5') %> <%= svg_icon('arrow_sort', class: 'w-5 h-5') %>
@ -6,7 +5,7 @@
<ul tabindex="0" class="dropdown-content z-[10] menu p-2 shadow bg-base-100 rounded-box mb-1 min-w-48"> <ul tabindex="0" class="dropdown-content z-[10] menu p-2 shadow bg-base-100 rounded-box mb-1 min-w-48">
<toggle-cookies data-value="created_at" data-key="dashboard_templates_order"> <toggle-cookies data-value="created_at" data-key="dashboard_templates_order">
<li> <li>
<button class="<%= 'bg-base-200' if dashboard_templates_order == 'created_at' %>"> <button class="<%= 'bg-base-200' if selected_order == 'created_at' %>">
<%= svg_icon('sort_descending_numbers', class: 'w-4 h-4') %> <%= svg_icon('sort_descending_numbers', class: 'w-4 h-4') %>
<span class="whitespace-nowrap"><%= t('newest_first') %></span> <span class="whitespace-nowrap"><%= t('newest_first') %></span>
</button> </button>
@ -15,7 +14,7 @@
<% if local_assigns[:with_recently_used] != false %> <% if local_assigns[:with_recently_used] != false %>
<toggle-cookies data-value="used_at" data-key="dashboard_templates_order"> <toggle-cookies data-value="used_at" data-key="dashboard_templates_order">
<li> <li>
<button class="<%= 'bg-base-200' if dashboard_templates_order == 'used_at' %>"> <button class="<%= 'bg-base-200' if selected_order == 'used_at' %>">
<%= svg_icon('sort_descending_small_big', class: 'w-4 h-4') %> <%= svg_icon('sort_descending_small_big', class: 'w-4 h-4') %>
<span class="whitespace-nowrap"><%= t('recently_used') %></span> <span class="whitespace-nowrap"><%= t('recently_used') %></span>
</button> </button>
@ -24,7 +23,7 @@
<% end %> <% end %>
<toggle-cookies data-value="name" data-key="dashboard_templates_order"> <toggle-cookies data-value="name" data-key="dashboard_templates_order">
<li> <li>
<button class="<%= 'bg-base-200' if dashboard_templates_order == 'name' %>"> <button class="<%= 'bg-base-200' if selected_order == 'name' %>">
<%= svg_icon('sort_ascending_letters', class: 'w-4 h-4') %> <%= svg_icon('sort_ascending_letters', class: 'w-4 h-4') %>
<span class="whitespace-nowrap"><%= t('name_a_z') %></span> <span class="whitespace-nowrap"><%= t('name_a_z') %></span>
</button> </button>

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

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

Loading…
Cancel
Save