30 changed files with 386 additions and 248 deletions
@ -0,0 +1,23 @@
|
||||
class AnnotationMarksModalFormComponent < BaseComponent |
||||
attr_reader :document, :annotation, :opts |
||||
|
||||
def initialize(current_user:, document:, annotation:, opts:) |
||||
@document = document |
||||
@annotation = annotation |
||||
@opts = opts |
||||
end |
||||
|
||||
def document_date_or_year |
||||
return document.year if document.docdate.blank? |
||||
|
||||
document.docdate.strftime("%B %d, %Y") |
||||
end |
||||
|
||||
def document_title |
||||
[document.title, document.reference_number, document_date_or_year].join(", ") |
||||
end |
||||
|
||||
def render? |
||||
opts[:form_url].present? && opts[:form_method].present? |
||||
end |
||||
end |
||||
@ -0,0 +1,45 @@
|
||||
<%= form_tag(opts[:form_url], method: opts[:form_method]) do %> |
||||
<div class="modal-dialog modal-lg modal-dialog-scrollable"> |
||||
<div class="modal-content"> |
||||
<div class="modal-header"> |
||||
<h5 class="modal-title">Edit Annotation Marks</h5> |
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> |
||||
</div> |
||||
|
||||
<div class="modal-body"> |
||||
<div class="row"> |
||||
<div class="col-sm-12 p-2"> |
||||
<%= label_tag :annotation_marks %> |
||||
<%= hidden_field_tag :document_id, opts[:document_id] %> |
||||
<%= select_tag "annomark_ids[]", options_from_collection_for_select(Annomark.all, :id, :name, annotation.annomark_ids), class: "form-select i-chosen", multiple: true, prompt: "Please select" %> |
||||
</div> |
||||
</div> |
||||
<div class="row"> |
||||
<div class="col-sm-12 p-2"> |
||||
<%= label_tag :document_title %> |
||||
<%= text_area_tag :document_title, document_date_or_year, class: "form-control" %> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="row"> |
||||
<div class="col-sm-12 p-2"> |
||||
<%= label_tag :phil_rep %> |
||||
<%= text_field_tag :phil_rep, annotation.phil_rep, class: "form-control" %> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="row"> |
||||
<div class="col-sm-12 p-2"> |
||||
<%= label_tag :editor_notes %> |
||||
<%= text_area_tag :editor_notes, annotation.editor_notes, class: "form-control i-ckeditor" %> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="modal-footer"> |
||||
<%= submit_tag "Save", class: "btn btn-primary" %> |
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<% end %> |
||||
@ -1,62 +0,0 @@
|
||||
<div class="card"> |
||||
<div class="card-header"> </div> |
||||
<div class="card-body"> |
||||
<%= form_tag(doctrine_form_url, method: :patch) do %> |
||||
<div class="row"> |
||||
<%= label_tag :subject_indexes %> |
||||
<%= select_tag "subject_ids[]", options_from_collection_for_select(Cdao::Subject.all, :id, :lineage_name, subject_ids), class: "form-select i-chosen", multiple: true, prompt: "Please select" %> |
||||
</div> |
||||
|
||||
<div class="row"> |
||||
<div class="col-sm-12 p-2"> |
||||
<%= label_tag :content %> |
||||
<%= text_area_tag :content, content, class: "i-ckeditor form-control", placeholder: "Doctrine" %> |
||||
</div> |
||||
</div> |
||||
<% end %> |
||||
|
||||
<div class="row"> |
||||
<div class="col-sm-12 p-2"> |
||||
<button type="button" class="btn btn-primary" data-bs-toggle="collapse" data-bs-target="#caseListsCollapse" aria-expanded="false" aria-controls="collapseExample"> Case Lists </button |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="collapse" id="caseListsCollapse"> |
||||
<div class="row"> |
||||
<div class="col-sm-10 p-2"> |
||||
<%= text_field_tag :q, nil, class: "form-control", placeholder: "Search GR Number" %> |
||||
</div> |
||||
|
||||
<div class="col-sm-1 p-2"> |
||||
<%= button_tag "search", class: "btn btn-primary" %> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="row tab"> |
||||
<table class="table table-striped table-hover mb-0"> |
||||
<thead> |
||||
<th class="bg-light"> Reference No. </th> |
||||
<th class="bg-light"> Date </th> |
||||
<th class="bg-light"> Title </th> |
||||
<th class="bg-light"> </th> |
||||
</thead> |
||||
|
||||
<tbody> |
||||
<%= render(DocumentIndexTableComponent.with_collection(Cdao::Jurisprudence.first(5), current_user: current_user, opts: { is_case_lists: true, form_url: annotation_form_url, document_id: document_id })) %> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
</div> |
||||
|
||||
<% doctrine.annotations.each do |annotation| %> |
||||
<div class="row"> |
||||
<div class="card col-sm-12"> |
||||
<div class="card-header p-1"> |
||||
<h6> <%= "#{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(', ')}" %> </h6> |
||||
<span class="m-3"> Editors Note: <%= annotation.editor_notes %> </span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<% end %> |
||||
</div> |
||||
</div> |
||||
@ -1,9 +0,0 @@
|
||||
class DoctrineShowComponent < BaseComponent |
||||
with_collection_parameter :search_result |
||||
attr_reader :doctrine, :current_user |
||||
|
||||
def initialize(doctrine:, current_user:) |
||||
@doctrine = doctrine |
||||
@current_user = current_user |
||||
end |
||||
end |
||||
@ -1,64 +0,0 @@
|
||||
<div class="card"> |
||||
<div class="card-body"> |
||||
<%= form_tag(doctrine_form_url, method: :patch) do %> |
||||
<div class="row"> |
||||
<%= label_tag :subject_indexes %> |
||||
<%= select_tag "subject_ids[]", options_from_collection_for_select(Cdao::Subject.all, :id, :lineage_name, subject_ids), class: "form-select i-chosen", multiple: true, prompt: "Please select" %> |
||||
</div> |
||||
|
||||
<div class="row"> |
||||
<div class="col-sm-12 p-2"> |
||||
<%= label_tag :content %> |
||||
<%= text_area_tag :content, content, class: "i-ckeditor form-control", placeholder: "Doctrine" %> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="row"> |
||||
<div class="col-sm-12 p-2"> |
||||
<%= submit_tag "Update Doctrine", class: "btn btn-primary" %> |
||||
</div> |
||||
</div> |
||||
<% end %> |
||||
|
||||
<div class="row"> |
||||
<div class="col-sm-12 p-2"> |
||||
<button type="button" class="btn btn-primary" data-bs-toggle="collapse" data-bs-target="#caseListsCollapse" aria-expanded="false" aria-controls="collapseExample"> Case Lists </button |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="collapse" id="caseListsCollapse"> |
||||
<div class="row"> |
||||
<div class="col-sm-10 p-2"> |
||||
<%= text_field_tag :q, nil, class: "form-control", placeholder: "Search GR Number" %> |
||||
</div> |
||||
|
||||
<div class="col-sm-1 p-2"> |
||||
<%= button_tag "search", class: "btn btn-primary" %> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="row tab"> |
||||
<table class="table table-striped table-hover mb-0"> |
||||
<thead> |
||||
<th class="bg-light"> Reference No. </th> |
||||
<th class="bg-light"> Date </th> |
||||
<th class="bg-light"> Title </th> |
||||
<th class="bg-light"> </th> |
||||
</thead> |
||||
|
||||
<tbody> |
||||
<%= render(DocumentIndexTableComponent.with_collection(Cdao::Jurisprudence.first(5), current_user: current_user, opts: { is_case_lists: true, form_url: annotation_form_url, document_id: document_id })) %> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
</div> |
||||
|
||||
<%= form_tag(annotation_form_url, method: :patch) do %> |
||||
<div class="row"> |
||||
<%= label_tag :annotation %> |
||||
<%%= hidden_tag :document_id, doctrine > |
||||
<%= text_area_tag :content, content, class: "i-ckeditor form-control", placeholder: "Doctrine" %> |
||||
</div> |
||||
<%end%> |
||||
</div> |
||||
</div> |
||||
@ -0,0 +1,23 @@
|
||||
<% 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> |
||||
|
||||
<% 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> |
||||
</div> |
||||
<% end %> |
||||
@ -0,0 +1,28 @@
|
||||
class DocumentDoctrineShowComponent < BaseComponent |
||||
attr_reader :current_user, :doctrine |
||||
|
||||
def initialize(current_user:, doctrine:, opts: {}) |
||||
@doctrine = doctrine |
||||
@current_user = current_user |
||||
end |
||||
|
||||
delegate :id, to: :doctrine |
||||
delegate :subject_ids, to: :doctrine |
||||
delegate :content, to: :doctrine |
||||
delegate :document_id, to: :doctrine |
||||
delegate :document, to: :doctrine |
||||
delegate :annotations, to: :doctrine |
||||
delegate :subjects, to: :doctrine |
||||
|
||||
def doctrine_form_url |
||||
jurisprudence_doctrines_path(jurisprudence_id: document_id) |
||||
end |
||||
|
||||
def edit_doctrine_form_url |
||||
jurisprudence_doctrines_path(jurisprudence_id: document_id, id: id) |
||||
end |
||||
|
||||
def annotation_form_url |
||||
doctrine_annotations_path(doctrine_id: id) |
||||
end |
||||
end |
||||
@ -0,0 +1,90 @@
|
||||
<div class="card clickable"> |
||||
<h5 class="card-header"> |
||||
Doctrine Details |
||||
<a class="btn btn-sm btn-primary justify-content-end" data-bs-toggle="modal" data-bs-target="#doctrineModal"> |
||||
<i class="fas fa-edit" data-toggle="tooltip" data-placement="bottom" title="Edit Doctrine"></i> |
||||
</a> |
||||
</h5> |
||||
|
||||
<div class="card-body"> |
||||
<div class="row"> |
||||
<div class="container-sm row-flex col-sm-12 mt-2"> |
||||
<%= render(DoctrineModalFormComponent.new(current_user: current_user, doctrine: doctrine, opts: { form_url: jurisprudence_doctrine_path(jurisprudence_id: document_id, id: doctrine.id), form_method: "PUT" })) %> |
||||
</div> |
||||
</div> |
||||
|
||||
<%= form_tag(doctrine_form_url, method: :patch) do %> |
||||
<div class="row"> |
||||
<strong> <%= label_tag :subjects %> </strong> |
||||
<%= select_tag "subject_ids[]", options_from_collection_for_select(Cdao::Subject.all, :id, :lineage_name, subject_ids), class: "form-select i-chosen", multiple: true, prompt: "Please select" %> |
||||
</div> |
||||
|
||||
<div class="row"> |
||||
<div class="col-sm-12 p-2"> |
||||
<strong> <%= label_tag :content %> </strong> |
||||
<%= text_area_tag :content, content, class: "i-ckeditor form-control", placeholder: "Doctrine" %> |
||||
</div> |
||||
</div> |
||||
<% end %> |
||||
|
||||
<div class="row"> |
||||
<div class="col-sm-10"> </div> |
||||
<div class="col-sm-2 p-2"> |
||||
<button type="button" class="btn btn-primary" data-bs-toggle="collapse" data-bs-target="#caseListsCollapse" aria-expanded="false" aria-controls="collapseExample"> Case Lists </button> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="collapse mb-3" id="caseListsCollapse"> |
||||
<div class="row"> |
||||
<div class="col-sm-10 p-2"> |
||||
<%= text_field_tag :q, nil, class: "form-control", placeholder: "Search GR Number" %> |
||||
</div> |
||||
|
||||
<div class="col-sm-1 p-2"> |
||||
<%= button_tag "search", class: "btn btn-primary" %> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="row tab"> |
||||
<table class="table table-striped table-hover mb-0"> |
||||
<thead> |
||||
<th class="bg-light"> Reference No. </th> |
||||
<th class="bg-light"> Date </th> |
||||
<th class="bg-light"> Title </th> |
||||
<th class="bg-light"> </th> |
||||
</thead> |
||||
|
||||
<tbody> |
||||
<%= render(DocumentIndexTableComponent.with_collection(Cdao::Jurisprudence.first(5), current_user: current_user, opts: { is_case_lists: true, form_url: annotation_form_url, form_method: :post, document_id: document_id })) %> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="card row-flex"> |
||||
<h5 class="card-header"> Annotation Marks </h5> |
||||
<div class="card-body"> |
||||
<% doctrine.annotations.order(rank: :asc).each do |annotation| %> |
||||
<div class="container-sm ms-1"> |
||||
<p> |
||||
<strong> <%= "#{annotation.annomarks.map { |annomark| "(#{annomark.code})" }.join(" ")}" %> </strong> |
||||
<%= raw [annotation.document.title, annotation.document.reference_number, annotation.document.docdate.strftime("%B %d, %Y"), annotation.phil_rep].join(', ').html_safe %> |
||||
<a class="btn btn-sm btn-primary justify-content-end" data-bs-toggle="modal" data-bs-target="#editAnnotationModal<%= annotation.id %>"> |
||||
<i class="fas fa-edit" data-toggle="tooltip" data-placement="bottom" title="Edit Annotation Marks"></i> |
||||
</a> |
||||
</p> |
||||
<% if annotation.editor_notes.present? %> |
||||
<span class="ms-3"> Editors Note: <%= annotation.editor_notes %> </span> |
||||
<% end %> |
||||
</div> |
||||
|
||||
<div class="row"> |
||||
<div class="modal fade" id="editAnnotationModal<%= annotation.id %>" tabindex="-1" aria-labelledby="annotationModal" aria-hidden="true"> |
||||
<%= render AnnotationMarksModalFormComponent.new(current_user: current_user, document: document, annotation: annotation, opts: { form_url: doctrine_annotation_path(id, annotation.id), form_method: "PUT" }) %> |
||||
</div> |
||||
</div> |
||||
<% end %> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
@ -1,29 +1,29 @@
|
||||
<% if @current_user.present? %> |
||||
<div class="accordion accordion-flush flex-column align-items-stretch p-3 overflow-auto sidenav" id="sidenav"> |
||||
<div class="accordion-item"> <h5 class="accordion-header"> <%= link_to "Home", root_path, class: "text-dark" %> </h5> </div> |
||||
<div class="accordion-item"> <h5 class="accordion-header"> <%= link_to "Search", documents_path, class: "text-dark" %> </h5> </div> |
||||
<div class="accordion-item"> <h5 class="accordion-header"> <%= link_to "Home", root_path, class: "accordion-link text-decoration-none text-dark" %> </h5> </div> |
||||
<div class="accordion-item"> <h5 class="accordion-header"> <%= link_to "Search", documents_path, class: "accordion-link text-decoration-none text-dark" %> </h5> </div> |
||||
|
||||
<div class="accordion-item"> |
||||
<h5 class="accordion-header"> |
||||
<div class="accordion-header"> |
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#mainSubjectIndexSubMenu"> |
||||
<%= link_to "Subject Index", "#", class: "accordion-link text-dark" %> |
||||
<h5> <%= link_to "Subject Index", "#", class: "accordion-link text-decoration-none text-dark" %> </h5> |
||||
</button> |
||||
</h5> |
||||
</div> |
||||
|
||||
<%= render(SubjectsSidenavSubMenuComponent.new(current_user: current_user, opts: { 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"> |
||||
<h5 class="accordion-header"> |
||||
<div class="accordion-header"> |
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#mainDoctrinesSubMenu"> |
||||
<%= link_to "Doctrines", "#", class: "accordion-link text-dark" %> |
||||
<h5> <%= link_to "Doctrines", "#", class: "accordion-link text-decoration-none text-dark" %> </h5> |
||||
</button> |
||||
</h5> |
||||
</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" })) %> |
||||
</div> |
||||
|
||||
<div class="accordion-item"> <h5 class="accordion-header"> <%= link_to "Desicions", decisions_path, class: "text-dark" %> </h5> </div> |
||||
<div class="accordion-item"> <h5 class="accordion-header"> <%= link_to "Logout", destroy_user_session_path, class: "text-dark" %> </h5> </div> |
||||
<div class="accordion-item"> <h5 class="accordion-header"> <%= link_to "Desicions", decisions_path, class: "accordion-link text-decoration-none text-dark" %> </h5> </div> |
||||
<div class="accordion-item"> <h5 class="accordion-header"> <%= link_to "Logout", destroy_user_session_path, class: "accordion-link text-decoration-none text-dark" %> </h5> </div> |
||||
</div> |
||||
<% end %> |
||||
|
||||
@ -0,0 +1,7 @@
|
||||
class Document::DoctrinesController < ApplicationController |
||||
load_and_authorize_resource :document, class: "Cdao::Jurisprudence" |
||||
load_and_authorize_resource :doctrine, class: "Doctrine", through: :document |
||||
|
||||
|
||||
def show; end |
||||
end |
||||
@ -0,0 +1,23 @@
|
||||
<div class="card mt-1 g-3"> |
||||
<div class="card-header mt-1 mb-2 col-sm-12"> |
||||
<table class="table table-borderless"> |
||||
<tbody> |
||||
<tr> |
||||
<td class="text-start" style="width: 160px;"> Reference Number: </td> |
||||
<td class="text-start"> <strong> <%= @document.reference_number %> </strong> </td> |
||||
<td class="text-end" style="width: 50px;" > Date: </td> |
||||
<td class="text-end" style="width: 160px;"> <strong> <%= @document.docdate.present? ? @document.docdate.strftime("%m/%d/%Y") : @document.year %> </strong> </td> |
||||
</tr> |
||||
|
||||
<tr> |
||||
<td style="width: 160px;" class="text-start"> Title: </td> |
||||
<td colspan="3" class="text-start"> <strong> <%= @document.title %> </strong> </td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
|
||||
<div class="card-body"> |
||||
<%= render(DocumentDoctrineShowComponent.new(current_user: current_user, doctrine: @doctrine)) %> |
||||
</div> |
||||
</div> |
||||
Loading…
Reference in new issue