Browse Source

Implement documents#search

pull/9/head
Angel Aviel Domaoan 4 years ago committed by Angel Aviel Domaoan
parent
commit
f04b3f70a4
  1. 2
      app/components/sidenav_component/sidenav_component.html.erb
  2. 10
      app/components/subjects_sidenav_sub_menu_component/subjects_sidenav_sub_menu_component.html.erb
  3. 4
      app/controllers/concerns/jurisprudence_search.rb
  4. 11
      app/controllers/documents_controller.rb
  5. 4
      app/controllers/subject_indexes_controller.rb
  6. 2
      app/views/documents/index.html.erb
  7. 19
      app/views/documents/search.html.erb
  8. 4
      config/routes.rb

2
app/components/sidenav_component/sidenav_component.html.erb

@ -6,7 +6,7 @@
<div class="accordion-item">
<h5 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#mainSubjectIndexSubMenu">
<%= link_to "Subject Index", subject_indexes_path, class: "accordion-link text-dark" %>
<%= link_to "Subject Index", "#", class: "accordion-link text-dark" %>
</button>
</h5>

10
app/components/subjects_sidenav_sub_menu_component/subjects_sidenav_sub_menu_component.erb → app/components/subjects_sidenav_sub_menu_component/subjects_sidenav_sub_menu_component.html.erb

@ -5,7 +5,7 @@
<div class="accordion-item">
<h5 class="accordion-header">
<button class="<%= root.children.present? ? 'accordion-button' : '' %> collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#<%= [opts[:second_sub_menu], root.id].join %>">
<%= link_to root.name, subject_index_path(root.id), class: "accordion-link text-dark" %>
<%= link_to root.name, search_documents_path(subject_ids: root.id), class: "accordion-link text-dark" %>
</button>
</h5>
@ -17,7 +17,7 @@
<div class="accordion-item">
<h5 class="accordion-header">
<button class="<%= sub1.children.present? ? 'accordion-button' : '' %> collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#<%= [opts[:third_sub_menu], sub1.id].join %>">
<%= link_to sub1.name, subject_index_path(sub1.id), class: "accordion-link text-dark" %>
<%= link_to sub1.name, search_documents_path(subject_ids: sub1.id), class: "accordion-link text-dark" %>
</button>
</h5>
@ -28,7 +28,7 @@
<div class="accordion-item">
<h5 class="accordion-header">
<button class="<%= sub2.children.present? ? 'accordion-button' : '' %> collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#<%= [opts[:fourth_sub_menu], sub2.id].join %>">
<%= link_to sub2.name, subject_index_path(sub2.id), class: "accordion-link text-dark" %>
<%= link_to sub2.name, search_documents_path(subject_ids: sub2.id), class: "accordion-link text-dark" %>
</button>
</h5>
@ -39,7 +39,7 @@
<div class="accordion-item">
<h5 class="accordion-header">
<button class="<%= sub2.children.present? ? 'accordion-button' : '' %> collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#<%= [opts[:fifth_sub_menu], sub3.id].join %>">
<%= link_to sub3.name, subject_index_path(sub3.id), class: "accordion-link text-dark" %>
<%= link_to sub3.name, search_documents_path(subject_ids: sub3.id), class: "accordion-link text-dark" %>
</button>
</h5>
@ -48,7 +48,7 @@
<% sub3.children.each do |sub4| %>
<div class="accordion-item">
<p class="accordion-header">
<%= link_to sub4.name, subject_index_path(sub4.id), class: "accordion-link text-dark" %>
<%= link_to sub4.name, search_documents_path(subject_ids: sub4.id), class: "accordion-link text-dark" %>
</p>
</div>
<% end if sub3.children.present? %>

4
app/controllers/concerns/jurisprudence_search.rb

@ -13,8 +13,8 @@ module JurisprudenceSearch
with(:subject_ids).any_of(search_params[:subject_ids].split(",").map(&:strip).map(&:to_i)) if search_params[:subject_ids].present?
order_by :doc_date
order_by :year
order_by :doc_date, :desc
order_by :year, :desc
paginate page: search_params[:page] || 1, per_page: search_params[:per_page] || 20
end

11
app/controllers/documents_controller.rb

@ -17,8 +17,17 @@ class DocumentsController < ApplicationController
@doctrines = @document.doctrines
end
def search
index
respond_to do |format|
format.html { render :search }
end
end
private
def search_params
params.permit(:reference_number, :title, :short_title, :q, :page, :per_page)
params.permit(:reference_number, :title, :short_title, :q, :page, :per_page,
:subject_ids)
end
end

4
app/controllers/subject_indexes_controller.rb

@ -1,5 +1,7 @@
class SubjectIndexesController < ApplicationController
load_and_authorize_resource :subject_index, class: "Cdao::Subject"
include JurisprudenceSearch
load_and_authorize_resource :subject_index, class: "Cdao::Subject", except: %i[search]
def index; end

2
app/views/documents/index.html.erb

@ -3,10 +3,8 @@
<%= form_tag(documents_path, method: :get) do %>
<div class="row">
<div class="col-sm-8 p-2">
<div class="form-floating">
<%= text_field_tag :q, params[:q], class: "form-control" %>
</div>
</div>
<div class="col-sm-4 p-2">
<%= submit_tag "Search", class: "btn btn-primary text-dark" %>

19
app/views/documents/search.html.erb

@ -0,0 +1,19 @@
<div class="card mt-2 g-3">
<% Cdao::Subject.where(id: params[:subject_ids].split(",").map(&:strip).map(&:to_i)).each do |subject| %>
<div class="card-header mt-1 col-sm-12">
<%= subject.path.map(&:name).join(' > ') %>
</div>
<% end %>
<div class="card-body col-sm-12 tableFixHead p-0 mt-1">
<table class="table table-striped table-hover mb-0">
<thead>
<th class="bg-light"> Reference No. </th>
<th class="bg-light"> Title </th>
<th class="bg-light"> Date </th>
</thead>
<tbody>
<%= render(DocumentIndexTableComponent.with_collection(@jurisprudences, current_user: current_user)) %>
</tbody>
</table>
</div>
</div>

4
config/routes.rb

@ -15,7 +15,9 @@ Rails.application.routes.draw do
end
end
resources :documents, only: %i[index show]
resources :documents, only: %i[index show] do
get :search, on: :collection
end
resources :decisions, only: %i[index show]
resources :subject_indexes

Loading…
Cancel
Save