Browse Source

Improve Main UI

pull/17/head
alexdbondoc17 4 years ago
parent
commit
03a99660a7
  1. 23
      app/components/annotation_marks_modal_form_component/annotation_marks_modal_form_component.html.erb
  2. 4
      app/components/doctrine_modal_form_component/doctrine_modal_form_component.html.erb
  3. 18
      app/components/document_doctrine_index_component/document_doctrine_index_component.html.erb
  4. 120
      app/components/document_doctrine_show_component/document_doctrine_show_component.html.erb
  5. 31
      app/components/document_index_table_body_component.rb
  6. 58
      app/components/document_index_table_body_component/document_index_table_body_component.html.erb
  7. 104
      app/components/sidenav_component/sidenav_component.html.erb
  8. 59
      app/components/subject_accordion_component/subject_accordion_component.html.erb
  9. 21
      app/components/subject_index_form_component.rb
  10. 31
      app/components/subject_index_form_component/subject_index_form_component.html.erb
  11. 2
      app/components/subjects_sidenav_sub_menu_component.rb
  12. 17
      app/controllers/doctrine/annotations_controller.rb
  13. 3
      app/controllers/documents_controller.rb
  14. 2
      app/controllers/subject_indexes_controller.rb
  15. 4
      app/javascript/controllers/application_controller.js
  16. 35
      app/javascript/controllers/document_controller.js
  17. 4
      app/javascript/controllers/select2_controller.js
  18. 20
      app/javascript/controllers/selectize_controller.js
  19. 4
      app/javascript/src/application.scss
  20. 9
      app/reflexes/document_reflex.rb
  21. 28
      app/views/document/doctrines/_document_search_results_table.html.erb
  22. 57
      app/views/documents/index.html.erb
  23. 2
      app/views/layouts/application.html.erb
  24. 2
      app/views/subject_indexes/edit.html.erb
  25. 22
      app/views/subject_indexes/index.html.erb
  26. 2
      app/views/subject_indexes/new.html.erb
  27. 36
      app/views/subject_indexes/show.html.erb
  28. 3
      package.json
  29. 102
      yarn.lock

23
app/components/annotation_marks_modal_form_component/annotation_marks_modal_form_component.html.erb

@ -8,17 +8,24 @@
<div class="modal-body">
<div class="row">
<div class="col-sm-12 p-2" data-controller="select2">
<%= label_tag :annotation_marks %>
<div class="col-sm-12 p-2">
<strong> <%= label_tag :annotation_marks %> </strong>
<%= hidden_field_tag :document_id, document.id %>
<%= select_tag "annomark_ids[]", options_from_collection_for_select(Annomark.all, :id, :name, annotation.annomark_ids), class: "form-select annomark-ids-select2", multiple: true, prompt: "Please select" %>
<%= select_tag "annomark_ids[]", options_from_collection_for_select(Annomark.all, :id, :name, annotation.annomark_ids), class: "form-select default-selectize", multiple: true, prompt: "Please select" %>
</div>
</div>
<div class="row">
<div class="col-sm-12 p-2">
<strong> <%= label_tag :document_title %> </strong>
<%= text_area_tag :document_title, document_title, class: "form-control selected-citing-docs" %>
</div>
</div>
<div class="row">
<div class="col-sm-12 p-2">
<%= label_tag :document_title %>
<%= text_area_tag :document_title, document_title, class: "form-control" %>
<strong> Selected Citing Documents </strong>
<%= select_tag "document_ids[]", [], class: "form-select selected-citing-docs default-selectize", multiple: true %>
</div>
</div>
@ -28,7 +35,7 @@
<%= text_field_tag :q, nil, class: "form-control", placeholder: "Search GR Number", data: { target: "document.input" } %>
</div>
<div class="col-sm-1 p-2">
<%= button_tag "Search", class: "btn btn-primary", data: { action: "click->document#modalDocumentSearch" } %>
<button type="button" class="btn btn-primary" data-action="click->document#modalDocumentSearch"> Search </button>
</div>
</div>
@ -48,14 +55,14 @@
<div class="row">
<div class="col-sm-12 p-2">
<%= label_tag :phil_rep %>
<strong> <%= label_tag :phil_rep %> </strong>
<%= 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 %>
<strong> <%= label_tag :editor_notes %> </strong>
<%= rich_text_area_tag :editor_notes, annotation.editor_notes, placeholder: "Editor Notes" %>
</div>
</div>

4
app/components/doctrine_modal_form_component/doctrine_modal_form_component.html.erb

@ -9,9 +9,9 @@
<div class="modal-body">
<div class="row">
<div class="col-sm-12 p-2" data-controller="select2">
<div class="col-sm-12 p-2">
<strong> <%= label_tag :subjects %> </strong>
<%= select_tag "subject_ids[]", options_from_collection_for_select(subjects, :id, :lineage_name, doctrine.subject_ids), class: "form-select subject-ids-modal-select2", multiple: true, prompt: "Please select" %>
<%= select_tag "subject_ids[]", options_from_collection_for_select(subjects, :id, :lineage_name, doctrine.subject_ids), class: "form-select default-selectize", multiple: true, prompt: "Please select" %>
</div>
</div>

18
app/components/document_doctrine_index_component/document_doctrine_index_component.html.erb

@ -14,17 +14,25 @@
<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">
<div class="container-sm ms-5">
<% annotations.each do |annotation| %>
<p class="mb-0">
<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].reject(&:blank?).join(', ') %>
</p>
<% if annotation.editor_notes.present? %>
<span class="m-5"> Editors Note: <%= annotation.editor_notes %> </span>
<div class="row">
<div class="col-sm-2 ms-5 p-0" style="width: 105px;">
<span> Editors Note: </span>
</div>
<div class="col-sm-10 ps-0">
<%= raw annotation.editor_notes %>
</div>
</div>
<% end %>
</div>
<% end %>
<% end %>
</div>
</div>
</div>

120
app/components/document_doctrine_show_component/document_doctrine_show_component.html.erb

