diff --git a/app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss b/app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss index a860f1e53..faddd9310 100644 --- a/app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss +++ b/app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss @@ -26,10 +26,14 @@ $hierarchy-view-collapse-icon: url("data:image/svg+xml,= 0), src: hierarchy_path(limit: @maximum_left_gap, key: '-sidebar') %> - <%= tag.turbo_frame id: "al-hierarchy-#{@document.id}-right" do %> - +
+ <% num_pages.each do |page| %> + <% hidden = 'd-none' unless page == 1 %> + <%= tag.turbo_frame class:"#{hidden}", id: "al-hierarchy-#{@document.id}-#{page}-right" do %> + + <% end %> <% end %> +
<% else %> <%# there aren't enough to bother paginating, so load them all at once %> <%= helpers.turbo_frame_tag "al-hierarchy-#{@document.id}-sidebar", loading: ('lazy' unless @target_index >= 0), src: hierarchy_path(key: '-sidebar') %> <% end %> + diff --git a/app/components/arclight/document_components_hierarchy_component.rb b/app/components/arclight/document_components_hierarchy_component.rb index 7686356c6..edf80c3b6 100644 --- a/app/components/arclight/document_components_hierarchy_component.rb +++ b/app/components/arclight/document_components_hierarchy_component.rb @@ -4,8 +4,8 @@ module Arclight # Display a document's constituent components with appropriate lazy-loading # to keep the page load time reasonable. class DocumentComponentsHierarchyComponent < ViewComponent::Base - # rubocop:disable Metrics/ParameterLists - def initialize(document: nil, target_index: -1, minimum_pagination_size: 20, left_outer_window: 3, maximum_left_gap: 10, window: 10) + # rubocop:disable Metrics/ParameterLists + def initialize(document: nil, target_index: -1, minimum_pagination_size: 200, left_outer_window: 30, maximum_left_gap: 100, window: 100) super @document = document @@ -21,6 +21,15 @@ def paginate? @document.number_of_children > @minimum_pagination_size end + def num_pages + number_of_pages = (@document.number_of_children / @maximum_left_gap.to_f).round + (1..number_of_pages).to_a + end + + def get_offset(page) + page * @maximum_left_gap + end + def hierarchy_path(**kwargs) helpers.hierarchy_solr_document_path(id: @document.id, hierarchy: true, nest_path: params[:nest_path], **kwargs) end