Browse Source

Implement `subjects#doctrines` UI

pull/12/head
alexdbondoc17 4 years ago
parent
commit
f32f5e7f5a
  1. 8
      app/components/document_doctrine_index_component.rb
  2. 48
      app/components/document_doctrine_index_component/document_doctrine_index_component.html.erb
  3. 20
      app/components/sidenav_component/sidenav_component.html.erb
  4. 6
      app/components/subjects_sidenav_sub_menu_component.rb
  5. 20
      app/components/subjects_sidenav_sub_menu_component/subjects_sidenav_sub_menu_component.html.erb
  6. 4
      app/controllers/subject_indexes_controller.rb
  7. 4
      app/views/doctrines/index.html.erb
  8. 2
      app/views/documents/show.html.erb
  9. 27
      app/views/subject_indexes/show.html.erb

8
app/components/document_doctrine_index_component.rb

@ -21,4 +21,12 @@ class DocumentDoctrineIndexComponent < BaseComponent
def annotation_form_url
doctrine_annotations_path(doctrine_id: id)
end
def subject_names
"(No Subjects Provided)"
end
def render?
doctrine.present? && doctrine.persisted?
end
end

48
app/components/document_doctrine_index_component/document_doctrine_index_component.html.erb

@ -1,23 +1,31 @@
<% if id.present? %>
<div class="card card-header row-flex m-3 clickable-link" href="<%= document_doctrine_path(document_id, id)%>">
<h4> <%= subjects.present? ? subjects.map(&:lineage_name).join(" <br> ") : "(No Subjects Provided)" %> </h4>
<div class="container-sm ms-3">
<p class="mb-0"> <%= raw content.html_safe %> </p>
<div class="card card-header row-flex m-3 clickable-link" href="<%= opts[:is_disable_clickable_link].present? ? '#' : document_doctrine_path(document_id, id)%>">
<% if opts[:is_subjects_index].blank? %>
<% if opts[:is_doctrines_index].present? && opts[:subject_ids].reject(&:blank?).present? %>
<h4> <%= subjects.where(id: opts[:subject_ids].map(&:to_i)).map(&:lineage_name).join(" ") %> </h4>
<% elsif subjects.present? %>
<% subjects.each do |subject| %>
<h4> <%= subject.lineage_name %> </h4>
<% end %>
<% else %>
<h4> (No Subjects Provided) </h4>
<% end %>
<% end %>
<div class="container-sm <%= opts[:is_subjects_index].present? ? 'm-0 ps-0' : 'ms-3' %>">
<p class="mb-0"> <%= raw content.html_safe %> </p>
<% annotations.each do |annotation| %>
<div class="container-sm ms-5">
<p class="mb-0">
<strong>
<%= "#{annotation.annomarks.map { |annomark| "(#{annomark.code})" }.join(" ")} #{[annotation.document.title, annotation.document.reference_number, annotation.document.docdate.strftime("%B %d, %Y"), annotation.phil_rep].join(', ')}" %>
</strong>
</p>
<% annotations.each do |annotation| %>
<div class="container-sm ms-5">
<p class="mb-0">
<strong>
<%= "#{annotation.annomarks.map { |annomark| "(#{annomark.code})" }.join(" ")} #{[annotation.document.title, annotation.document.reference_number, annotation.document.docdate.strftime("%B %d, %Y"), annotation.phil_rep].join(', ')}" %>
</strong>
</p>
<% if annotation.editor_notes.present? %>
<span class="m-5"> Editors Note: <%= annotation.editor_notes %> </span>
<% end %>
</div>
<% end %>
</div>
<% if annotation.editor_notes.present? %>
<span class="m-5"> Editors Note: <%= annotation.editor_notes %> </span>
<% end %>
</div>
<% end %>
</div>
<% end %>
</div>

20
app/components/sidenav_component/sidenav_component.html.erb

@ -10,25 +10,7 @@
</button>
</div>
<div class="accordion-collapse collapse" id="mainSubjectIndexSubMenu" data-bs-parent="#sidenav">
<div class="accordion-body pb-0 pe-0 pt-0">
<% Cdao::Subject.roots.each do |root| %>
<div class="accordion accordion-flush ps-20" id="firstLevelSubMenu">
<div class="accordion-item">
<div class="accordion-header">
<% if root.children.present? %>
<button class="<%= root.children.present? ? 'accordion-button' : '' %> collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#<%= ["sub2", root.id].join %>">
<h5> <%= link_to root.name, search_subject_indexes_path(subject_ids: root.id), class: "accordion-link text-decoration-none text-dark" %> </h5>
</button>
<% else %>
<h5> <%= link_to root.name, search_documensearch_subject_indexes_pathts_path(subject_ids: root.id), class: "accordion-link text-decoration-none text-dark" %> </h5>
<% end %>
</div>
</div>
</div>
<% end %>
</div>
</div>
<%= render(SubjectsSidenavSubMenuComponent.new(current_user: current_user, opts: { is_subjects_index: true, main_sub_menu: "mainSubjectIndexSubMenu", second_sub_menu: "secondSubjectIndexSubMenu", third_sub_menu: "thirdSubjectIndexSubMenu", fourth_sub_menu: "fourthSubjectIndexSubMenu", fifth_sub_menu: "fifthSubjectIndexSubMenu" })) %>
</div>
<div class="accordion-item">

6
app/components/subjects_sidenav_sub_menu_component.rb

@ -5,7 +5,9 @@ class SubjectsSidenavSubMenuComponent < BaseComponent
@opts = opts
end
def doctrines_search_url(subject_id)
doctrines_path(subject_ids: [subject_id])
def index_url(subject_id)
return doctrines_path(subject_ids: [subject_id]) if opts[:is_doctrines_index].present?
subject_index_path(subject_id)
end
end

20
app/components/subjects_sidenav_sub_menu_component/subjects_sidenav_sub_menu_component.html.erb

@ -6,10 +6,10 @@
<div class="accordion-header">
<% if root.children.present? %>
<button class="<%= root.children.present? ? 'accordion-button' : '' %> collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#<%= [opts[:second_sub_menu], root.id].join %>">
<h5> <%= link_to root.name, search_documents_path(subject_ids: root.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
<h5> <%= link_to root.name, index_url(root.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
</button>
<% else %>
<h5> <%= link_to root.name, search_documents_path(subject_ids: root.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
<h5> <%= link_to root.name, index_url(root.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
<% end %>
</div>
@ -22,10 +22,10 @@
<div class="accordion-header">
<% if sub1.children.present? %>
<button class="<%= sub1.children.present? ? 'accordion-button' : '' %> collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#<%= [opts[:third_sub_menu], sub1.id].join %>">
<h5> <%= link_to sub1.name, search_documents_path(subject_ids: sub1.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
<h5> <%= link_to sub1.name, index_url(sub1.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
</button>
<% else %>
<h5> <%= link_to sub1.name, search_documents_path(subject_ids: sub1.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
<h5> <%= link_to sub1.name, index_url(sub1.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
<% end %>
</div>
@ -37,10 +37,10 @@
<h5 class="accordion-header">
<% if sub2.children.present? %>
<button class="<%= sub2.children.present? ? 'accordion-button' : '' %> collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#<%= [opts[:fourth_sub_menu], sub2.id].join %>">
<h5> <%= link_to sub2.name, search_documents_path(subject_ids: sub2.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
<h5> <%= link_to sub2.name, index_url(sub2.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
</button>
<% else %>
<h5> <%= link_to sub2.name, search_documents_path(subject_ids: sub2.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
<h5> <%= link_to sub2.name, index_url(sub2.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
<% end %>
</h5>
@ -51,11 +51,11 @@
<div class="accordion-item">
<h5 class="accordion-header">
<% if sub3.children.present? %>
<button class="<%= sub2.children.present? ? 'accordion-button' : '' %> collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#<%= [opts[:fifth_sub_menu], sub3.id].join %>">
<h5> <%= link_to sub3.name, search_documents_path(subject_ids: sub3.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#<%= [opts[:fifth_sub_menu], sub3.id].join %>">
<h5> <%= link_to sub3.name, index_url(sub3.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
</button>
<% else%>
<h5> <%= link_to sub3.name, search_documents_path(subject_ids: sub3.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
<h5> <%= link_to sub3.name, index_url(sub3.id), class: "accordion-link text-decoration-none text-dark clickable-link" %> </h5>
<% end %>
</h5>
@ -64,7 +64,7 @@
<% sub3.children.each do |sub4| %>
<div class="accordion-item">
<h5 class="accordion-header">
<%= link_to sub4.name, doctrines_path(subject_ids: [sub4.id]), class: "accordion-link text-decoration-none text-dark clickable-link" %>
<%= link_to sub4.name, index_url(sub4.id), class: "accordion-link text-decoration-none text-dark clickable-link" %>
</h5>
</div>
<% end if sub3.children.present? %>

4
app/controllers/subject_indexes_controller.rb

@ -9,7 +9,9 @@ class SubjectIndexesController < ApplicationController
def edit; end
def show; end
def show
@doctrines = @subject_index.doctrines
end
def search
@search = search_subject(search_params)

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

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

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

@ -17,7 +17,7 @@
</table>
</div>
<div class="card-body h100">
<div class="card-body">
<ul class="nav nav-tabs" id="menuTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="analysisMenuTab" data-bs-toggle="tab" data-bs-target="#analysisTabContent" type="button" role="tab" aria-controls="analysisTab" aria-selected="true">Analysis</button>

27
app/views/subject_indexes/show.html.erb

@ -1,23 +1,6 @@
<div class="container-fluid mt-2 p-0">
<div class="col-sm-12">
<div class="card">
<div class="card-header">
<h2> <%= @subject_index.name %>
<% if can? :destroy, Cdao::Subject %>
<a href="<%= subject_index_path(@subject_index) %>" class="btn btn-sm btn-danger right-0" data-confirm="Are you sure you want to delete this subject?" data-method="DELETE" role="button">
<i class="fas fa-trash-alt" data-toggle="tooltip" data-placement="bottom" title="Delete"></i>
</a>
<% end %>
<% if can? :update, Cdao::Subject %>
<a href="<%= edit_subject_index_path(@subject_index) %>" class="btn btn-sm btn-danger right-0" role="button">
<i class="fas fa-edit" data-toggle="tooltip" data-placement="bottom" title="Edit"></i>
</a>
<% end %>
</h2>
</div>
<div class="card-body">
<%= render(SubjectAccordionComponent.new(current_user: current_user, parent: @subject_index)) %>
</div>
</div>
<div class="card container-sm mt-1 p-0">
<h5 class="card-header"> <%= @subject_index.lineage_name %> </h5>
<div class="card-body">
<%= render(DocumentDoctrineIndexComponent.with_collection(@doctrines, current_user: current_user, opts: { is_subjects_index: true, is_disable_clickable_link: true })) %>
</div>
</div>
</div>

Loading…
Cancel
Save