diff --git a/app/controllers/concerns/doctrine_search.rb b/app/controllers/concerns/doctrine_search.rb index 92c245f..ea3b9f4 100644 --- a/app/controllers/concerns/doctrine_search.rb +++ b/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 diff --git a/app/controllers/doctrines_controller.rb b/app/controllers/doctrines_controller.rb index 12818a7..ef6c4ef 100644 --- a/app/controllers/doctrines_controller.rb +++ b/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 diff --git a/app/models/doctrine.rb b/app/models/doctrine.rb index ec1cb19..e1c9bc2 100644 --- a/app/models/doctrine.rb +++ b/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 diff --git a/app/views/doctrines/search.html.erb b/app/views/doctrines/search.html.erb index 1123ba8..1d93923 100644 --- a/app/views/doctrines/search.html.erb +++ b/app/views/doctrines/search.html.erb @@ -1,11 +1,17 @@
-
<%= render PaginationComponent.new(data: @doctrines, opts: { is_subject_breadcrums: true, subject_ids: params[:subject_ids], is_index_table: params[:is_index_table] }) %>
-
- <% if params[:is_index_table].to_s.eql?("true") %> -
- <%= render(DoctrineIndexTableComponent.new(current_user: current_user, search_results: @doctrines, opts: { is_index_table: true, subject_ids: params[:subject_ids].map(&:to_i) })) %> +
<%= render PaginationComponent.new(data: @results, opts: { is_subject_breadcrums: true, subject_ids: params[:subject_ids], is_index_table: params[:is_index_table] }) %>
+
+ <% @uniq_doctrines.each do |uniq_doctrine| %> +
+
+
<%= uniq_doctrine.headnote %>
+ + + <% 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) })) %> +
+ +
- <% 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 %>