Browse Source

Implement `doctrines#index`

pull/9/head
alexdbondoc17 4 years ago
parent
commit
bb16c32b40
  1. 5
      app/components/document_doctrine_index_component.rb
  2. 2
      app/components/sidenav_component/sidenav_component.html.erb
  3. 4
      app/components/subjects_sidenav_sub_menu_component.rb
  4. 2
      app/components/subjects_sidenav_sub_menu_component/subjects_sidenav_sub_menu_component.html.erb
  5. 29
      app/controllers/doctrines_controller.rb
  6. 2
      app/controllers/documents_controller.rb
  7. 7
      app/models/doctrine.rb
  8. 3
      app/views/doctrines/index.html.erb
  9. 4
      app/views/documents/show.html.erb
  10. 2
      config/routes.rb

5
app/components/document_doctrine_index_component.rb

@ -1,9 +1,10 @@
class DocumentDoctrineIndexComponent < BaseComponent
with_collection_parameter :doctrine
attr_reader :doctrine
attr_reader :doctrine, :opts
def initialize(doctrine:, current_user:)
def initialize(doctrine:, current_user:, opts: {})
@doctrine = doctrine
@opts = opts
end
delegate :id, to: :doctrine

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

@ -20,7 +20,7 @@
</button>
</div>
<%= render(SubjectsSidenavSubMenuComponent.new(current_user: current_user, opts: { main_sub_menu: "mainDoctrinesSubMenu", second_sub_menu: "secondDoctrinesSubMenu", third_sub_menu: "thirdDoctrinesSubMenu", fourth_sub_menu: "fourthDoctrinesSubMenu", fifth_sub_menu: "fifthDoctrinesSubMenu" })) %>
<%= render(SubjectsSidenavSubMenuComponent.new(current_user: current_user, opts: { is_doctrines_index: true, main_sub_menu: "mainDoctrinesSubMenu", second_sub_menu: "secondDoctrinesSubMenu", third_sub_menu: "thirdDoctrinesSubMenu", fourth_sub_menu: "fourthDoctrinesSubMenu", fifth_sub_menu: "fifthDoctrinesSubMenu" })) %>
</div>
<div class="accordion-item"> <h5 class="accordion-header"> <%= link_to "Desicions", decisions_path, class: "accordion-link text-decoration-none text-dark" %> </h5> </div>

4
app/components/subjects_sidenav_sub_menu_component.rb

@ -4,4 +4,8 @@ class SubjectsSidenavSubMenuComponent < BaseComponent
def initialize(current_user:, opts:)
@opts = opts
end
def doctrines_search_url(subject_id)
doctrines_path(subject_ids: [subject_id])
end
end

2
app/components/subjects_sidenav_sub_menu_component/subjects_sidenav_sub_menu_component.html.erb

@ -64,7 +64,7 @@
<% sub3.children.each do |sub4| %>
<div class="accordion-item">
<h5 class="accordion-header">
<%= link_to sub4.name, search_documents_path(subject_ids: sub4.id), class: "accordion-link text-decoration-none text-dark" %>
<%= link_to sub4.name, doctrines_path(subject_ids: [sub4.id]), class: "accordion-link text-decoration-none text-dark" %>
</h5>
</div>
<% end if sub3.children.present? %>

29
app/controllers/doctrines_controller.rb

@ -0,0 +1,29 @@
class DoctrinesController < ApplicationController
load_and_authorize_resource :doctrine, class: "Doctrine"
def index
@search = search_doctrines(search_params)
@doctrines = @search.results
respond_to do |format|
format.html
end
end
def show; end
private
def search_doctrines(args)
Doctrine.search do
if args[:subject_ids].present?
with(:subject_ids).any_of(args[:subject_ids].map(&:to_i))
end
paginate page: args[:page] || 1, per_page: args[:per_page] || 100
end
end
def search_params
params.permit(subject_ids: [])
end
end

2
app/controllers/documents_controller.rb

@ -17,7 +17,7 @@ class DocumentsController < ApplicationController
@doctrines = @document.doctrines
where = { enabled: true, state: "published" }
@cited_in_documents = @document.class.citing_docs_of(document, where)
@cited_in_documents = @document.class.citing_docs_of(@document, where)
# @cross_ref_documents = @document.class.cited_docs_of(document, where)
end

7
app/models/doctrine.rb

@ -40,4 +40,11 @@ class Doctrine < ApplicationRecord
subject_ids
end
searchable do
integer :document_id
integer :subject_ids, multiple: true
text :content
end
end

3
app/views/doctrines/index.html.erb

@ -0,0 +1,3 @@
<div class="card container-sm mt-1">
<%= render(DocumentDoctrineIndexComponent.with_collection(@doctrines, current_user: current_user, opts: { is_index: true })) %>
</div>

4
app/views/documents/show.html.erb

@ -53,7 +53,9 @@
</div>
<div class="tab-pane fade" id="documentTabContent" role="tabpanel">
<span> Full Text </span>
<div class="container">
<%= raw @document.content.html_safe%>
</div>
</div>
<div class="tab-pane fade" id="ciatatonTabContent" role="tabpanel">

2
config/routes.rb

@ -3,7 +3,7 @@ Rails.application.routes.draw do
root to: "home#index"
resources :doctrines, only: [] do
resources :doctrines, only: %i[index] do
scope module: :doctrine do
resources :annotations, only: %i[create update destroy]
end

Loading…
Cancel
Save