@ -17,19 +17,17 @@
</div>
<div class="card-body">
<%= form_tag(doctrine_form_url, method: :patch, local: true) do %>
<div class="row" data-controller="select2">
<div class="row">
<strong> <%= label_tag :subjects %> </strong>
<%= select_tag "subjects_ids[]", options_from_collection_for_select(Cdao::Subject.all, :id, :lineage_name, subject_ids), class: "form-select subjects-select2", multiple: true, prompt: "Please select" %>
<%= select_tag "subjects_ids[]", options_from_collection_for_select(Cdao::Subject.all, :id, :lineage_name, subject_ids), class: "form-select default-selectize", multiple: true, prompt: "Please select", readonly: true %>
</div>
<div class="row">
<div class="col-sm-12 p-2">
<strong> <%= label_tag :content %> </strong>
<%= rich_text_area_tag :content, content, placeholder: "Doctrine Content" %>
<%= rich_text_area_tag :content, content, placeholder: "Doctrine Content", readonly: true %>
</div>
</div>
<% end %>
<div class="row">
<div class="col-sm-10"> </div>
@ -59,6 +57,79 @@
<tbody id="documentIndexTable"> </tbody>
</table>
<div class="modal fade new-annotation-modal" id="newAnnotationModal" tabindex="-1" aria-labelledby="annotationModal" aria-hidden="true">
<%= form_tag(doctrine_annotations_path(id), method: :post) do%>
<div class="modal-dialog modal-lg modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">New 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">
<strong> <%= label_tag :annotation_marks %> </strong>
<%= hidden_field_tag :document_id, nil %>
<%= select_tag "annomark_ids[]", options_from_collection_for_select(Annomark.all, :id, :name), class: "form-select default-selectize", multiple: true, prompt: "Please select" %>
</div>
</div>
<div class="row">
<div class="col-sm-12 p-2">
<strong> <%= label_tag :document_title %> </strong>
<%= text_area_tag :document_title, nil, class: "form-control" %>
</div>
</div>
<div class="row">
<div class="row" data-controller="document">
<div class="col-sm-10 p-2">
<%= text_field_tag :q, nil, class: "form-control", placeholder: "Search GR Number", data: { target: "document.input" } %>
</div>
<div class="col-sm-1 p-2">
<button type="button" class="btn btn-primary" data-action="click->document#modalDocumentSearch"> Search </button>
</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 id="modalDocumentSearchTable"> </tbody>
</table>
</div>
</div>
<div class="row">
<div class="col-sm-12 p-2">
<strong> <%= label_tag :phil_rep %> </strong>
<%= text_field_tag :phil_rep, nil, class: "form-control" %>
</div>
</div>
<div class="row">
<div class="col-sm-12 p-2">
<strong> <%= label_tag :editor_notes %> </strong>
<trix-editor id="editor_notes" placeholder="Doctrine Content"> </trix-editor>
</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 %>
</div>
</div>
</div>
@ -66,26 +137,31 @@
<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">
<div class="row">
<div class="col-sm-10">
<p class="pb-0">
<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].reject(&:blank?).join(', ').html_safe %>
</p>
</div>
<div class="col-sm-2">
<a class="btn btn-sm btn-secondary" data-bs-toggle="modal" data-bs-target="#editAnnotationModal<%= annotation.id %>"> Edit </a>
<a class="btn btn-sm btn-danger" href="<%= doctrine_annotation_path(doctrine.id, annotation.id) %>" data-confirm="Are you sure to delete this record?" data-method="DELETE"> Delete </a>
</div>
</div>
<% if annotation.editor_notes.present? %>
<div class="row">
<div class="col-sm-10">
<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].reject(&:blank?).join(', ').html_safe %>
</p>
<div class="col-sm-1 ms-5 p-0" style="width: 105px;">
<span> Editors Note: </span>
</div>
<div class="col-sm-2">
<a class="btn btn-sm btn-secondary" data-bs-toggle="modal" data-bs-target="#editAnnotationModal<%= annotation.id %>"> Edit </a>
<a class="btn btn-sm btn-danger" href="<%= doctrine_annotation_path(doctrine.id, annotation.id) %>" data-confirm="Are you sure to delete this record?" data-method="DELETE"> Delete </a>
<div class="col-sm-10 ps-0">
<%= raw annotation.editor_notes %>
</div>
<div>
<% if annotation.editor_notes.present? %>
<span class="ms-3"> Editors Note: <%= annotation.editor_notes %> </span>
<% end %>
</div>
</div>
<% end %>
<div class="row annotation-marks-modal-container">
<div class="modal fade" id="editAnnotationModal<%= annotation.id %>" tabindex="-1" aria-labelledby="annotationModal" aria-hidden="true">

31
app/components/document_index_table_body_component.rb

@ -1,31 +0,0 @@
class DocumentIndexTableBodyComponent < BaseComponent
with_collection_parameter :search_result
attr_reader :search_result, :opts
def initialize(search_result:, current_user:, opts: {})
@search_result = search_result
@opts = opts
end
def document_id
search_result["id"]
end
def reference_number
search_result["reference_number"]
end
def title
search_result["title"]
end
def date_or_year
return search_result["docdate"].to_date.strftime("%m/%d/%Y") if search_result["docdate"].present?
search_result["year"]
end
def form_url
doctrine_annotations_path(doctrine_id: opts[:doctrine_id])
end
end

58
app/components/document_index_table_body_component/document_index_table_body_component.html.erb

