17 changed files with 271 additions and 140 deletions
@ -0,0 +1,39 @@ |
|||||||
|
class DoctrinesOffcanvasAccordionComponent < 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 accordion_name |
||||||
|
"doctrinesOffCanvasAccordion" |
||||||
|
end |
||||||
|
|
||||||
|
def accordion_body_name |
||||||
|
"doctrinesOffCanvasAccordionBody" |
||||||
|
end |
||||||
|
|
||||||
|
def parent_accordion_id |
||||||
|
return accordion_body_name if search_result["parent_id"].blank? |
||||||
|
|
||||||
|
[accordion_name, search_result["parent_id"]].join |
||||||
|
end |
||||||
|
|
||||||
|
def children_accordion_id |
||||||
|
[accordion_name, search_result["heirarchy_level"], search_result["id"]].join |
||||||
|
end |
||||||
|
|
||||||
|
def accordion_id |
||||||
|
[accordion_name, search_result["id"]].join |
||||||
|
end |
||||||
|
|
||||||
|
def accordion_body_id |
||||||
|
[accordion_body_name, search_result["id"]].join |
||||||
|
end |
||||||
|
|
||||||
|
def index_url |
||||||
|
search_doctrines_path(subject_ids: [search_result["id"]], is_index_table: true) |
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,25 @@ |
|||||||
|
<div class="accordion accordion-flush offcanvas-item" id="<%= accordion_id %>"> |
||||||
|
<div class="accordion-item"> |
||||||
|
<div class="accordion-header d-flex justify-content-between"> |
||||||
|
<% if search_result["has_children?"].present? %> |
||||||
|
<div class="accordion-button collapsed m-0 p-0 sub-label<%= search_result["heirarchy_level"] + 1 %>" data-bs-toggle="collapse" data-bs-target="#<%= children_accordion_id %>" |
||||||
|
data-controller="subjects" data-subject-parent-id="<%= search_result["id"] %>" data-accordion-target="#<%= accordion_body_id %>" |
||||||
|
data-action="click->subjects#loadSubjectsOffcanvasAccordion"> |
||||||
|
<%= link_to search_result["name"], index_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||||
|
</div> |
||||||
|
<% else %> |
||||||
|
<%= link_to search_result["name"], index_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||||
|
<% end %> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="accordion-collapse collapse" id="<%= children_accordion_id %>" data-bs-parent="#<%= accordion_id %>"> |
||||||
|
<div class="accordion-body pt-1 sub-body<%= search_result["heirarchy_level"] + 1 %> pb-1" id="<%= accordion_body_id %>"> |
||||||
|
<div class="text-center"> |
||||||
|
<div class="spinner-border text-danger" role="status"> |
||||||
|
<span class="visually-hidden">Loading...</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
@ -1,38 +0,0 @@ |
|||||||
class SubjectAccordionComponent < 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 parent_accordion_id |
|
||||||
return "subjectsAccordion" if search_result["parent_id"].blank? |
|
||||||
|
|
||||||
["subjectsAccordion", search_result["parent_id"]].join |
|
||||||
end |
|
||||||
|
|
||||||
def children_accordion_id |
|
||||||
["subjectsAccordion", search_result["id"]].join |
|
||||||
end |
|
||||||
|
|
||||||
def accordion_id |
|
||||||
["subjectsAccordion", search_result["id"]].join |
|
||||||
end |
|
||||||
|
|
||||||
def accordion_body_id |
|
||||||
return ["subjectsAccordionBody", search_result["id"]].join if opts[:accordionFor].blank? |
|
||||||
|
|
||||||
accordion_body = opts[:accordionFor].to_s.eql?("subjects") ? "subjectsOffCanvasAccordionBody" : "doctrinesOffCanvasAccordionBody" |
|
||||||
[accordion_body, search_result["id"]].join |
|
||||||
end |
|
||||||
|
|
||||||
def custom_url |
|
||||||
return search_doctrines_path(subject_ids: [search_result["id"]], is_index_table: true) if opts[:accordionFor].present? && opts[:accordionFor].to_s.eql?("subjects") |
|
||||||
return search_doctrines_path(subject_ids: [search_result["id"]], is_index_table: false) if opts[:accordionFor].present? && opts[:accordionFor].to_s.eql?("doctrines") |
|
||||||
|
|
||||||
subject_index_path(search_result["id"]) |
|
||||||
end |
|
||||||
end |
|
||||||
|
|
||||||
@ -1,56 +0,0 @@ |
|||||||
<% if opts[:accordionFor].present? %> |
|
||||||
<div class="accordion accordion-flash offcanvas-item" id="<%= parent_accordion_id %>"> |
|
||||||
<div class="accordion-item"> |
|
||||||
<div class="accordion-header d-flex justify-content-between adadadeqe" id="<%= children_accordion_id %>"> |
|
||||||
<% if search_result["has_children?"].present? %> |
|
||||||
<div class="accordion-button collapsed m-0 p-0 sub-label<%= search_result["heirarchy_level"] + 1 %>" data-bs-toggle="collapse" data-bs-target="#<%= children_accordion_id %>" |
|
||||||
data-controller="subjects" data-accordion-id="<%= children_accordion_id %>" |
|
||||||
data-accordion-for="<%= opts[:accordionFor] %>" data-subject-parent-id="<%= search_result["id"] %>" |
|
||||||
data-accordion-target="#<%= accordion_body_id %>" data-action="click->subjects#loadSubjectsAccordion"> |
|
||||||
<%= link_to search_result["name"], custom_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
|
||||||
</div> |
|
||||||
<% else %> |
|
||||||
<%= link_to search_result["name"], custom_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
|
||||||
<% end %> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="accordion-collapse collapse" id="<%= children_accordion_id %>" data-bs-parent="#<%= parent_accordion_id %>"> |
|
||||||
<div class="accordion-body pt-1 sub-body<%= search_result["heirarchy_level"] + 1 %> pb-1" id="<%= accordion_body_id %>"> |
|
||||||
<div class="text-center"> |
|
||||||
<div class="spinner-border text-danger" role="status"> |
|
||||||
<span class="visually-hidden">Loading...</span> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<% else %> |
|
||||||
<div class="accordion accordion-flash" id="<%= parent_accordion_id %>"> |
|
||||||
<div class="accordion-item"> |
|
||||||
<div class="accordion-header d-flex justify-content-between" id="<%= children_accordion_id %>"> |
|
||||||
<% if search_result["has_children?"].present? %> |
|
||||||
<div class="accordion-button collapsed m-0 p-0 sub-label<%= search_result["heirarchy_level"] + 1 %>" data-bs-toggle="collapse" data-bs-target="#<%= children_accordion_id %>" |
|
||||||
data-controller="subjects" data-accordion-id="<%= children_accordion_id %>" data-subject-parent-id="<%= search_result["id"] %>" |
|
||||||
data-accordion-target="#<%= accordion_body_id %>" data-action="click->subjects#loadSubjectsAccordion"> |
|
||||||
<%= link_to search_result["name"], custom_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
|
||||||
<%= link_to '<i class="fas fa-folder-plus"></i>'.html_safe, new_subject_index_path(parent_id: search_result["id"]), class: "text-decoration-none d-block sub#{search_result["heirarchy_level"]} clickable-link position-absolute end-0 me-5" %> |
|
||||||
</div> |
|
||||||
<% else %> |
|
||||||
<%= link_to search_result["name"], custom_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
|
||||||
<%= link_to '<i class="fas fa-folder-plus"></i>'.html_safe, new_subject_index_path(parent_id: search_result["id"]), class: "text-decoration-none d-block sub#{search_result["heirarchy_level"]} clickable-link position-absolute end-0 non-toggle" %> |
|
||||||
<% end %> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="accordion-collapse collapse" id="<%= children_accordion_id %>" data-bs-parent="#<%= parent_accordion_id %>"> |
|
||||||
<div class="accordion-body pt-1 sub-body<%= search_result["heirarchy_level"] + 1 %> pb-0" id="<%= accordion_body_id %>"> |
|
||||||
<div class="text-center"> |
|
||||||
<div class="spinner-border text-danger" role="status"> |
|
||||||
<span class="visually-hidden">Loading...</span> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<% end %> |
|
||||||
@ -0,0 +1,38 @@ |
|||||||
|
class SubjectsAccordionComponent < 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 accordion_name |
||||||
|
"subjectsAccordion" |
||||||
|
end |
||||||
|
|
||||||
|
def accordion_body_name |
||||||
|
"subjectsAccordionBody" |
||||||
|
end |
||||||
|
|
||||||
|
def parent_accordion_id |
||||||
|
[accordion_name, search_result["parent_id"]].join |
||||||
|
end |
||||||
|
|
||||||
|
def children_accordion_id |
||||||
|
[accordion_name, search_result["heirarchy_level"], search_result["id"]].join |
||||||
|
end |
||||||
|
|
||||||
|
def accordion_id |
||||||
|
[accordion_name, search_result["id"]].join |
||||||
|
end |
||||||
|
|
||||||
|
def accordion_body_id |
||||||
|
[accordion_body_name, search_result["id"]].join |
||||||
|
end |
||||||
|
|
||||||
|
def custom_url |
||||||
|
subject_index_path(search_result["id"]) |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
@ -0,0 +1,27 @@ |
|||||||
|
<div class="accordion accordion-flush" id="<%= accordion_id %>"> |
||||||
|
<div class="accordion-item"> |
||||||
|
<div class="accordion-header d-flex justify-content-between"> |
||||||
|
<% if search_result["has_children?"].present? %> |
||||||
|
<div class="accordion-button collapsed m-0 p-0 sub-label<%= search_result["heirarchy_level"] + 1 %>" data-bs-toggle="collapse" data-bs-target="#<%= children_accordion_id %>" |
||||||
|
data-controller="subjects" data-subject-parent-id="<%= search_result["id"] %>" data-accordion-target="#<%= accordion_body_id %>" |
||||||
|
data-action="click->subjects#loadSubjectsAccordion"> |
||||||
|
<%= link_to search_result["name"], custom_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||||
|
<%= link_to '<i class="fas fa-folder-plus"></i>'.html_safe, new_subject_index_path(parent_id: search_result["id"]), class: "text-decoration-none d-block sub#{search_result["heirarchy_level"]} clickable-link position-absolute end-0 me-5" %> |
||||||
|
</div> |
||||||
|
<% else %> |
||||||
|
<%= link_to search_result["name"], custom_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||||
|
<%= link_to '<i class="fas fa-folder-plus"></i>'.html_safe, new_subject_index_path(parent_id: search_result["id"]), class: "text-decoration-none d-block sub#{search_result["heirarchy_level"]} clickable-link position-absolute end-0 non-toggle" %> |
||||||
|
<% end %> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="accordion-collapse collapse" id="<%= children_accordion_id %>" data-bs-parent="#<%= accordion_id %>"> |
||||||
|
<div class="accordion-body pt-1 sub-body<%= search_result["heirarchy_level"] + 1 %> pb-0" id="<%= accordion_body_id %>"> |
||||||
|
<div class="text-center"> |
||||||
|
<div class="spinner-border text-danger" role="status"> |
||||||
|
<span class="visually-hidden">Loading...</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
@ -0,0 +1,39 @@ |
|||||||
|
class SubjectsOffcanvasAccordionComponent < 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 accordion_name |
||||||
|
"subjectsOffCanvasAccordion" |
||||||
|
end |
||||||
|
|
||||||
|
def accordion_body_name |
||||||
|
"subjectsOffCanvasAccordionBody" |
||||||
|
end |
||||||
|
|
||||||
|
def parent_accordion_id |
||||||
|
return accordion_body_name if search_result["parent_id"].blank? |
||||||
|
|
||||||
|
[accordion_name, search_result["parent_id"]].join |
||||||
|
end |
||||||
|
|
||||||
|
def children_accordion_id |
||||||
|
[accordion_name, search_result["heirarchy_level"], search_result["id"]].join |
||||||
|
end |
||||||
|
|
||||||
|
def accordion_id |
||||||
|
[accordion_name, search_result["id"]].join |
||||||
|
end |
||||||
|
|
||||||
|
def accordion_body_id |
||||||
|
[accordion_body_name, search_result["id"]].join |
||||||
|
end |
||||||
|
|
||||||
|
def index_url |
||||||
|
search_doctrines_path(subject_ids: [search_result["id"]], is_index_table: true) |
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,25 @@ |
|||||||
|
<div class="accordion accordion-flush offcanvas-item" id="<%= accordion_id %>"> |
||||||
|
<div class="accordion-item"> |
||||||
|
<div class="accordion-header d-flex justify-content-between"> |
||||||
|
<% if search_result["has_children?"].present? %> |
||||||
|
<div class="accordion-button collapsed m-0 p-0 sub-label<%= search_result["heirarchy_level"] + 1 %>" data-bs-toggle="collapse" data-bs-target="#<%= children_accordion_id %>" |
||||||
|
data-controller="subjects" data-subject-parent-id="<%= search_result["id"] %>" data-accordion-target="#<%= accordion_body_id %>" |
||||||
|
data-action="click->subjects#loadSubjectsOffcanvasAccordion"> |
||||||
|
<%= link_to search_result["name"], index_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||||
|
</div> |
||||||
|
<% else %> |
||||||
|
<%= link_to search_result["name"], index_url, class: "accordion-link text-decoration-none text-dark d-block sub#{search_result["heirarchy_level"] + 1} clickable-link" %> |
||||||
|
<% end %> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="accordion-collapse collapse" id="<%= children_accordion_id %>" data-bs-parent="#<%= accordion_id %>"> |
||||||
|
<div class="accordion-body pt-1 sub-body<%= search_result["heirarchy_level"] + 1 %> pb-1" id="<%= accordion_body_id %>"> |
||||||
|
<div class="text-center"> |
||||||
|
<div class="spinner-border text-danger" role="status"> |
||||||
|
<span class="visually-hidden">Loading...</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
@ -0,0 +1 @@ |
|||||||
|
<%= render(DoctrinesOffcanvasAccordionComponent.with_collection(search_results, current_user: current_user, opts: opts)) %> |
||||||
@ -1 +1 @@ |
|||||||
<%= render(SubjectAccordionComponent.with_collection(search_results, current_user: current_user, opts: opts)) %> |
<%= render(SubjectsAccordionComponent.with_collection(search_results, current_user: current_user, opts: opts)) %> |
||||||
|
|||||||
@ -0,0 +1 @@ |
|||||||
|
<%= render(SubjectsOffcanvasAccordionComponent.with_collection(search_results, current_user: current_user, opts: opts)) %> |
||||||
Loading…
Reference in new issue