fix query
This commit is contained in:
@@ -7,7 +7,7 @@ class TemplateFoldersController < ApplicationController
|
|||||||
@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(@templates, params[:q])
|
@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)
|
@pagy, @templates = pagy(@templates, limit: 12)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -12,7 +12,8 @@ class TemplatesDashboardController < ApplicationController
|
|||||||
@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, cookies.permanent[:dashboard_templates_order])
|
@template_folders = sort_template_folders(@template_folders, current_user,
|
||||||
|
cookies.permanent[:dashboard_templates_order])
|
||||||
|
|
||||||
@pagy, @template_folders = pagy(
|
@pagy, @template_folders = pagy(
|
||||||
@template_folders,
|
@template_folders,
|
||||||
@@ -25,7 +26,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)
|
@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 =
|
limit =
|
||||||
if @template_folders.size < 4
|
if @template_folders.size < 4
|
||||||
@@ -57,12 +58,13 @@ class TemplatesDashboardController < ApplicationController
|
|||||||
Templates.search(rel, params[:q])
|
Templates.search(rel, params[:q])
|
||||||
end
|
end
|
||||||
|
|
||||||
def sort_template_folders(template_folders, order)
|
def sort_template_folders(template_folders, current_user, order)
|
||||||
case order
|
case order
|
||||||
when 'used_at'
|
when 'used_at'
|
||||||
subquery =
|
subquery =
|
||||||
Template.left_joins(:submissions)
|
Template.left_joins(:submissions)
|
||||||
.group(:folder_id)
|
.group(:folder_id)
|
||||||
|
.where(account_id: current_user.account_id)
|
||||||
.select(
|
.select(
|
||||||
:folder_id,
|
:folder_id,
|
||||||
Template.arel_table[:updated_at].maximum.as('updated_at_max'),
|
Template.arel_table[:updated_at].maximum.as('updated_at_max'),
|
||||||
|
|||||||
@@ -12,14 +12,16 @@
|
|||||||
</button>
|
</button>
|
||||||
</li>
|
</li>
|
||||||
</toggle-cookies>
|
</toggle-cookies>
|
||||||
<toggle-cookies data-value="used_at" data-key="dashboard_templates_order">
|
<% if local_assigns[:with_recently_used] != false %>
|
||||||
<li>
|
<toggle-cookies data-value="used_at" data-key="dashboard_templates_order">
|
||||||
<button class="<%= 'bg-base-200' if dashboard_templates_order == 'used_at' %>">
|
<li>
|
||||||
<%= svg_icon('sort_descending_small_big', class: 'w-4 h-4') %>
|
<button class="<%= 'bg-base-200' if dashboard_templates_order == 'used_at' %>">
|
||||||
<span class="whitespace-nowrap"><%= t('recently_used') %></span>
|
<%= svg_icon('sort_descending_small_big', class: 'w-4 h-4') %>
|
||||||
</button>
|
<span class="whitespace-nowrap"><%= t('recently_used') %></span>
|
||||||
</li>
|
</button>
|
||||||
</toggle-cookies>
|
</li>
|
||||||
|
</toggle-cookies>
|
||||||
|
<% 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 dashboard_templates_order == 'name' %>">
|
||||||
|
|||||||
@@ -37,7 +37,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') %>
|
<%= render('shared/templates_order_select', with_recently_used: @pagy.count < 10_000) %>
|
||||||
<% 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 %>
|
||||||
|
|||||||
@@ -36,7 +36,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') %>
|
<%= render('shared/templates_order_select', with_recently_used: @pagy.count < 10_000) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if @template_folders.present? %>
|
<% if @template_folders.present? %>
|
||||||
|
|||||||
@@ -4,10 +4,11 @@ module Templates
|
|||||||
module Order
|
module Order
|
||||||
module_function
|
module_function
|
||||||
|
|
||||||
def call(templates, order)
|
def call(templates, current_user, order)
|
||||||
case order
|
case order
|
||||||
when 'used_at'
|
when 'used_at'
|
||||||
subquery = Submission.select(:template_id, Submission.arel_table[:created_at].maximum.as('created_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)
|
.group(:template_id)
|
||||||
|
|
||||||
templates = templates.joins(
|
templates = templates.joins(
|
||||||
|
|||||||
Reference in New Issue
Block a user