arclight 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.all-contributorsrc +450 -0
- data/.babelrc +3 -0
- data/.codeclimate.yml +5 -0
- data/.eslintrc +3 -0
- data/.rubocop.yml +19 -0
- data/.rubocop_todo.yml +15 -135
- data/.travis.yml +2 -2
- data/CONTRIBUTORS.md +79 -0
- data/README.md +21 -24
- data/Rakefile +0 -1
- data/app/assets/images/blacklight/bookmark.svg +1 -0
- data/app/assets/images/blacklight/collection.svg +5 -0
- data/app/assets/images/blacklight/compact.svg +1 -25
- data/app/assets/images/blacklight/container.svg +5 -0
- data/app/assets/images/blacklight/ead.svg +1 -0
- data/app/assets/images/blacklight/file.svg +5 -0
- data/app/assets/images/blacklight/folder.svg +1 -0
- data/app/assets/images/blacklight/list.svg +1 -0
- data/app/assets/images/blacklight/minus.svg +1 -0
- data/app/assets/images/blacklight/online.svg +5 -0
- data/app/assets/images/blacklight/pdf.svg +1 -0
- data/app/assets/images/blacklight/plus.svg +1 -0
- data/app/assets/images/blacklight/repository.svg +1 -0
- data/app/assets/javascripts/arclight/arclight.js +1 -3
- data/app/assets/javascripts/arclight/collection_navigation.js +36 -53
- data/app/assets/javascripts/arclight/collection_scrollspy.js +1 -1
- data/app/assets/javascripts/arclight/context_navigation.js +374 -0
- data/app/assets/javascripts/arclight/truncator.js.erb +8 -2
- data/app/assets/stylesheets/arclight/application.scss +3 -1
- data/app/assets/stylesheets/arclight/bootstrap_overrides.scss +23 -0
- data/app/assets/stylesheets/arclight/modules/context_navigation.scss +75 -0
- data/app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss +28 -35
- data/app/assets/stylesheets/arclight/modules/highlights.scss +2 -1
- data/app/assets/stylesheets/arclight/modules/layout.scss +128 -14
- data/app/assets/stylesheets/arclight/modules/mastheads.scss +27 -5
- data/app/assets/stylesheets/arclight/modules/repositories.scss +1 -5
- data/app/assets/stylesheets/arclight/modules/repository_card.scss +6 -7
- data/app/assets/stylesheets/arclight/modules/search_results.scss +145 -24
- data/app/assets/stylesheets/arclight/modules/show_collection.scss +38 -59
- data/app/assets/stylesheets/arclight/responsive.scss +13 -0
- data/app/assets/stylesheets/arclight/variables.scss +21 -1
- data/app/controllers/concerns/arclight/ead_format_helpers.rb +225 -0
- data/app/controllers/concerns/arclight/field_config_helpers.rb +23 -7
- data/app/factories/blacklight_field_configuration_factory.rb +1 -0
- data/app/helpers/arclight_helper.rb +197 -35
- data/app/models/arclight/document_downloads.rb +125 -0
- data/app/models/arclight/parent.rb +4 -2
- data/app/models/arclight/parents.rb +6 -4
- data/app/models/arclight/requests/aeon_external_request.rb +42 -0
- data/app/models/arclight/requests/aeon_web_ead.rb +47 -0
- data/app/models/arclight/requests/google_form.rb +2 -2
- data/app/models/concerns/arclight/catalog.rb +14 -2
- data/app/models/concerns/arclight/search_behavior.rb +27 -12
- data/app/models/concerns/arclight/solr_document.rb +29 -7
- data/app/views/arclight/_requests.html.erb +7 -0
- data/app/views/arclight/repositories/_in_person_repository.html.erb +1 -1
- data/app/views/arclight/repositories/_repository.html.erb +2 -2
- data/app/views/arclight/repositories/_repository_contact.html.erb +9 -0
- data/app/views/arclight/repositories/index.html.erb +3 -0
- data/app/views/arclight/repositories/show.html.erb +5 -4
- data/app/views/arclight/requests/_aeon_external_request_endpoint.html.erb +9 -0
- data/app/views/arclight/requests/_aeon_web_ead.html.erb +7 -0
- data/app/views/arclight/requests/_google_form.html.erb +2 -1
- data/app/views/arclight/viewers/_oembed.html.erb +2 -1
- data/app/views/catalog/_access_contents.html.erb +15 -0
- data/app/views/catalog/_arclight_abstract_or_scope.html.erb +5 -0
- data/app/views/catalog/_arclight_bookmark_control.html.erb +38 -0
- data/app/views/catalog/_arclight_document_header_icon.html.erb +1 -0
- data/app/views/catalog/_arclight_index_compact_default.html.erb +18 -11
- data/app/views/catalog/_arclight_index_default.html.erb +45 -0
- data/app/views/catalog/_arclight_index_group_document_compact_default.html.erb +19 -0
- data/app/views/catalog/_arclight_index_group_document_default.html.erb +18 -0
- data/app/views/catalog/_arclight_online_content_indicator.html.erb +1 -3
- data/app/views/catalog/_collection_contents.html.erb +2 -10
- data/app/views/catalog/_collection_context.html.erb +15 -0
- data/app/views/catalog/_collection_context_nav.html.erb +12 -0
- data/app/views/catalog/_collection_online_contents.html.erb +3 -3
- data/app/views/catalog/_component_context.html.erb +5 -0
- data/app/views/catalog/_containers.html.erb +3 -0
- data/app/views/catalog/_context_sidebar.html.erb +2 -2
- data/app/views/catalog/_document_downloads.html.erb +14 -0
- data/app/views/catalog/_group.html.erb +21 -0
- data/app/views/catalog/_group_header_compact_default.html.erb +15 -0
- data/app/views/catalog/_group_header_default.html.erb +20 -0
- data/app/views/catalog/_group_toggle.html.erb +10 -0
- data/app/views/catalog/_home.html.erb +1 -1
- data/app/views/catalog/_index_breadcrumb_default.html.erb +5 -2
- data/app/views/catalog/_index_collection_context_default.html.erb +53 -0
- data/app/views/catalog/_index_header.html.erb +3 -3
- data/app/views/catalog/_index_online_contents_default.html.erb +1 -1
- data/app/views/catalog/_online_content_label.html.erb +5 -0
- data/app/views/catalog/_search_form.html.erb +34 -0
- data/app/views/catalog/_search_results.html.erb +1 -4
- data/app/views/catalog/_show_actions_box_default.html.erb +27 -0
- data/app/views/catalog/_show_breadcrumbs_default.html.erb +5 -20
- data/app/views/catalog/_show_collection.html.erb +42 -24
- data/app/views/catalog/_show_default.html.erb +63 -35
- data/app/views/catalog/_show_upper_metadata_default.html.erb +1 -1
- data/app/views/catalog/_sort_and_per_page.html.erb +8 -0
- data/app/views/catalog/_within_collection_dropdown.html.erb +26 -0
- data/app/views/shared/_breadcrumbs.html.erb +4 -4
- data/app/views/shared/_context_sidebar.html.erb +2 -2
- data/app/views/shared/_header_navbar.html.erb +13 -17
- data/app/views/shared/_show_breadcrumbs.html.erb +27 -0
- data/arclight.gemspec +5 -6
- data/config/i18n-tasks.yml +2 -1
- data/config/locales/arclight.en.yml +54 -21
- data/config/repositories.yml +0 -0
- data/lib/arclight/engine.rb +22 -12
- data/lib/arclight/hash_absolute_xpath.rb +11 -7
- data/lib/arclight/level_label.rb +46 -0
- data/lib/arclight/normalized_date.rb +2 -2
- data/lib/arclight/normalized_id.rb +1 -0
- data/lib/arclight/normalized_title.rb +1 -0
- data/lib/arclight/repository.rb +58 -5
- data/lib/arclight/traject/ead2_config.rb +178 -159
- data/lib/arclight/traject/nokogiri_namespaceless_reader.rb +22 -0
- data/lib/arclight/version.rb +1 -1
- data/lib/arclight/viewers/oembed.rb +1 -0
- data/lib/arclight/year_range.rb +9 -1
- data/lib/generators/arclight/install_generator.rb +5 -1
- data/lib/generators/arclight/templates/catalog_controller.rb +128 -100
- data/lib/generators/arclight/templates/config/downloads.yml +12 -0
- data/lib/generators/arclight/templates/config/repositories.yml +20 -2
- data/lib/generators/arclight/update_generator.rb +1 -1
- data/lib/tasks/index.rake +18 -20
- data/package.json +8 -1
- data/solr/conf/schema.xml +51 -292
- data/solr/conf/solrconfig.xml +40 -125
- data/tasks/arclight.rake +1 -0
- data/vendor/assets/javascripts/responsiveTruncator.js +2 -2
- metadata +71 -44
- data/app/assets/javascripts/arclight/collection_context.js +0 -18
- data/app/assets/javascripts/arclight/component_ancestors.js +0 -56
- data/app/assets/javascripts/arclight/search_results.js +0 -15
- data/app/assets/stylesheets/arclight/modules/sidebar.scss +0 -21
- data/app/views/catalog/_collection_count.html.erb +0 -7
- data/app/views/catalog/_collection_downloads.html.erb +0 -15
- data/app/views/catalog/_collection_overview.html.erb +0 -7
- data/app/views/catalog/_component_contents.html.erb +0 -16
- data/app/views/catalog/_component_overview.html.erb +0 -40
- data/app/views/catalog/_index_header_hierarchy_default.html.erb +0 -42
- data/app/views/catalog/_index_hierarchy_default.html.erb +0 -28
- data/app/views/catalog/_results_histogram.html.erb +0 -15
- data/app/views/catalog/_show_component_sidebar.html.erb +0 -12
- data/app/views/catalog/_show_sidebar.html.erb +0 -22
- data/lib/arclight/custom_component.rb +0 -99
- data/lib/arclight/custom_document.rb +0 -93
- data/lib/arclight/indexer.rb +0 -9
- data/lib/arclight/shared_indexing_behavior.rb +0 -97
- data/lib/arclight/shared_terminology_behavior.rb +0 -65
- data/lib/arclight/solr_ead_indexer_ext.rb +0 -155
data/Rakefile
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path d="M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z"/></svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Used unmodified from https://fontawesome.com
|
|
3
|
+
CC BY 4.0 https://creativecommons.org/licenses/by/4.0/
|
|
4
|
+
-->
|
|
5
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z"/></svg>
|
|
@@ -1,25 +1 @@
|
|
|
1
|
-
|
|
2
|
-
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
3
|
-
<!-- Generator: Sketch 44.1 (41455) - http://www.bohemiancoding.com/sketch -->
|
|
4
|
-
<title>Compact</title>
|
|
5
|
-
<desc>Created with Sketch.</desc>
|
|
6
|
-
<defs></defs>
|
|
7
|
-
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="square">
|
|
8
|
-
<g id="Compact" stroke="#000000">
|
|
9
|
-
<path d="M1.43885093,2.44444444 L6.83349609,2.44444444"></path>
|
|
10
|
-
<path d="M1.43885093,4.44444444 L6.83349609,4.44444444"></path>
|
|
11
|
-
<path d="M1.43885093,6.44444444 L6.83349609,6.44444444"></path>
|
|
12
|
-
<path d="M1.43885093,8.44444444 L6.83349609,8.44444444"></path>
|
|
13
|
-
<path d="M1.43885093,10.4444444 L6.83349609,10.4444444"></path>
|
|
14
|
-
<path d="M1.43885093,12.4444444 L6.83349609,12.4444444"></path>
|
|
15
|
-
<path d="M1.43885093,14.4444444 L6.83349609,14.4444444"></path>
|
|
16
|
-
<path d="M9.43885093,2.44444444 L14.8334961,2.44444444"></path>
|
|
17
|
-
<path d="M9.43885093,4.44444444 L14.8334961,4.44444444"></path>
|
|
18
|
-
<path d="M9.43885093,6.44444444 L14.8334961,6.44444444"></path>
|
|
19
|
-
<path d="M9.43885093,8.44444444 L14.8334961,8.44444444"></path>
|
|
20
|
-
<path d="M9.43885093,10.4444444 L14.8334961,10.4444444"></path>
|
|
21
|
-
<path d="M9.43885093,12.4444444 L14.8334961,12.4444444"></path>
|
|
22
|
-
<path d="M9.43885093,14.4444444 L14.8334961,14.4444444"></path>
|
|
23
|
-
</g>
|
|
24
|
-
</g>
|
|
25
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3,15H21V13H3Zm0,4H21V17H3Zm0-8H21V9H3ZM3,5V7H21V5Z"/></svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Used unmodified from https://fontawesome.com
|
|
3
|
+
CC BY 4.0 https://creativecommons.org/licenses/by/4.0/
|
|
4
|
+
-->
|
|
5
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path d="M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"/></svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Used unmodified from https://fontawesome.com
|
|
3
|
+
CC BY 4.0 https://creativecommons.org/licenses/by/4.0/
|
|
4
|
+
-->
|
|
5
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path d="M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>file</title><path d="M0,0H24V24H0Z" fill="none"/><path d="M3,19H21V13.45H3ZM3,5v5.61H21V5Z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M19 13H5v-2h14v2z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Used unmodified from https://fontawesome.com
|
|
3
|
+
CC BY 4.0 https://creativecommons.org/licenses/by/4.0/
|
|
4
|
+
-->
|
|
5
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path d="M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm250.2-143.7c-12.2-12-47-8.7-64.4-6.5-17.2-10.5-28.7-25-36.8-46.3 3.9-16.1 10.1-40.6 5.4-56-4.2-26.2-37.8-23.6-42.6-5.9-4.4 16.1-.4 38.5 7 67.1-10 23.9-24.9 56-35.4 74.4-20 10.3-47 26.2-51 46.2-3.3 15.8 26 55.2 76.1-31.2 22.4-7.4 46.8-16.5 68.4-20.1 18.9 10.2 41 17 55.8 17 25.5 0 28-28.2 17.5-38.7zm-198.1 77.8c5.1-13.7 24.5-29.5 30.4-35-19 30.3-30.4 35.7-30.4 35zm81.6-190.6c7.4 0 6.7 32.1 1.8 40.8-4.4-13.9-4.3-40.8-1.8-40.8zm-24.4 136.6c9.7-16.9 18-37 24.7-54.7 8.3 15.1 18.9 27.2 30.1 35.5-20.8 4.3-38.9 13.1-54.8 19.2zm131.6-5s-5 6-37.3-7.8c35.1-2.6 40.9 5.4 37.3 7.8z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M4 10v7h3v-7H4zm6 0v7h3v-7h-3zM2 22h19v-3H2v3zm14-12v7h3v-7h-3zm-4.5-9L2 6v2h19V6l-9.5-5z"/></svg>
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
//= require arclight/collection_scrollspy
|
|
2
2
|
//= require arclight/collection_navigation
|
|
3
|
-
//= require arclight/
|
|
4
|
-
//= require arclight/component_ancestors
|
|
3
|
+
//= require arclight/context_navigation
|
|
5
4
|
//= require arclight/oembed_viewer
|
|
6
|
-
//= require arclight/search_results
|
|
7
5
|
//= require arclight/truncator
|
|
8
6
|
|
|
9
7
|
// Vendor Scripts
|
|
@@ -1,54 +1,8 @@
|
|
|
1
1
|
(function (global) {
|
|
2
2
|
var CollectionNavigation;
|
|
3
|
-
/**
|
|
4
|
-
* Converts documents that should be used in a hierarchy, to highlighted
|
|
5
|
-
* localized siblings.
|
|
6
|
-
*/
|
|
7
|
-
function convertDocsForContext(id, $doc) {
|
|
8
|
-
var newDocs;
|
|
9
|
-
var $currentDoc;
|
|
10
|
-
var $previousDocs;
|
|
11
|
-
var $nextDocs;
|
|
12
|
-
var headers = $doc.find('article div[data-document-id="' + id + '"]');
|
|
13
|
-
if (headers.length === 0) {
|
|
14
|
-
$.error('Document is missing id=' + id);
|
|
15
|
-
}
|
|
16
|
-
$currentDoc = $(headers[0].parentNode); // need article element
|
|
17
|
-
$currentDoc.addClass('al-hierarchy-highlight');
|
|
18
|
-
|
|
19
|
-
// Unlink the current component - just show the title
|
|
20
|
-
$currentDoc.find('a').contents().unwrap();
|
|
21
|
-
|
|
22
|
-
// We want to show 0-1 or 0-2 siblings depending on where highlighted component is
|
|
23
|
-
$previousDocs = $currentDoc.prevUntil().slice(0, 2);
|
|
24
|
-
$nextDocs = $currentDoc.nextUntil().slice(0, 2);
|
|
25
|
-
|
|
26
|
-
if ($previousDocs.length > 0 && $nextDocs.length > 0) {
|
|
27
|
-
// Case where there are siblings on both sides, show 1 each
|
|
28
|
-
newDocs = $('<div>');
|
|
29
|
-
newDocs.append($previousDocs.first());
|
|
30
|
-
newDocs.append($currentDoc);
|
|
31
|
-
newDocs.append($nextDocs.first());
|
|
32
|
-
} else if ($previousDocs.length > 0) {
|
|
33
|
-
// Case where there are only previous siblings, show 2 of them
|
|
34
|
-
newDocs = $('<div>');
|
|
35
|
-
newDocs.append($previousDocs.get().reverse()); // previous is not in the order we need
|
|
36
|
-
newDocs.append($currentDoc);
|
|
37
|
-
} else {
|
|
38
|
-
// Case where there are only next siblings, show 2 of them
|
|
39
|
-
newDocs = $('<div>');
|
|
40
|
-
newDocs.append($currentDoc);
|
|
41
|
-
newDocs.append($nextDocs);
|
|
42
|
-
}
|
|
43
|
-
// Cleanup to remove collapsible children stuff
|
|
44
|
-
newDocs.find('.al-toggle-view-more').remove();
|
|
45
|
-
newDocs.find('.collapse').remove();
|
|
46
|
-
newDocs.find('hr').remove();
|
|
47
|
-
return newDocs;
|
|
48
|
-
}
|
|
49
3
|
|
|
50
4
|
CollectionNavigation = {
|
|
51
|
-
init: function (el) {
|
|
5
|
+
init: function (el, page = 1) {
|
|
52
6
|
var $el = $(el);
|
|
53
7
|
var data = $el.data();
|
|
54
8
|
// Add a placeholder so flashes of text are not as significant
|
|
@@ -66,7 +20,8 @@
|
|
|
66
20
|
'f[component_level_isim][]': data.arclight.level,
|
|
67
21
|
'f[has_online_content_ssim][]': data.arclight.access,
|
|
68
22
|
'f[collection_sim][]': data.arclight.name,
|
|
69
|
-
'f[
|
|
23
|
+
'f[parent_ssim][]': data.arclight.parent,
|
|
24
|
+
page: page,
|
|
70
25
|
search_field: data.arclight.search_field,
|
|
71
26
|
view: data.arclight.view || 'hierarchy'
|
|
72
27
|
}
|
|
@@ -75,13 +30,39 @@
|
|
|
75
30
|
var $doc = $(resp);
|
|
76
31
|
var showDocs = $doc.find('article.document');
|
|
77
32
|
var newDocs = $doc.find('#documents');
|
|
33
|
+
var sortPerPage = $doc.find('#sortAndPerPage');
|
|
34
|
+
var pageEntries = sortPerPage.find('.page-entries');
|
|
35
|
+
var numberEntries = parseInt(pageEntries.find('strong').last().text().replace(/,/g, ''), 10);
|
|
36
|
+
|
|
37
|
+
// Hide these until we re-enable in the future
|
|
38
|
+
sortPerPage.find('.result-type-group').hide();
|
|
39
|
+
sortPerPage.find('.search-widgets').hide();
|
|
78
40
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
41
|
+
if (!isNaN(numberEntries)) {
|
|
42
|
+
$('[data-arclight-online-content-tab-count]').html(
|
|
43
|
+
$(
|
|
44
|
+
'<span class="badge badge-pill badge-secondary al-online-content-badge">'
|
|
45
|
+
+ numberEntries
|
|
46
|
+
+ '<span class="sr-only">components</span></span>'
|
|
47
|
+
)
|
|
48
|
+
);
|
|
82
49
|
}
|
|
83
50
|
|
|
84
|
-
|
|
51
|
+
sortPerPage.find('a').on('click', function (e) {
|
|
52
|
+
var pages = [];
|
|
53
|
+
var $target = $(e.target);
|
|
54
|
+
e.preventDefault();
|
|
55
|
+
pages = /page=(\d+)&/.exec($target.attr('href'));
|
|
56
|
+
if (pages) {
|
|
57
|
+
CollectionNavigation.init($el, pages[1]);
|
|
58
|
+
} else {
|
|
59
|
+
// Case where the "first" page
|
|
60
|
+
CollectionNavigation.init($el);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
$el.hide().html('').append(sortPerPage).append(newDocs)
|
|
65
|
+
.fadeIn(500);
|
|
85
66
|
if (showDocs.length > 0) {
|
|
86
67
|
$el.trigger('navigation.contains.elements');
|
|
87
68
|
}
|
|
@@ -102,8 +83,10 @@ Blacklight.onLoad(function () {
|
|
|
102
83
|
|
|
103
84
|
$('.al-contents').on('navigation.contains.elements', function (e) {
|
|
104
85
|
var toEnable = $('[data-hierarchy-enable-me]');
|
|
86
|
+
var srOnly = $('h2[data-sr-enable-me]');
|
|
105
87
|
toEnable.removeClass('disabled');
|
|
106
|
-
toEnable.text('
|
|
88
|
+
toEnable.text(srOnly.data('hasContents'));
|
|
89
|
+
srOnly.text(srOnly.data('hasContents'));
|
|
107
90
|
|
|
108
91
|
$(e.target).find('.collapse').on('show.bs.collapse', function (ee) {
|
|
109
92
|
var $newTarget = $(ee.target);
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
class NavigationDocument {
|
|
2
|
+
constructor(el) {
|
|
3
|
+
this.el = $(el);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
get id() {
|
|
7
|
+
return this.el.find('[data-document-id]').data().documentId;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
setAsHighlighted() {
|
|
11
|
+
this.el.find('li.al-collection-context').addClass('al-hierarchy-highlight');
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
collapse() {
|
|
15
|
+
this.el.find('li.al-collection-context').addClass('collapsed');
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
render() {
|
|
19
|
+
return this.el.html();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Models the "Expand"/"Collapse" button, and provides an onClick event handler
|
|
25
|
+
* for the jQuery element
|
|
26
|
+
* @class
|
|
27
|
+
*/
|
|
28
|
+
class ExpandButton {
|
|
29
|
+
/**
|
|
30
|
+
* This retrieves the <li> elements which are hidden/rendered in response to
|
|
31
|
+
* clicking the <button> element
|
|
32
|
+
* @param {jQuery} $li - the <button> element
|
|
33
|
+
* @return {jQuery} - a jQuery object containing the targeted <li>
|
|
34
|
+
*/
|
|
35
|
+
findSiblings() {
|
|
36
|
+
const $siblings = this.$el.parent().children('li');
|
|
37
|
+
return $siblings.slice(0, -1);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* This adds a "collapsed" class to all of the <li> children, as well as
|
|
42
|
+
* updates the text for the <button> element
|
|
43
|
+
* @param {Event} event - the event propagated in response to clicking on the
|
|
44
|
+
* <button> element
|
|
45
|
+
*/
|
|
46
|
+
handleClick() {
|
|
47
|
+
const $targeted = this.findSiblings();
|
|
48
|
+
|
|
49
|
+
$targeted.toggleClass('collapsed');
|
|
50
|
+
this.$el.toggleClass('collapsed');
|
|
51
|
+
|
|
52
|
+
const containerText = this.$el.hasClass('collapsed') ? this.collapseText : this.expandText;
|
|
53
|
+
this.$el.text(containerText);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @constructor
|
|
58
|
+
*/
|
|
59
|
+
constructor(data) {
|
|
60
|
+
this.collapseText = data.collapse;
|
|
61
|
+
this.expandText = data.expand;
|
|
62
|
+
|
|
63
|
+
this.$el = $(`<button class="my-3 btn btn-secondary btn-sm">${this.expandText}</button>`);
|
|
64
|
+
this.handleClick = this.handleClick.bind(this);
|
|
65
|
+
this.$el.click(this.handleClick);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Modeling <button> Elements which hide or retrieve <li> elements for sibling
|
|
71
|
+
* documents nested within the <li> elements of the <ul> tree
|
|
72
|
+
* @class
|
|
73
|
+
*/
|
|
74
|
+
class NestedExpandButton extends ExpandButton {
|
|
75
|
+
/**
|
|
76
|
+
* This retrieves the <li> elements which are hidden/rendered in response to
|
|
77
|
+
* clicking the <button> element
|
|
78
|
+
* @param {jQuery} $li - the <button> element
|
|
79
|
+
* @return {jQuery} - a jQuery object containing the targeted <li>
|
|
80
|
+
*/
|
|
81
|
+
findSiblings() {
|
|
82
|
+
const highlighted = this.$el.siblings('.al-hierarchy-highlight');
|
|
83
|
+
const $siblings = highlighted.prevAll('.al-collection-context');
|
|
84
|
+
return $siblings.slice(0, -1);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Models the placeholder display elements for content loading from AJAX
|
|
90
|
+
* requests
|
|
91
|
+
* @class
|
|
92
|
+
*/
|
|
93
|
+
class Placeholder {
|
|
94
|
+
/*
|
|
95
|
+
* Builds the element set which contains the placeholder markup
|
|
96
|
+
* classes
|
|
97
|
+
*/
|
|
98
|
+
/* eslint-disable class-methods-use-this */
|
|
99
|
+
buildElement() {
|
|
100
|
+
const elementMarkup = '<div class="al-hierarchy-placeholder">' +
|
|
101
|
+
'<h3 class="col-md-9"></h3>' +
|
|
102
|
+
'<p class="col-md-6"></p>' +
|
|
103
|
+
'<p class="col-md-12"></p>' +
|
|
104
|
+
'<p class="col-md-3"></p>' +
|
|
105
|
+
'</div>';
|
|
106
|
+
const markup = Array(3).join(elementMarkup);
|
|
107
|
+
|
|
108
|
+
return $(markup);
|
|
109
|
+
}
|
|
110
|
+
/* eslint-enable class-methods-use-this */
|
|
111
|
+
|
|
112
|
+
/*
|
|
113
|
+
* @constructor
|
|
114
|
+
*/
|
|
115
|
+
constructor() {
|
|
116
|
+
this.$el = this.buildElement();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
class ContextNavigation {
|
|
121
|
+
constructor(el, originalParents = null, originalDocument = null) {
|
|
122
|
+
this.el = $(el);
|
|
123
|
+
this.data = this.el.data();
|
|
124
|
+
this.parentLi = this.el.parent();
|
|
125
|
+
this.eadid = this.data.arclight.eadid;
|
|
126
|
+
this.originalParents = originalParents || this.data.arclight.originalParents;
|
|
127
|
+
this.originalDocument = originalDocument || this.data.arclight.originalDocument;
|
|
128
|
+
this.ul = $('<ul class="al-context-nav-parent"></ul>');
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Gets the targetId to select, based off of parents and current level
|
|
132
|
+
get targetId() {
|
|
133
|
+
return `${this.eadid}${this.originalParents[this.data.arclight.level]}`;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
get requestParent() {
|
|
137
|
+
if (this.originalParents && this.originalParents[this.data.arclight.level - 1]) {
|
|
138
|
+
return this.originalParents[this.data.arclight.level - 1];
|
|
139
|
+
}
|
|
140
|
+
return this.data.arclight.originalDocument.replace(this.eadid, '');
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
getData() {
|
|
144
|
+
const that = this;
|
|
145
|
+
// Add a placeholder so flashes of text are not as significant
|
|
146
|
+
const placeholder = new Placeholder();
|
|
147
|
+
this.el.after(placeholder.$el);
|
|
148
|
+
$.ajax({
|
|
149
|
+
url: this.data.arclight.path,
|
|
150
|
+
data: {
|
|
151
|
+
'f[component_level_isim][]': this.data.arclight.level,
|
|
152
|
+
'f[has_online_content_ssim][]': this.data.arclight.access,
|
|
153
|
+
'f[collection_sim][]': this.data.arclight.name,
|
|
154
|
+
'f[parent_ssi][]': this.requestParent,
|
|
155
|
+
search_field: this.data.arclight.search_field,
|
|
156
|
+
original_parents: this.data.arclight.originalParents,
|
|
157
|
+
original_document: this.originalDocument,
|
|
158
|
+
view: 'collection_context'
|
|
159
|
+
}
|
|
160
|
+
}).done((response) => that.updateView(response));
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Constructs a <ul> container element with an ElementButton instance appended
|
|
165
|
+
* within it
|
|
166
|
+
* @returns {jQuery}
|
|
167
|
+
*/
|
|
168
|
+
buildExpandList() {
|
|
169
|
+
const $ul = $('<ul></ul>');
|
|
170
|
+
$ul.addClass('pl-0');
|
|
171
|
+
$ul.addClass('prev-siblings');
|
|
172
|
+
const button = new ExpandButton(this.data);
|
|
173
|
+
$ul.append(button.$el);
|
|
174
|
+
return $ul;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Highlights the <li> element for the current Document and appends <li> the
|
|
179
|
+
* sibling documents for a given Document element
|
|
180
|
+
* @param {NavigationDocument[]} newDocs - the NavigationDocument objects for
|
|
181
|
+
* each resulting Solr Document
|
|
182
|
+
* @param {number} originalDocumentIndex
|
|
183
|
+
*/
|
|
184
|
+
updateSiblings(newDocs, originalDocumentIndex) {
|
|
185
|
+
newDocs[originalDocumentIndex].setAsHighlighted();
|
|
186
|
+
|
|
187
|
+
// Hide all but the first previous sibling
|
|
188
|
+
const prevSiblingDocs = newDocs.slice(0, originalDocumentIndex);
|
|
189
|
+
let nextSiblingDocs = [];
|
|
190
|
+
|
|
191
|
+
if (prevSiblingDocs.length > 1 && originalDocumentIndex > 0) {
|
|
192
|
+
const hiddenPrevSiblingDocs = prevSiblingDocs.slice(0, -1);
|
|
193
|
+
hiddenPrevSiblingDocs.forEach(siblingDoc => {
|
|
194
|
+
siblingDoc.collapse();
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
const prevSiblingList = this.buildExpandList();
|
|
198
|
+
const renderedPrevSiblingItems = prevSiblingDocs.map(doc => doc.render()).join('');
|
|
199
|
+
|
|
200
|
+
prevSiblingList.append(renderedPrevSiblingItems);
|
|
201
|
+
this.ul.append(prevSiblingList);
|
|
202
|
+
|
|
203
|
+
nextSiblingDocs = newDocs.slice(originalDocumentIndex);
|
|
204
|
+
} else {
|
|
205
|
+
nextSiblingDocs = newDocs;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const renderedNextSiblingItems = nextSiblingDocs.map(newDoc => newDoc.render()).join('');
|
|
209
|
+
|
|
210
|
+
// Insert the rendered sibling documents before the <li> elements
|
|
211
|
+
this.ul.append(renderedNextSiblingItems);
|
|
212
|
+
this.el.html(this.ul);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Inserts <li> elements for parents (e. g. components or collections) for the
|
|
217
|
+
* current Document and appends <li> for each of these
|
|
218
|
+
* @param {NavigationDocument[]} newDocs - the NavigationDocument objects for
|
|
219
|
+
* each resulting Solr Document
|
|
220
|
+
*/
|
|
221
|
+
updateParents(newDocs) {
|
|
222
|
+
const that = this;
|
|
223
|
+
// Case where this is a parent list and needs to be filed correctly
|
|
224
|
+
//
|
|
225
|
+
// Otherwise, retrieve the parent...
|
|
226
|
+
let newDocIndex = newDocs.findIndex(doc => doc.id === this.targetId);
|
|
227
|
+
|
|
228
|
+
if (newDocIndex === -1) {
|
|
229
|
+
const renderedDocs = newDocs.map(newDoc => newDoc.render()).join('');
|
|
230
|
+
this.ul.append(renderedDocs);
|
|
231
|
+
this.el.html(this.ul);
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
// Update the docs before the item
|
|
235
|
+
// Retrieves the documents up to and including the "new document"
|
|
236
|
+
const beforeDocs = newDocs.slice(0, newDocIndex);
|
|
237
|
+
let prevParentList = null;
|
|
238
|
+
let renderedBeforeDocs;
|
|
239
|
+
if (beforeDocs.length > 1) {
|
|
240
|
+
beforeDocs.forEach(function (parentDoc) {
|
|
241
|
+
parentDoc.collapse();
|
|
242
|
+
});
|
|
243
|
+
renderedBeforeDocs = beforeDocs.map(newDoc => newDoc.render()).join('');
|
|
244
|
+
prevParentList = this.buildExpandList();
|
|
245
|
+
prevParentList.append(renderedBeforeDocs);
|
|
246
|
+
} else {
|
|
247
|
+
renderedBeforeDocs = beforeDocs.map(newDoc => newDoc.render()).join('');
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// Silly but works for now
|
|
251
|
+
this.ul.append(prevParentList || renderedBeforeDocs);
|
|
252
|
+
|
|
253
|
+
let itemDoc = newDocs.slice(newDocIndex, newDocIndex + 1);
|
|
254
|
+
let renderedItemDoc = itemDoc.map(doc => doc.render()).join('');
|
|
255
|
+
|
|
256
|
+
// Update the item
|
|
257
|
+
const $itemDoc = $(renderedItemDoc);
|
|
258
|
+
this.ul.append($itemDoc);
|
|
259
|
+
|
|
260
|
+
// Update the docs after the item
|
|
261
|
+
const afterDocs = newDocs.slice(newDocIndex + 1, newDocs.length);
|
|
262
|
+
const renderedAfterDocs = afterDocs.map(newDoc => newDoc.render()).join('');
|
|
263
|
+
|
|
264
|
+
// Insert the documents after the current
|
|
265
|
+
this.ul.append(renderedAfterDocs);
|
|
266
|
+
this.el.html(this.ul);
|
|
267
|
+
|
|
268
|
+
// Initialize additional things
|
|
269
|
+
$itemDoc.find('.context-navigator').each(function (i, e) {
|
|
270
|
+
const contextNavigation = new ContextNavigation(
|
|
271
|
+
e, that.originalParents, that.originalDocument
|
|
272
|
+
);
|
|
273
|
+
contextNavigation.getData();
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Update the ancestors for <li> elements
|
|
280
|
+
* @param {jQuery} $li - the <li> element for the current, highlighted
|
|
281
|
+
* Document in the <ul> context list of collections, components, and
|
|
282
|
+
* containers
|
|
283
|
+
*/
|
|
284
|
+
/* eslint-disable class-methods-use-this */
|
|
285
|
+
updateListSiblings($li) {
|
|
286
|
+
const prevSiblings = $li.prevAll('.al-collection-context');
|
|
287
|
+
if (prevSiblings.length > 1) {
|
|
288
|
+
const hiddenNextSiblings = prevSiblings.slice(0, -1);
|
|
289
|
+
hiddenNextSiblings.toggleClass('collapsed');
|
|
290
|
+
|
|
291
|
+
const button = new NestedExpandButton();
|
|
292
|
+
|
|
293
|
+
const lastHiddenNextSibling = hiddenNextSiblings[hiddenNextSiblings.length - 1];
|
|
294
|
+
button.$el.insertAfter(lastHiddenNextSibling);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/* eslint-enable class-methods-use-this */
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* This updates the elements in the View DOM using an AJAX response containing
|
|
301
|
+
* the HTML of a server-rendered View template.
|
|
302
|
+
* It is this which is primarily used to populate the <ul> element with
|
|
303
|
+
* children for the navigation context, containing <li> elements for
|
|
304
|
+
* collections, components, and containers.
|
|
305
|
+
* @param {string} response - the AJAX response body
|
|
306
|
+
*/
|
|
307
|
+
updateView(response) {
|
|
308
|
+
const that = this;
|
|
309
|
+
var resp = $.parseHTML(response);
|
|
310
|
+
var $doc = $(resp);
|
|
311
|
+
var newDocs = $doc.find('#documents')
|
|
312
|
+
.find('article')
|
|
313
|
+
.toArray().map(el => new NavigationDocument(el));
|
|
314
|
+
|
|
315
|
+
// See if the original document is located in the returned documents
|
|
316
|
+
const originalDocumentIndex = newDocs
|
|
317
|
+
.findIndex(doc => doc.id === that.originalDocument);
|
|
318
|
+
that.parentLi.find('.al-hierarchy-placeholder').remove();
|
|
319
|
+
|
|
320
|
+
// If the original document in the results, update it. If not update with a
|
|
321
|
+
// more complex procedure
|
|
322
|
+
if (originalDocumentIndex !== -1) {
|
|
323
|
+
this.updateSiblings(newDocs, originalDocumentIndex);
|
|
324
|
+
} else {
|
|
325
|
+
this.updateParents(
|
|
326
|
+
newDocs,
|
|
327
|
+
that.data.arclight.originalParents,
|
|
328
|
+
that.data.arclight.parent,
|
|
329
|
+
that.parentLi
|
|
330
|
+
);
|
|
331
|
+
}
|
|
332
|
+
this.el.parent().data('resolved', true);
|
|
333
|
+
this.addListenersForPlusMinus();
|
|
334
|
+
this.enablebuttons();
|
|
335
|
+
Blacklight.doBookmarkToggleBehavior();
|
|
336
|
+
this.el.trigger('navigation.contains.elements');
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
// eslint-disable-next-line class-methods-use-this
|
|
340
|
+
enablebuttons() {
|
|
341
|
+
var toEnable = $('[data-hierarchy-enable-me]');
|
|
342
|
+
var srOnly = $('h2[data-sr-enable-me]');
|
|
343
|
+
toEnable.removeClass('disabled');
|
|
344
|
+
toEnable.text(srOnly.data('hasContents'));
|
|
345
|
+
srOnly.text(srOnly.data('hasContents'));
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
addListenersForPlusMinus() {
|
|
349
|
+
const that = this;
|
|
350
|
+
this.ul.find('.al-toggle-view-children').on('click', (e) => {
|
|
351
|
+
e.preventDefault();
|
|
352
|
+
const targetArea = $($(e.target).attr('href'));
|
|
353
|
+
if (!targetArea.data().resolved) {
|
|
354
|
+
targetArea.find('.context-navigator').each((i, ee) => {
|
|
355
|
+
const contextNavigation = new ContextNavigation(
|
|
356
|
+
ee, that.originalParents, that.originalDocument
|
|
357
|
+
);
|
|
358
|
+
contextNavigation.getData();
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/**
|
|
366
|
+
* Integrate the behavior into the DOM using the Blacklight#onLoad callback
|
|
367
|
+
*
|
|
368
|
+
*/
|
|
369
|
+
Blacklight.onLoad(function () {
|
|
370
|
+
$('.context-navigator').each(function (i, e) {
|
|
371
|
+
const contextNavigation = new ContextNavigation(e);
|
|
372
|
+
contextNavigation.getData();
|
|
373
|
+
});
|
|
374
|
+
});
|