Browse Source

Improve UI for `doctrinines#search`

pull/124/head
alexdbondoc17 4 years ago
parent
commit
9795dd8ca8
  1. 5
      app/controllers/concerns/doctrine_search.rb
  2. 4
      app/controllers/doctrines_controller.rb
  3. 12
      app/models/doctrine.rb
  4. 18
      app/views/doctrines/search.html.erb

5
app/controllers/concerns/doctrine_search.rb

@ -23,9 +23,8 @@ module DoctrineSearch
without(:id).any_of(search_params[:exclude_ids]) if search_params[:exclude_ids].present?
if search_params[:is_group_by_headnote].to_s.eql?("true")
group :headnote
end
order_by :search_year, :desc
order_by :search_doc_date, :desc
paginate page: search_params[:page] || 1, per_page: search_params[:per_page] || 20
end

4
app/controllers/doctrines_controller.rb

@ -19,7 +19,9 @@ class DoctrinesController < ApplicationController
def search
@search = doctrine_search(search_params)
@doctrines = @search.results
@results = @search.results
@uniq_doctrines = @results.uniq(&:headnote)
respond_to do |format|
format.html

12
app/models/doctrine.rb

@ -23,6 +23,10 @@ class Doctrine < ApplicationRecord
Cdao::Jurisprudence.where(id: doctrine_jurisprudences.map(&:jurisprudence_id)).order(year: :desc, docdate: :desc)
end
def jurisprudence
jurisprudences.first
end
def subjects
Cdao::Subject.where(id: doctrine_subjects.map(&:subject_id))
end
@ -183,6 +187,14 @@ class Doctrine < ApplicationRecord
paper_trail.originator.to_i
end
integer :search_year do
jurisprudence.year.present? && jurisprudence.year > 0 ? jurisprudence.year : (jurisprudence.doc_date.try :year)
end
date :search_doc_date do
jurisprudence.doc_date.presence || Date.new(jurisprudence.year.presence || 0)
end
date :created_at
string :headnote

18
app/views/doctrines/search.html.erb

@ -1,11 +1,17 @@
<div class="container-fluid mt-1 p-0 doctrine-index-body">
<div class="container-fluid m-2 p-0"> <%= render PaginationComponent.new(data: @doctrines, opts: { is_subject_breadcrums: true, subject_ids: params[:subject_ids], is_index_table: params[:is_index_table] }) %> </div>
<div class="container-fluid m-2 p-0"> <%= render PaginationComponent.new(data: @results, opts: { is_subject_breadcrums: true, subject_ids: params[:subject_ids], is_index_table: params[:is_index_table] }) %> </div>
<hr class="mt-0"/>
<% if params[:is_index_table].to_s.eql?("true") %>
<div class="card-body col-sm-12 tableFixHead p-0 mt-1">
<%= render(DoctrineIndexTableComponent.new(current_user: current_user, search_results: @doctrines, opts: { is_index_table: true, subject_ids: params[:subject_ids].map(&:to_i) })) %>
<% @uniq_doctrines.each do |uniq_doctrine| %>
<div class="row-flex m-3 mt-0 doctrine-content-body">
<div class="container-sm <%= params[:is_subjects_index].present? ? 'm-0 ps-0' : '' %>">
<h5> <%= uniq_doctrine.headnote %> </h5>
<% doctrines = @results.map { |doctrine| doctrine if doctrine.headnote.eql?(uniq_doctrine.headnote) } %>
<%= render(DoctrineIndexComponent.with_collection(doctrines, current_user: current_user, opts: { is_index_table: false, subject_ids: params[:subject_ids].map(&:to_i) })) %>
</div>
<hr/>
</div>
<% else %>
<%= render(DoctrineIndexComponent.with_collection(@doctrines.sort_by { |doctrine| [-doctrine.jurisprudences.first.year, -doctrine.jurisprudences.first.docdate.strftime("%Y-%m-%d")] }, current_user: current_user, opts: { is_index_table: false, subject_ids: params[:subject_ids].map(&:to_i) })) %>
<% end %>
</div>

Loading…
Cancel
Save