@ -1,58 +0,0 @@
<tr>
<td> <%= reference_number %> </td>
<td> <%= title %> </td>
<td> <%= date_or_year %> </td>
<% if opts[:is_case_lists].present? %>
<td>
<a class="btn btn-sm btn-primary" data-bs-toggle="modal" data-bs-target="#annotationModal<%= document_id %>"> Add </a>
<div class="modal fade" id="annotationModal<%= document_id %>" tabindex="-1" aria-labelledby="annotationModal" aria-hidden="true">
<%= form_tag(opts[:form_url], method: :post) do %>
<div class="modal-dialog modal-lg modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">New 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, document_id %>
<%= select_tag "annomark_ids[]", options_from_collection_for_select(Annomark.all, :id, :name, params[: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, [title, reference_number, date_or_year].join(", "), class: "form-control" %>
</div>
</div>
<div class="row">
<div class="col-sm-12 p-2">
<%= label_tag :phil_rep %>
<%= text_field_tag :phil_rep, params[:phil_rep], class: "form-control" %>
</div>
</div>
<div class="row">
<div class="col-sm-12 p-2">
<%= label_tag :editor_notes %>
<%= rich_text_area_tag :editor_notes, params[:editor_notes], placeholder: "Editor Notes" %>
</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 %>
</div>
</td>
<% end %>
</tr>

104
app/components/sidenav_component/sidenav_component.html.erb

@ -1,48 +1,72 @@
<% if @current_user.present? %>
<div class="sidebar sidebar-body d-flex flex-column align-items-center align-items-sm-start pt-2 text-white min-vh-100">
<ul class="nav flex-column text-white w-100">
<a href="/" class="nav-link d-flex align-items-center h3 text-white my-2 w-100">
PJET
</a>
<hr/>
<li class="nav-link d-flex align-items-center d-flex align-items-center">
<i class="fas fa-home"></i> <%= link_to "Home", root_path, class: "mx-2 text-white text-decoration-none w-100" %>
</li>
<li class="nav-link d-flex align-items-center">
<i class="fas fa-search"></i><%= link_to "Search", documents_path, class: "mx-2 text-white text-decoration-none w-100" %>
</li>
<li class="nav-link">
<div class="accordion-item accordion-body bg-transparent ">
<div class="accordion-header bg-transparent">
<button class="accordion-button collapsed bg-transparent" type="button" data-bs-toggle="collapse" data-bs-target="#mainSubjectIndexSubMenu">
<i class="fas fa-indent"></i> <%= link_to "Subject Index", "#", class: "accordion-link text-decoration-none mx-2 text-dark text-white " %>
</button>
<% if current_user.present? %>
<div class="sidebar sidebar-body d-flex flex-column align-items-center align-items-sm-start pt-2 text-white min-vh-100">
<ul class="nav flex-column text-white w-100">
<a href="/" class="nav-link d-flex align-items-center h3 text-white my-2 w-100">
PJET
</a>
<hr/>
<li class="nav-link d-flex align-items-center d-flex align-items-center">
<i class="fas fa-home"></i> <%= link_to "Home", root_path, class: "mx-2 text-white text-decoration-none w-100" %>
</li>
<li class="nav-link d-flex align-items-center">
<i class="fas fa-search"></i> <%= link_to "Search", documents_path, class: "mx-2 text-white text-decoration-none w-100" %>
</li>
<li class="nav-link">
<div class="accordion-item accordion-body bg-transparent ">
<div class="accordion-header bg-transparent">
<button class="accordion-button collapsed bg-transparent" type="button" data-bs-toggle="collapse" data-bs-target="#mainSubjectIndexSubMenu">
<i class="fas fa-indent"></i> <%= link_to "Subjects", "#", class: "accordion-link text-decoration-none mx-2 text-dark text-white " %>
</button>
</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>
</li>
<%= 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>
<li class="nav-link ">
<div class="accordion-item accordion-body bg-transparent">
<div class="accordion-header">
<button class="accordion-button collapsed bg-transparent" type="button" data-bs-toggle="collapse" data-bs-target="#mainDoctrinesSubMenu">
<i class="fas fa-book"></i> <%= link_to "Doctrines", "#", class: "accordion-link text-decoration-none mx-2 text-dark text-white " %>
</button>
</div>
<li class="nav-link ">
<div class="accordion-item bg-transparent accordion-body">
<div class="accordion-header">
<button class="accordion-button collapsed bg-transparent" type="button" data-bs-toggle="collapse" data-bs-target="#mainDoctrinesSubMenu">
<i class="fas fa-book"></i> <%= link_to "Doctrines", "#", class: "accordion-link text-decoration-none mx-2 text-dark text-white " %>
</button>
</div>
<%= 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>
</li>
<%= 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>
</li>
<li class="nav-link d-flex align-items-center">
<i class="fas fa-map-signs"></i> <%= link_to "Desicions", decisions_path, class: "mx-2 text-white text-decoration-none" %>
</li>
<li class="nav-link d-flex align-items-center">
<i class="fas fa-map-signs"></i><%= link_to "Desicions", decisions_path, class: "mx-2 text-white text-decoration-none" %>
</li>
<li class="nav-link d-flex align-items-center">
<i class="fas fa-sign-out-alt"></i><%= link_to "Logout", destroy_user_session_path, class: "mx-2 text-white text-decoration-none" %>
</li>
</ul>
</div>
<li class="nav-link">
<div class="accordion-item accordion-body bg-transparent ">
<div class="accordion-header bg-transparent">
<button class="accordion-button collapsed bg-transparent" type="button" data-bs-toggle="collapse" data-bs-target="#settings">
<i class="fas fa-cog"></i> <%= link_to "Settings", "#", class: "accordion-link text-decoration-none mx-2 text-white" %>
</button>
</div>
<div class="accordion-collapse collapse" id="settings" data-bs-parent="#sidenav">
<div class="accordion-body pb-0 pe-0 pt-0">
<div class="accordion accordion-flush ps-20" id="firstLevelSubMenu">
<div class="accordion-item bg-transparent">
<div class="accordion-header bg-transparent">
<%= link_to "Subjects", subject_indexes_path, class: "accordion-link text-white text-decoration-none text-dark d-block sub1 clickable-link" %>
</div>
</div>
</div>
</div>
</div>
</div>
</li>
<li class="nav-link d-flex align-items-center">
<i class="fas fa-sign-out-alt"></i> <%= link_to "Logout", destroy_user_session_path, class: "mx-2 text-white text-decoration-none" %>
</li>
</ul>
</div>
<% end %>

59
app/components/subject_accordion_component/subject_accordion_component.html.erb

@ -1,35 +1,60 @@
<% parent.children.each do |second_subject| %>
<div class="accordion accordion-flush ps-20" id="#secondLevelPanel<%= second_subject.id %>">
<% parent.children.each do |sub1| %>
<div class="accordion accordion-flush ps-20" id="#secondLevelPanel<%= sub1.id %>">
<div class="accordion-item">
<div class="<%= second_subject.children.present? ? 'accordion-button' : '' %> collapsed" data-bs-toggle="collapse" data-bs-target="#<%= ["secondLevel", second_subject.id].join %>">
<%= link_to second_subject.name, subject_index_path(second_subject.id), class: "clickable-link" %>
<div class="accordion-header">
<% if sub1.children.present? %>
<div class="accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#<%= ["secondLevel", sub1.id].join %>">
<%= link_to sub1.name, subject_index_path(sub1.id), class: "accordion-link text-decoration-none text-dark d-block sub2 clickable-link" %>
<%= link_to "Add Sub Subject", new_subject_index_path(parent_id: sub1.id), class: "btn btn-sm btn-primary text-decoration-none d-block sub1 clickable-link position-absolute end-0 me-4" %>
</div>
<% else %>
<%= link_to sub1.name, subject_index_path(sub1.id), class: "accordion-link text-decoration-none text-dark d-block sub2 clickable-link" %>
<%= link_to "Add Sub Subject", new_subject_index_path(parent_id: sub1.id), class: "btn btn-sm btn-primary text-decoration-none d-block sub1 clickable-link position-absolute end-0 me-2" %>
<% end %>
</div>
<div class="accordion-collapse collapse" id="<%= ["secondLevel", second_subject.id].join %>" data-bs-parent="#secondLevelPanel<%= second_subject.id %>">
<div class="accordion-collapse collapse" id="<%= ["secondLevel", sub1.id].join %>" data-bs-parent="#secondLevelPanel<%= sub1.id %>">
<div class="accordion-body pt-1">
<% second_subject.children.each do |third_subject| %>
<div class="accordion accordion-flush ps-20" id="thirdLevelPanel<%= third_subject.id %>">
<% sub1.children.each do |sub2| %>
<div class="accordion accordion-flush ps-20" id="thirdLevelPanel<%= sub2.id %>">
<div class="accordion-item">
<div class="<%= third_subject.children.present? ? 'accordion-button' : '' %> collapsed" data-bs-toggle="collapse" data-bs-target="#<%= ["thirdLevel", third_subject.id].join %>">
<%= link_to third_subject.name, subject_index_path(third_subject.id), class: "clickable-link" %>
<div class="accordion-header">
<% if sub1.children.present? %>
<div class="accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#<%= ["thirdLevel", sub2.id].join %>">
<%= link_to sub2.name, subject_index_path(sub2.id), class: "accordion-link text-decoration-none text-dark d-block sub3 clickable-link" %>
<%= link_to "Add Sub Subject", new_subject_index_path(parent_id: sub2.id), class: "btn btn-sm btn-primary text-decoration-none d-block sub1 clickable-link position-absolute end-0 me-4" %>
</div>
<% else %>
<%= link_to sub2.name, subject_index_path(sub2.id), class: "accordion-link text-decoration-none text-dark d-block sub3 clickable-link" %>
<%= link_to "Add Sub Subject", new_subject_index_path(parent_id: sub2.id), class: "btn btn-sm btn-primary text-decoration-none d-block sub1 clickable-link position-absolute end-0 me-2" %>
<% end %>
</div>
<div class="accordion-collapse collapse" id="<%= ["thirdLevel", third_subject.id].join %>" data-bs-parent="#thirdLevelPanel<%= third_subject.id %>">
<div class="accordion-collapse collapse" id="<%= ["thirdLevel", sub2.id].join %>" data-bs-parent="#thirdLevelPanel<%= sub2.id %>">
<div class="accordion-body pt-1">
<% third_subject.children.each do |fourth_subject| %>
<div class="accordion accordion-flush ps-20" id="fourthLevelPanel<%= fourth_subject.id %>">
<% sub2.children.each do |sub3| %>
<div class="accordion accordion-flush ps-20" id="fourthLevelPanel<%= sub3.id %>">
<div class="accordion-item">
<div class="<%= fourth_subject.children.present? ? 'accordion-button' : '' %> collapsed" data-bs-toggle="collapse" data-bs-target="#<%= ["fourthLevel", fourth_subject.id].join %>">
<%= link_to fourth_subject.name, subject_index_path(fourth_subject.id), class: "clickable-link" %>
<div class="accordion_header">
<% if sub3.children.present? %>
<div class="<%= sub3.children.present? ? 'accordion-button' : '' %> collapsed" data-bs-toggle="collapse" data-bs-target="#<%= ["fourthLevel", sub3.id].join %>">
<%= link_to sub3.name, subject_index_path(sub3.id), class: "accordion-link text-decoration-none text-dark d-block sub4 clickable-link" %>
<%= link_to "Add Sub Subject", new_subject_index_path(parent_id: sub3.id), class: "btn btn-sm btn-primary text-decoration-none d-block sub1 clickable-link position-absolute end-0 me-4" %>
</div>
<% else %>
<%= link_to sub3.name, subject_index_path(sub3.id), class: "accordion-link text-decoration-none text-dark d-block sub4 clickable-link" %>
<%= link_to "Add Sub Subject", new_subject_index_path(parent_id: sub3.id), class: "btn btn-sm btn-primary text-decoration-none d-block sub1 clickable-link position-absolute end-0 me-2" %>
<% end %>
</div>
<div class="accordion-collapse collapse" id="<%= ["fourthLevel", fourth_subject.id].join %>" data-bs-parent="#fourthLevelPanel<%= fourth_subject.id %>">
<div class="accordion-collapse collapse" id="<%= ["fourthLevel", sub3.id].join %>" data-bs-parent="#fourthLevelPanel<%= sub3.id %>">
<div class="accordion-body pt-1">
<% fourth_subject.children.each do |fifth_subject| %>
<% sub3.children.each do |sub4| %>
<div class="accordion accordion-flush ps-20">
<div class="accordion-item">
<div>
<%= link_to fifth_subject.name, subject_index_path(fifth_subject.id), class: "clickable-link" %>
<%= link_to sub4.name, subject_index_path(sub4.id), class: "accordion-link text-decoration-none text-dark d-block sub5 clickable-link" %>
<%= link_to "Add Sub Subject", new_subject_index_path(parent_id: sub4.id), class: "btn btn-sm btn-primary text-decoration-none d-block sub1 clickable-link position-absolute end-0 me-2" %>
</div>
</div>
</div>

21
app/components/subject_index_form_component.rb

@ -1,15 +1,22 @@
class SubjectIndexFormComponent < BaseComponent
attr_reader :subject_index, :form_url, :form_method, :parent_id
attr_reader :subject_index, :parent_id, :opts
def initialize(current_user:, opts:)
@subject_index = opts[:subject_index]
@form_url = opts[:form_url]
@form_method = opts[:form_method]
@parent_id = parent_id
def initialize(current_user:, subject_index:, opts:)
@subject_index = subject_index
@opts = opts
@parent_id = @opts[:parent_id]
end
def all_subjects
Cdao::Subject.all
end
def current_library
Cdao::Library.first
end
def render?
subject_index.present? && form_url.present? && form_method.present?
subject_index.present? && opts[:form_url].present? && opts[:form_method].present?
end
end

31
app/components/subject_index_form_component/subject_index_form_component.html.erb

@ -1,25 +1,24 @@
<%= form_for(@subject_index, url: subject_indexes_path, method: :post) do |form| %>
<%= form_for(subject_index, url: opts[:form_url], method: opts[:form_method]) do |form| %>
<div class="row">
<div class="<%= parent_id.present? ? 'col-sm-6' : 'col-sm-12' %> p-2">
<div class="form-floating">
<%= form.text_field :name, class: "form-control" %>
<%= label_tag :name %>
</div>
<div class="col-sm-12 p-2">
<strong> <%= label_tag :name %> </strong>
<%= hidden_field_tag "library_ids[]", current_library.id %>
<%= text_field_tag :name, subject_index.persisted? ? subject_index.name : params[:name], class: "form-control" %>
</div>
</div>
<% if parent_id.present? %>
<div class="col-sm-6 p-2">
<div class="form-floating">
<%= form.text_field :parent, class: "form-control" %>
<%= label_tag :parent %>
</div>
<% if parent_id.present? %>
<div cass="row">
<div class="col-sm-12 p-2">
<strong> <%= label_tag :subjects %> </strong>
<%= select_tag :parent_id, options_from_collection_for_select(all_subjects, :id, :lineage_name, parent_id), class: "form-select default-selectize", prompt: "Please select" %>
</div>
<% end %>
</div>
</div>
<% end %>
<div class="row">
<div class="col-sm-12 p-2">
<%= submit_tag "Save", class: "btn btn-primary text-dark" %>
<div class="col-sm-12 d-flex justify-content-end p-2">
<%= submit_tag "Save", class: "btn btn-primary" %>
</div>
</div>
<% end %>

2
app/components/subjects_sidenav_sub_menu_component.rb

@ -8,6 +8,6 @@ class SubjectsSidenavSubMenuComponent < BaseComponent
def index_url(subject_id)
return search_doctrines_path(subject_ids: [subject_id]) if opts[:is_doctrines_index].present?
doctrines_subject_index_path(subject_id)
search_documents_path(subject_ids: subject_id)
end
end

17
app/controllers/doctrine/annotations_controller.rb

@ -14,9 +14,10 @@ class Doctrine::AnnotationsController < ApplicationController
respond_to do |format|
if @annotation.save
format.html { redirect_to document_path(@doctrine.document) , notice: "Doctrine Annotation was successfully created." }
format.html { redirect_to document_doctrine_path(@doctrine.document, @doctrine),
notice: "Doctrine Annotation was successfully created." }
else
format.html { redirect_to document_path(@doctrine.document) }
format.html { redirect_to document_doctrine_path(@doctrine.document, @doctrine) }
end
end
end
@ -29,19 +30,23 @@ class Doctrine::AnnotationsController < ApplicationController
respond_to do |format|
if @annotation.update(attrs)
format.html { redirect_to document_path(@doctrine.document), notice: "Doctrine Annotation was successfully updated." }
format.html { redirect_to document_doctrine_path(@doctrine.document, @doctrine),
notice: "Doctrine Annotation was successfully updated." }
else
format.html { redirect_to document_path(@doctrine.document) }
format.html { redirect_to document_doctrine_path(@doctrine.document, @doctrine) }
end
end
end
def destroy
document_id = @doctrine.document_id
respond_to do |format|
if @annotation.destroy
format.html { redirect_to subject_indexes_path, notice: "Doctrine Annotation was successfully destroyed." }
format.html { redirect_to document_doctrine_path(@doctrine.document, @doctrine),
notice: "Doctrine Annotation was successfully destroyed." }
else
format.html { redirect_to document_path(@doctrine.document), alert: @annotation.errors.full_messages }
format.html { redirect_to document_doctrine_path(@doctrine.document, @doctrine),
alert: @annotation.errors.full_messages }
end
end
end

3
app/controllers/documents_controller.rb

@ -4,7 +4,8 @@ class DocumentsController < ApplicationController
load_and_authorize_resource :document, class: "Cdao::Jurisprudence"
def index
search = jurisprudence_search(search_params)
@search_params = search_params
search = jurisprudence_search(@search_params)
@jurisprudences = search.results

2
app/controllers/subject_indexes_controller.rb

@ -86,7 +86,7 @@ class SubjectIndexesController < ApplicationController
end
def resource_params
params.permit(:name, parent_id)
params.permit(:name, :parent_id, library_ids: [])
end
def search_params

4
app/javascript/controllers/application_controller.js

@ -5,7 +5,11 @@ import $ from 'jquery';
require("select2/dist/css/select2")
require("select2-bootstrap-theme/dist/select2-bootstrap")
require("selectize/dist/js/selectize.min")
require("selectize/dist/css/selectize")
import Select2 from "select2"
import Selectize from "selectize";
/* This is your ApplicationController.
* All StimulusReflex controllers should inherit from this class.

35
app/javascript/controllers/document_controller.js

@ -9,27 +9,52 @@ export default class extends ApplicationController {
search () {
var $this = this
$.get("/api/jurisprudences/", { q: this.inputTarget.value }, function (data, status) {
$.get("/api/jurisprudences.json", { q: $this.inputTarget.value }, function (data, status) {
if (status === "success") {
$this.stimulate("DocumentReflex#render_index_table", data)
$this.stimulate("DocumentReflex#render_index_table", data, $this.element.dataset["documentId"], $this.element.dataset["doctrineId"])
}
});
}
modalDocumentSearch () {
var $this = this
$.get("/api/jurisprudences/", { q: this.inputTarget.value }, function (data, status) {
$.get("/api/jurisprudences.json", { q: $this.inputTarget.value }, function (data, status) {
if (status === "success") {
$this.stimulate("DocumentReflex#render_moda_document_search_table", data)
$this.stimulate("DocumentReflex#render_modal_document_search_table", data)
}
});
}
loadYears () {
$.get("/api/jurisprudences/years", {}, function (data, status) {
var $this = this
$.get("/api/jurisprudences/years.json", {}, function (data, status) {
if (status === "success") {
$this.stimulate("DocumentReflex#render_years", data)
}
});
}
loadFormDocumentDetais () {
var document_id = "", document_title = "", document_ref_no = "", document_date_or_year = "", $modal = $("#newAnnotationModal")
document_id = this.element.dataset["documentId"]
document_title = this.element.dataset["documentTitle"]
document_ref_no = this.element.dataset["documentReferenceNumber"]
document_date_or_year = this.element.dataset["documentDateOrYear"]
$modal.find("#document_title").val([document_title, document_ref_no, document_date_or_year].join(", "))
$modal.find("#document_id").val(document_id)
}
addCitingDocument () {
var document_id = "", document_ref_no = "", $modal = $("#newAnnotationModal"), $doc_title = $modal.find("#document_title"),
$doc_id = $modal.find("#document_id")
document_id = this.element.dataset["documentId"]
document_ref_no = this.element.dataset["documentReferenceNumber"]
console.log($doc_id.val())
console.log($doc_title.val())
}
}

4
app/javascript/controllers/select2_controller.js

@ -4,8 +4,10 @@ export default class extends ApplicationController {
connect() {
super.connect()
$("#cdao_subject_parent_id").select2({ tags: true, width: "100%" })
$(".subjects-select2").select2({ tags: true, width: "100%" })
$(".annomark-ids-select2").select2({ width: "100%", dropdownParent: $("#editAnnotation11") })
$(".annomark-ids-select2").select2({ width: "100%", dropdownParent: $("#edit-annotation-modal") })
$(".new-annotation-annomark-ids").select2({ width: "100%", dropdownParent: $("#new-annotation-modal") })
$(".subject-ids-modal-select2").select2({ width: "100%", dropdownParent: $("#doctrineModal") })
}
}

20
app/javascript/controllers/selectize_controller.js

@ -0,0 +1,20 @@
import ApplicationController from './application_controller'
export default class extends ApplicationController {
connect() {
super.connect()
var default_opts = {
plugins: ['restore_on_backspace', 'remove_button'],
searchField: ['text', 'optgroup'],
valueField: "id",
allowEmptyOption: false,
showEmptyOptionInDropdown: true,
emptyOptionLabel: true,
hideSelected: true,
placeholder: "Please Select"
}
$(".default-selectize").selectize(default_opts)
}
}

4
app/javascript/src/application.scss

@ -18,10 +18,10 @@
left: 0;
}
.clickable-link, .clickable-tr {
.clickable-link, .clickable-tr, .accordion-button {
cursor: pointer;
}
.current {
background-color: #535353;
background-color: #535353 !important;
}

9
app/reflexes/document_reflex.rb

@ -3,15 +3,16 @@
class DocumentReflex < ApplicationReflex
include JurisprudenceSearch
def render_index_table(results)
morph "tbody#documentIndexTable", render(DocumentIndexTableBodyComponent.with_collection(results, current_user: current_user, opts: { is_case_lists: true }))
def render_index_table(results, document_id, doctrine_id)
opts = { is_case_lists: true, document_id: document_id, doctrine_id: doctrine_id, form_method: :post }
morph "tbody#documentIndexTable", render(partial: "document_search_results_table", locals: { search_results: results, opts: opts })
end
def render_years(results)
morph "tbody#yearsIndex", render(DocumentsYearsComponent.new(current_user: current_user, years: results))
end
def render_moda_document_search_table(results)
morph "tbody#modalDocumentSearchTable", render(DocumentIndexTableBodyComponent.with_collection(results, current_user: current_user, opts: { is_case_lists: true }))
def render_modal_document_search_table(results)
morph "tbody#modalDocumentSearchTable", render(partial: "document_search_results_table", locals: { search_results: results, opts: { is_citing_document: true } })
end
end

28
app/views/document/doctrines/_document_search_results_table.html.erb

@ -0,0 +1,28 @@
<% search_results.each do |search_result| %>
<tr>
<td> <%= search_result["reference_number"] %> </td>
<td> <%= search_result["short_title"] || search_result["title"] %> </td>
<td> <%= search_result["docdate"].present? ? search_result["docdate"].to_date.strftime("%m/%d/%Y") : search_result["year"] %> </td>
<% if opts[:is_case_lists].present? && opts[:document_id].present? && opts[:doctrine_id].present? %>
<td>
<% date_or_year = search_result["docdate"].present? ? search_result["docdate"].to_date.strftime("%B %d, %Y") : search_result["year"] %>
<% title = search_result["short_title"].present? ? search_result["short_title"] : search_result["title"] %>
<a class="btn btn-sm btn-primary" data-bs-toggle="modal" data-bs-target="#newAnnotationModal" data-controller="document" data-document-title="<%= title %>"
data-document-id="<%= search_result["id"] %>" data-document-reference-number="<%= search_result["reference_number"] %>"
data-document-date-or-year="<%= date_or_year %>" data-action="click->document#loadFormDocumentDetais">
Add Annotation Marks
</a>
</td>
<% end %>
<% if opts[:is_citing_document].present? %>
<td>
<a class="btn btn-sm btn-primary" data-action="click->document#addCitingDocument" data-controller="document" data-document-id="<%= search_result["id"] %>"
data-document-reference-number="<%= search_result["reference_number"] %>">
Add
</a>
</td>
<% end %>
</tr>
<% end %>

57
app/views/documents/index.html.erb

@ -8,24 +8,57 @@
<div class="col-sm-4 p-2">
<%= submit_tag "Search", class: "btn btn-primary text-dark" %>
<button class="btn btn-info"> Advanced Search </button>
<button type="button" class="btn btn-info" data-bs-toggle="modal" data-bs-target="#citationFinder"> Citation Finder </button>
<div class="modal fade" id="citationFinder" tabindex="-1" aria-labelledby="citationFinder" aria-hidden="true">
<%= form_tag(documents_path, method: :get) do %>
<div class="modal-dialog modal-lg modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title"> Citation Finder </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-6 p-2">
<strong> <%= label_tag :subjects %> </strong>
<%= text_field_tag "Phil Rep", params[:phil_rep], class: "form-control" %>
</div>
<div class="col-sm-6 p-2">
<strong> <%= label_tag :subjects %> </strong>
<%= text_field_tag "SCRA", params[:scra], class: "form-control" %>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Save</button>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
</div>
</div>
</div>
<% end %>
</div>
</div>
</div>
<% end %>
</div>
<div class="card-body col-sm-12 tableFixHead p-0 mt-1">
<div class="container m-2"> <%= render PaginationComponent.new(data: @jurisprudences) %> </div>
<table class="table table-striped table-hover mb-0">
<thead>
<th class="bg-light"> Reference No. </th>
<th class="bg-light"> Title </th>
<th class="bg-light"> Date </th>
</thead>
<% if @search_params.reject { |k, v| v.blank? }.present? %>
<div class="container m-2"> <%= render PaginationComponent.new(data: @jurisprudences) %> </div>
<table class="table table-striped table-hover mb-0">
<thead>
<th class="bg-light"> Reference No. </th>
<th class="bg-light"> Title </th>
<th class="bg-light"> Date </th>
</thead>
<tbody>
<%= render(DocumentIndexTableComponent.with_collection(@jurisprudences, current_user: current_user, opts: {})) %>
</tbody>
</table>
<tbody>
<%= render(DocumentIndexTableComponent.with_collection(@jurisprudences, current_user: current_user, opts: {})) %>
</tbody>
</table>
<% end %>
</div>
</div>

2
app/views/layouts/application.html.erb

@ -11,7 +11,7 @@
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
<body class="container-fluid h-100 w-100 p-0">
<body class="container-fluid h-100 w-100 p-0" data-controller="selectize">
<div class="<%= current_user.present? ? 'row flex-nowrap h-100 w-100 p-0 ms-0' : 'row h-100 justify-content-center align-items-center' %>">
<% if current_user.present? %>

2
app/views/subject_indexes/edit.html.erb

@ -4,7 +4,7 @@
<div class="card-header"> <h2> Edit Subject Index </h2> </div>
<div class="card-body">
<%= render(SubjectIndexFormComponent.new(current_user: current_user, opts: { subject_index: @subject_index, form_url: subject_index_path(@subject_index), form_method: :patch, parent_id: @subject_index.parent_id })) %>
<%= render(SubjectIndexFormComponent.new(current_user: current_user, subject_index: @subject_index, opts: { form_url: subject_index_path(@subject_index), form_method: :patch, parent_id: @subject_index.parent_id })) %>
</div>
</div>
</div>

22
app/views/subject_indexes/index.html.erb

@ -1,20 +1,28 @@
<div class="container-fluid mt-2 p-0">
<div class="col-sm-12">
<div class="card">
<div class="card-header"> <h2> Subject Indexes </h2> </div>
<div class="card-header"> <h2> Subjects </h2> </div>
<div class="card-body">
<% Cdao::Subject.roots.all.each do |subject| %>
<div class="accordion accordion-flash" id="mainPanel<%= subject.id %>">
<% Cdao::Subject.roots.all.each do |root| %>
<div class="accordion accordion-flash" id="mainPanel<%= root.id %>">
<div class="accordion-item">
<div class="<%= subject.children.present? ? 'accordion-button' : '' %> collapsed" data-bs-toggle="collapse" data-bs-target="#<%= ["firstLevel", subject.id].join %>">
<%= link_to subject.name, subject_index_path(subject.id), class: "clickble-link" %>
<div class="accordion-header">
<% if root.children.present? %>
<div class="accordion-button collapsed m-0 p-0" data-bs-toggle="collapse" data-bs-target="#<%= ["rootLevel", root.id].join %>">
<%= link_to root.name, subject_index_path(root.id), class: "accordion-link text-decoration-none text-dark d-block sub1 clickable-link" %>
<%= link_to "Add Sub Subject", new_subject_index_path(parent_id: root.id), class: "btn btn-sm btn-primary text-decoration-none d-block sub1 clickable-link position-absolute end-0 me-4" %>
</div>
<% else %>
<%= link_to root.name, subject_index_path(root.id), class: "accordion-link text-decoration-none text-dark d-block sub1 clickable-link" %>
<%= link_to "Add Sub Subject", new_subject_index_path(parent_id: root.id), class: "btn btn-sm btn-primary text-decoration-none d-block sub1 clickable-link position-absolute end-0 me-2" %>
<% end %>
</div>
<div class="accordion-collapse collapse" id="<%= ["firstLevel", subject.id].join %>" data-bs-parent="#mainPanel<%= subject.id %>">
<div class="accordion-collapse collapse" id="<%= ["rootLevel", root.id].join %>" data-bs-parent="#mainPanel<%= root.id %>">
<div class="accordion-body pt-1 pb-1">
<%= render(SubjectAccordionComponent.new(current_user: current_user, parent: subject)) %>
<%= render(SubjectAccordionComponent.new(current_user: current_user, parent: root)) %>
</div>
</div>
</div>

2
app/views/subject_indexes/new.html.erb

@ -4,7 +4,7 @@
<div class="card-header"> <h2> New Subject Index </h2> </div>
<div class="card-body">
<%= render(SubjectIndexFormComponent.new(current_user: current_user, opts: { subject_index: @subject_index, form_url: subject_indexes_path, form_method: :post, parent_id: params[:parent_id] })) %>
<%= render(SubjectIndexFormComponent.new(current_user: current_user, subject_index: @subject_index, opts: { form_url: subject_indexes_path, form_method: :post, parent_id: params[:parent_id] })) %>
</div>
</div>
</div>

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

@ -0,0 +1,36 @@
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-10"> <h4> Subject Details </h4> </div>
<div class="col-sm-2 d-flex justify-content-end">
<a class="btn btn-sm btn-secondary m-1" href="<%= edit_subject_index_path(@subject_index) %>"> Edit </a>
<a class="btn btn-sm btn-danger m-1" href="<%= subject_index_path(@subject_index) %>" data-confirm="Are you sure to delete this record?" data-method="DELETE"> Delete </a>
</div>
</div>
</div>
<div class="card-body">
<table class="table table-borderless">
<tbody>
<tr>
<td class="text-start"> Name: </td>
<td class="text-start"> <strong> <%= @subject_index.name %> </strong> </td>
<td class="text-start"> Parent Subject: </td>
<td class="text-start"> <strong> <%= @subject_index.parent.lineage_name %> </strong> </td>
</tr>
</tbody>
</table>
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-11"> <h4> Sub Subjects </h4> </div>
<div class="col-sm-1 justify-content-end"> <a class="btn btn-sm btn-primary p-1" href="<%= new_subject_index_path(parent_id: @subject_index) %>"> Add </a> </div>
</div>
</div>
<div class="card-body">
<%= render(SubjectAccordionComponent.new(current_user: current_user, parent: @subject_index)) %>
</div>
</div>
</div>
</div>

3
package.json

@ -17,7 +17,10 @@
"moment": "^2.29.1",
"popper.js": "^1.16.1",
"select2": "^4.1.0-rc.0",
"select2-bootstrap-5-theme": "^1.2.0",
"select2-bootstrap-theme": "^0.1.0-beta.10",
"selectize": "^0.12.6",
"selectize.js": "^0.12.12",
"stimulus": "^3.0.1",
"stimulus_reflex": "3.4.1",
"trix": "^2.0.0-alpha.0",

102
yarn.lock generated

@ -1261,6 +1261,11 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1:
dependencies:
color-convert "^1.9.0"
ansicolors@~0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef"
integrity sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=
anymatch@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
@ -1364,7 +1369,7 @@ async-limiter@~1.0.0:
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
async@^2.6.2:
async@^2.6.0, async@^2.6.2:
version "2.6.3"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
@ -1537,7 +1542,7 @@ boolbase@^1.0.0, boolbase@~1.0.0:
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
bootstrap@^5.1.3:
bootstrap@^5.0.2, bootstrap@^5.1.3:
version "5.1.3"
resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.1.3.tgz#ba081b0c130f810fa70900acbc1c6d3c28fa8f34"
integrity sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==
@ -1815,6 +1820,14 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, can
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001285.tgz#fe1e52229187e11d6670590790d669b9e03315b7"
integrity sha512-KAOkuUtcQ901MtmvxfKD+ODHH9YVDYnBt+TGYSz2KIfnq22CiArbUxXPN9067gNbgMlnNYRSwho8OPXZPALB9Q==
cardinal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-1.0.0.tgz#50e21c1b0aa37729f9377def196b5a9cec932ee9"
integrity sha1-UOIcGwqjdyn5N33vGWtanOyTLuk=
dependencies:
ansicolors "~0.2.1"
redeyed "~1.0.0"
case-sensitive-paths-webpack-plugin@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4"
@ -2365,6 +2378,11 @@ csso@^4.0.2:
dependencies:
css-tree "^1.1.2"
csv-parse@^4.6.5:
version "4.16.3"
resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.16.3.tgz#7ca624d517212ebc520a36873c3478fa66efbaf7"
integrity sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==
cyclist@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
@ -2704,6 +2722,11 @@ esprima@^4.0.0:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esprima@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.0.0.tgz#53cf247acda77313e551c3aa2e73342d3fb4f7d9"
integrity sha1-U88kes2ncxPlUcOqLnM0LT+099k=
esrecurse@^4.1.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
@ -3387,6 +3410,11 @@ https-browserify@^1.0.0:
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
humanize@^0.0.9:
version "0.0.9"
resolved "https://registry.yarnpkg.com/humanize/-/humanize-0.0.9.tgz#1994ffaecdfe9c441ed2bdac7452b7bb4c9e41a4"
integrity sha1-GZT/rs3+nEQe0r2sdFK3u0yeQaQ=
[email protected]:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
@ -3864,6 +3892,11 @@ jest-worker@^26.5.0:
merge-stream "^2.0.0"
supports-color "^7.0.0"
jquery@^1.7.0:
version "1.12.4"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-1.12.4.tgz#01e1dfba290fe73deba77ceeacb0f9ba2fec9e0c"
integrity sha1-AeHfuikP5z3rp3zurLD5ui/sngw=
jquery@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470"
@ -4161,6 +4194,11 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4:
snapdragon "^0.8.1"
to-regex "^3.0.2"
[email protected]:
version "0.0.3"
resolved "https://registry.yarnpkg.com/microplugin/-/microplugin-0.0.3.tgz#1fc2e1bb7c9e19e82bd84bba9137bbe71250d8cd"
integrity sha1-H8Lhu3yeGegr2Eu6kTe75xJQ2M0=
miller-rabin@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
@ -4223,6 +4261,11 @@ minimist@^1.2.0, minimist@^1.2.5:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
minimist@~0.0.1:
version "0.0.10"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
minipass-collect@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
@ -4582,6 +4625,14 @@ opn@^5.5.0:
dependencies:
is-wsl "^1.1.0"
optimist@^0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY=
dependencies:
minimist "~0.0.1"
wordwrap "~0.0.2"
optimize-css-assets-webpack-plugin@^5.0.8:
version "5.0.8"
resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz#cbccdcf5a6ef61d4f8cc78cf083a67446e5f402a"
@ -5700,6 +5751,13 @@ readdirp@~3.6.0:
dependencies:
picomatch "^2.2.1"
redeyed@~1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-1.0.1.tgz#e96c193b40c0816b00aec842698e61185e55498a"
integrity sha1-6WwZO0DAgWsArshCaY5hGF5VSYo=
dependencies:
esprima "~3.0.0"
regenerate-unicode-properties@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326"
@ -5959,6 +6017,13 @@ select-hose@^2.0.0:
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
select2-bootstrap-5-theme@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/select2-bootstrap-5-theme/-/select2-bootstrap-5-theme-1.2.0.tgz#36282520c7a88b89818350217600f3440dab718e"
integrity sha512-ia8yvInGTU9XntLQM1+ByGNA+nY2LPqgdB4XA/D766gihZjRpPJlum2eXbg/ur4q+H5hAnoCkY5TcFcX3DseKg==
dependencies:
bootstrap "^5.0.2"
select2-bootstrap-theme@^0.1.0-beta.10:
version "0.1.0-beta.10"
resolved "https://registry.yarnpkg.com/select2-bootstrap-theme/-/select2-bootstrap-theme-0.1.0-beta.10.tgz#b9426ecfc03bf4a235e76a132377574310469ac0"
@ -5969,6 +6034,23 @@ select2@^4.1.0-rc.0:
resolved "https://registry.yarnpkg.com/select2/-/select2-4.1.0-rc.0.tgz#ba3cd3901dda0155e1c0219ab41b74ba51ea22d8"
integrity sha512-Hr9TdhyHCZUtwznEH2CBf7967mEM0idtJ5nMtjvk3Up5tPukOLXbHUNmh10oRfeNIhj+3GD3niu+g6sVK+gK0A==
selectize.js@^0.12.12:
version "0.12.12"
resolved "https://registry.yarnpkg.com/selectize.js/-/selectize.js-0.12.12.tgz#67321487881a81506abe388b2995d3af3ad6edcd"
integrity sha1-ZzIUh4gagVBqvjiLKZXTrzrW7c0=
dependencies:
jquery "^1.7.0"
microplugin "0.0.3"
sifter "^0.5.1"
selectize@^0.12.6:
version "0.12.6"
resolved "https://registry.yarnpkg.com/selectize/-/selectize-0.12.6.tgz#c2cf08cbaa4cb06c5e99bb452919d71b080690d6"
integrity sha512-bWO5A7G+I8+QXyjLfQUgh31VI4WKYagUZQxAXlDyUmDDNrFxrASV0W9hxCOl0XJ/XQ1dZEu3G9HjXV4Wj0yb6w==
dependencies:
microplugin "0.0.3"
sifter "^0.5.1"
selfsigned@^1.10.8:
version "1.10.11"
resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9"
@ -6113,6 +6195,17 @@ side-channel@^1.0.4:
get-intrinsic "^1.0.2"
object-inspect "^1.9.0"
sifter@^0.5.1:
version "0.5.4"
resolved "https://registry.yarnpkg.com/sifter/-/sifter-0.5.4.tgz#3cb9e514889edfc887d8d87a355841b01ebdd1ab"
integrity sha512-t2yxTi/MM/ESup7XH5oMu8PUcttlekt269RqxARgnvS+7D/oP6RyA1x3M/5w8dG9OgkOyQ8hNRWelQ8Rj4TAQQ==
dependencies:
async "^2.6.0"
cardinal "^1.0.0"
csv-parse "^4.6.5"
humanize "^0.0.9"
optimist "^0.6.1"
signal-exit@^3.0.0:
version "3.0.6"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af"
@ -7011,6 +7104,11 @@ which@^1.2.14, which@^1.2.9, which@^1.3.1:
dependencies:
isexe "^2.0.0"
wordwrap@~0.0.2:
version "0.0.3"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
worker-farm@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"

Loading…
Cancel
Save