show found submissions when searching on templates

pull/493/head
Alex Turchyn 5 months ago committed by Pete Matsyburka
parent 6f0e7c0ca8
commit 36331bb993

@ -36,6 +36,8 @@ class TemplatesDashboardController < ApplicationController
end end
@pagy, @templates = pagy_auto(@templates, limit:) @pagy, @templates = pagy_auto(@templates, limit:)
load_related_submissions if params[:q].present? && @templates.blank?
end end
end end
@ -100,4 +102,19 @@ class TemplatesDashboardController < ApplicationController
template_folders.order(id: :desc) template_folders.order(id: :desc)
end end
end end
def load_related_submissions
@related_submissions = Submission.accessible_by(current_ability)
.left_joins(:template)
.where(archived_at: nil)
.where(templates: { archived_at: nil })
.preload(:template_accesses, :created_by_user,
template: :author,
submitters: :start_form_submission_events)
@related_submissions = Submissions.search(current_user, @related_submissions, params[:q])
.order(id: :desc)
@related_submissions_pagy, @related_submissions = pagy_auto(@related_submissions, limit: 5)
end
end end

@ -1,27 +1,29 @@
<% link = pagy_anchor(@pagy) %> <% link = pagy_anchor(pagy) %>
<% if @pagy.pages > 1 %> <% if pagy.pages > 1 %>
<div class="flex my-6 justify-center md:justify-between"> <div class="flex my-6 justify-center md:justify-between">
<div class="hidden md:block text-sm"> <div class="hidden md:block text-sm">
<% if @pagy.count.nil? %> <% if pagy.count.nil? %>
<%= t("pagination.#{local_assigns.fetch(:items_name, 'items')}.range_without_total", from: local_assigns.fetch(:from, @pagy.from), to: local_assigns.fetch(:to, @pagy.to)) %> <%= t("pagination.#{local_assigns.fetch(:items_name, 'items')}.range_without_total", from: local_assigns.fetch(:from, pagy.from), to: local_assigns.fetch(:to, pagy.to)) %>
<% else %> <% else %>
<%= t("pagination.#{local_assigns.fetch(:items_name, 'items')}.range_with_total", from: local_assigns.fetch(:from, @pagy.from), to: local_assigns.fetch(:to, @pagy.to), count: local_assigns.fetch(:count, @pagy.count)) %> <%= t("pagination.#{local_assigns.fetch(:items_name, 'items')}.range_with_total", from: local_assigns.fetch(:from, pagy.from), to: local_assigns.fetch(:to, pagy.to), count: local_assigns.fetch(:count, pagy.count)) %>
<% end %> <% end %>
<%= local_assigns[:left_additional_html] %> <%= local_assigns[:left_additional_html] %>
</div> </div>
<div class="flex items-center space-x-1.5"> <div class="flex items-center space-x-1.5">
<%= local_assigns[:right_additional_html] %> <%= local_assigns[:right_additional_html] %>
<div class="join"> <div class="join">
<% if @pagy.prev %> <% if pagy.prev %>
<%== link.call(@pagy.prev, '«', classes: 'join-item btn min-h-full h-10') %> <%== link.call(pagy.prev, '«', classes: 'join-item btn min-h-full h-10') %>
<% else %> <% else %>
<span class="join-item btn btn-disabled !bg-base-200 min-h-full h-10">«</span> <span class="join-item btn btn-disabled !bg-base-200 min-h-full h-10">«</span>
<% end %> <% end %>
<span class="join-item btn font-medium uppercase min-h-full h-10"> <span class="join-item btn font-medium uppercase min-h-full h-10">
<%= t('page_number', number: @pagy.page) %> <%= t('page_number', number: pagy.page) %>
</span> </span>
<% if @pagy.next %> <% if local_assigns[:next_page_path].present? %>
<%== link.call(@pagy.next, '»', classes: 'join-item btn min-h-full h-10') %> <%= link_to '»', local_assigns[:next_page_path], class: 'join-item btn min-h-full h-10' %>
<% elsif pagy.next %>
<%== link.call(pagy.next, '»', classes: 'join-item btn min-h-full h-10') %>
<% else %> <% else %>
<span class="join-item btn btn-disabled !bg-base-200 min-h-full h-10">»</span> <span class="join-item btn btn-disabled !bg-base-200 min-h-full h-10">»</span>
<% end %> <% end %>

@ -98,5 +98,14 @@
<%= t('templates_not_found') %> <%= t('templates_not_found') %>
</div> </div>
</div> </div>
<% if @related_submissions.present? %>
<h1 class="text-2xl md:text-3xl sm:text-4xl font-bold mt-8 md:mt-4">
<%= t('submissions') %>
</h1>
<div class="space-y-4 mt-4">
<%= render partial: 'templates/submission', collection: @related_submissions, locals: { with_template: true } %>
</div>
<%= render 'shared/pagination', pagy: @related_submissions_pagy, items_name: 'submissions', next_page_path: submissions_path(q: params[:q]) %>
<% end %>
<% end %> <% end %>
<%= render 'shared/review_form' %> <%= render 'shared/review_form' %>

@ -49,5 +49,18 @@ RSpec.describe 'Dashboard Page' do
expect(page).to have_current_path(edit_template_path(Template.last), ignore_query: true) expect(page).to have_current_path(edit_template_path(Template.last), ignore_query: true)
end end
end end
it 'searches be submitter email' do
submission = create(:submission, :with_submitters, template: templates[0])
submitter = submission.submitters.first
SearchEntries.reindex_all
visit root_path(q: submitter.email)
expect(page).to have_content('Templates not Found')
expect(page).to have_content('Submissions')
expect(page).to have_content(submitter.name)
end
end end
end end

Loading…
Cancel
Save