geoblacklight 5.3.0 → 6.0.0.pre.alpha.2
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/.engine_cart.yml +14 -0
- data/.github/workflows/ruby.yml +25 -25
- data/.gitignore +0 -9
- data/.prettierignore +4 -0
- data/.prettierrc +5 -0
- data/CONTRIBUTING.md +2 -4
- data/Gemfile +4 -2
- data/README.md +4 -4
- data/Rakefile +0 -22
- data/app/assets/stylesheets/geoblacklight/global.css +7 -0
- data/app/assets/stylesheets/geoblacklight/home.css +22 -0
- data/app/assets/stylesheets/geoblacklight/index_maps.css +36 -0
- data/app/assets/stylesheets/geoblacklight/record.css +39 -0
- data/app/assets/stylesheets/geoblacklight/search.css +56 -0
- data/app/assets/stylesheets/geoblacklight/viewers.css +50 -0
- data/app/assets/stylesheets/geoblacklight.css +14 -0
- data/app/components/blacklight/icons/web_services_component.rb +3 -3
- data/app/components/geoblacklight/accordion_component.html.erb +3 -3
- data/app/components/geoblacklight/accordion_component.rb +4 -0
- data/app/components/geoblacklight/arcgis_component.html.erb +1 -1
- data/app/components/geoblacklight/arcgis_component.rb +1 -1
- data/app/components/geoblacklight/attribute_table_component.html.erb +3 -3
- data/app/components/geoblacklight/data_dictionary_download_component.html.erb +1 -1
- data/app/components/geoblacklight/display_note_component.html.erb +1 -1
- data/app/components/geoblacklight/display_note_component.rb +2 -1
- data/app/components/geoblacklight/document/citation_component.html.erb +1 -1
- data/app/components/geoblacklight/document/relations_container_component.html.erb +1 -0
- data/app/components/geoblacklight/document/relations_container_component.rb +12 -0
- data/app/components/geoblacklight/document/sidebar_component.html.erb +3 -4
- data/app/components/geoblacklight/document/sidebar_component.rb +0 -1
- data/app/components/geoblacklight/document_component.html.erb +1 -2
- data/app/components/geoblacklight/download_links_component.rb +1 -1
- data/app/components/geoblacklight/header_component.html.erb +4 -4
- data/app/components/geoblacklight/header_icons_component.rb +4 -2
- data/app/components/geoblacklight/homepage_feature_facet_component.html.erb +3 -7
- data/app/components/geoblacklight/homepage_feature_facet_component.rb +12 -3
- data/app/components/geoblacklight/iiif_drag_drop_component.html.erb +2 -2
- data/app/components/geoblacklight/iiif_drag_drop_component.rb +2 -2
- data/app/components/geoblacklight/index_map_inspect_component.html.erb +3 -3
- data/app/components/geoblacklight/index_map_legend_component.html.erb +7 -7
- data/app/components/geoblacklight/index_map_legend_component.rb +7 -0
- data/app/components/geoblacklight/item_map_viewer_component.rb +8 -4
- data/app/components/geoblacklight/location_leaflet_map_component.rb +28 -15
- data/app/components/geoblacklight/login_link_component.rb +1 -1
- data/app/components/geoblacklight/relations_component.html.erb +2 -2
- data/app/components/geoblacklight/search_result_component.html.erb +28 -26
- data/app/components/geoblacklight/search_result_component.rb +2 -2
- data/app/components/geoblacklight/static_map_component.html.erb +1 -1
- data/app/components/geoblacklight/static_map_component.rb +5 -4
- data/app/components/geoblacklight/viewer_help_text_component.html.erb +1 -1
- data/app/components/geoblacklight/viewer_help_text_component.rb +1 -1
- data/app/components/geoblacklight/web_services_component.html.erb +1 -1
- data/app/components/geoblacklight/web_services_component.rb +1 -1
- data/app/components/geoblacklight/web_services_default_component.html.erb +6 -6
- data/app/components/geoblacklight/web_services_link_component.rb +12 -9
- data/app/components/geoblacklight/web_services_wfs_component.html.erb +4 -4
- data/app/components/geoblacklight/web_services_wms_component.html.erb +4 -4
- data/app/controllers/download_controller.rb +0 -1
- data/app/controllers/relation_controller.rb +1 -1
- data/app/controllers/wms_controller.rb +1 -1
- data/app/helpers/geoblacklight_helper.rb +1 -16
- data/app/javascript/geoblacklight/controllers/clipboard_controller.js +6 -6
- data/app/javascript/geoblacklight/controllers/downloads_controller.js +37 -29
- data/app/javascript/geoblacklight/controllers/leaflet_viewer_controller.js +108 -117
- data/app/javascript/geoblacklight/controllers/oembed_viewer_controller.js +5 -5
- data/app/javascript/geoblacklight/controllers/openlayers_viewer_controller.js +27 -30
- data/app/javascript/geoblacklight/controllers/search_results_controller.js +18 -18
- data/app/javascript/geoblacklight/core.js +33 -36
- data/app/javascript/geoblacklight/index.js +10 -10
- data/app/javascript/geoblacklight/initializers/metadata_download.js +23 -25
- data/app/javascript/geoblacklight/initializers/popovers.js +4 -4
- data/app/javascript/geoblacklight/initializers/tooltips.js +19 -23
- data/app/javascript/geoblacklight/initializers/truncation.js +18 -18
- data/app/javascript/geoblacklight/leaflet/basemaps.js +2 -3
- data/app/javascript/geoblacklight/leaflet/constants.js +7 -7
- data/app/javascript/geoblacklight/leaflet/controls/geosearch.js +80 -74
- data/app/javascript/geoblacklight/leaflet/controls/layer_opacity.js +74 -73
- data/app/javascript/geoblacklight/leaflet/controls/sidebar.js +31 -29
- data/app/javascript/geoblacklight/leaflet/controls/sleep.js +54 -51
- data/app/javascript/geoblacklight/leaflet/inspection.js +77 -68
- data/app/javascript/geoblacklight/leaflet/layer_index_map.js +74 -69
- data/app/javascript/geoblacklight/leaflet/layer_wmts.js +14 -16
- data/app/javascript/geoblacklight/leaflet/layers.js +59 -66
- data/app/javascript/geoblacklight/leaflet/utils.js +37 -43
- data/app/javascript/geoblacklight/openlayers/basemaps.js +35 -27
- data/app/javascript/geoblacklight/openlayers/inspection.js +23 -23
- data/app/javascript/geoblacklight/openlayers/layers.js +11 -11
- data/app/models/concerns/geoblacklight/bbox_filter_query.rb +7 -9
- data/app/models/concerns/geoblacklight/solr_document.rb +16 -39
- data/app/models/concerns/geoblacklight/suppressed_records_search_behavior.rb +3 -3
- data/app/views/catalog/_document_split.html.erb +3 -3
- data/app/views/catalog/_home_text.html.erb +22 -14
- data/app/views/catalog/_metadata.html.erb +1 -1
- data/app/views/catalog/index.html.erb +0 -1
- data/app/views/catalog/metadata/_markup.html.erb +1 -2
- data/app/views/catalog/metadata/_missing.html.erb +2 -2
- data/app/views/catalog/web_services.html.erb +1 -1
- data/app/views/relation/index.html.erb +4 -2
- data/app/views/relation/index.json.jbuilder +1 -1
- data/config/initializers/rails_config.rb +0 -3
- data/config/locales/geoblacklight.en.yml +79 -78
- data/geoblacklight.gemspec +1 -2
- data/lib/generators/geoblacklight/assets_generator.rb +35 -26
- data/lib/generators/geoblacklight/install_generator.rb +6 -11
- data/lib/generators/geoblacklight/templates/assets/customizations.css +6 -0
- data/lib/generators/geoblacklight/templates/catalog_controller.rb +97 -73
- data/lib/generators/geoblacklight/templates/settings.yml +159 -171
- data/lib/geoblacklight/configuration/case_insensitive_settings.rb +59 -0
- data/lib/geoblacklight/configuration/default_settings_builder.rb +18 -0
- data/lib/geoblacklight/configuration/display_note_shown_config.rb +13 -0
- data/lib/geoblacklight/configuration/fields_config.rb +51 -0
- data/lib/geoblacklight/configuration/layer_config.rb +28 -0
- data/lib/geoblacklight/configuration/leaflet_config.rb +69 -0
- data/lib/geoblacklight/configuration/leaflet_layers_config.rb +33 -0
- data/lib/geoblacklight/configuration/leaflet_sleep_config.rb +20 -0
- data/lib/geoblacklight/configuration/relationship_config.rb +15 -0
- data/lib/geoblacklight/configuration/relationships_config.rb +123 -0
- data/lib/geoblacklight/configuration/settings_builder.rb +118 -0
- data/lib/geoblacklight/configuration.rb +153 -0
- data/lib/geoblacklight/deprecation.rb +7 -0
- data/lib/geoblacklight/download.rb +2 -2
- data/lib/geoblacklight/engine.rb +7 -5
- data/lib/geoblacklight/metadata/base.rb +0 -2
- data/lib/geoblacklight/metadata_transformer.rb +0 -2
- data/lib/geoblacklight/references.rb +5 -4
- data/lib/geoblacklight/relation/ancestors.rb +3 -2
- data/lib/geoblacklight/relation/descendants.rb +2 -1
- data/lib/geoblacklight/relation/relation_response.rb +4 -4
- data/lib/geoblacklight/version.rb +1 -1
- data/lib/geoblacklight/wms_layer.rb +3 -3
- data/lib/geoblacklight.rb +7 -1
- data/package.json +10 -31
- data/schema/geoblacklight-schema-aardvark.json +1 -9
- data/schema/readme.md +3 -4
- data/solr/conf/_rest_managed.json +3 -2
- data/solr/conf/schema.xml +1 -1
- data/spec/components/geoblacklight/arcgis_component_spec.rb +6 -6
- data/spec/components/geoblacklight/attribute_table_component_spec.rb +6 -7
- data/spec/components/geoblacklight/citation_component_spec.rb +7 -4
- data/spec/components/geoblacklight/display_note_component_spec.rb +8 -8
- data/spec/components/geoblacklight/document/sidebar_component_spec.rb +48 -0
- data/spec/components/geoblacklight/document_component_spec.rb +13 -13
- data/spec/components/geoblacklight/download_links_component_spec.rb +17 -14
- data/spec/components/geoblacklight/header_icons_component_spec.rb +6 -11
- data/spec/components/geoblacklight/homepage_feature_facet_component_spec.rb +22 -30
- data/spec/components/geoblacklight/iiif_drag_drop_component_spec.rb +3 -3
- data/spec/components/geoblacklight/index_map_legend_component_spec.rb +5 -18
- data/spec/components/geoblacklight/item_map_viewer_component_spec.rb +5 -5
- data/spec/components/geoblacklight/login_link_component_spec.rb +5 -6
- data/spec/components/geoblacklight/search_result_component_spec.rb +2 -6
- data/spec/components/geoblacklight/static_map_component_spec.rb +2 -2
- data/spec/components/geoblacklight/viewer_help_text_component_spec.rb +4 -6
- data/spec/components/geoblacklight/web_services_component_spec.rb +11 -10
- data/spec/controllers/catalog_controller_spec.rb +7 -7
- data/spec/controllers/download_controller_spec.rb +1 -1
- data/spec/controllers/relation_controller_spec.rb +1 -1
- data/spec/controllers/wms_controller_spec.rb +1 -1
- data/spec/features/axe_spec.rb +4 -4
- data/spec/features/bookmarks_spec.rb +1 -1
- data/spec/features/citations_spec.rb +1 -1
- data/spec/features/configurable_basemap_spec.rb +1 -1
- data/spec/features/data_dictionary_download_spec.rb +1 -1
- data/spec/features/download_layer_spec.rb +1 -1
- data/spec/features/empty_search_spec.rb +1 -1
- data/spec/features/esri_viewer_spec.rb +1 -1
- data/spec/features/exports_spec.rb +1 -1
- data/spec/features/full_screen_control_spec.rb +3 -10
- data/spec/features/help_text_spec.rb +1 -1
- data/spec/features/home_page_spec.rb +1 -1
- data/spec/features/index_map_spec.rb +3 -3
- data/spec/features/index_view_spec.rb +7 -7
- data/spec/features/layer_inspection_spec.rb +1 -1
- data/spec/features/layer_opacity_spec.rb +1 -1
- data/spec/features/layer_preview_spec.rb +1 -1
- data/spec/features/layer_with_no_references_spec.rb +1 -1
- data/spec/features/linkified_attribute_table_spec.rb +1 -1
- data/spec/features/metadata_panel_spec.rb +1 -1
- data/spec/features/missing_metadata_spec.rb +1 -1
- data/spec/features/multiple_downloads_spec.rb +1 -1
- data/spec/features/oembed_spec.rb +1 -1
- data/spec/features/relations_spec.rb +2 -2
- data/spec/features/saved_searches_spec.rb +1 -1
- data/spec/features/search_bar_spec.rb +1 -1
- data/spec/features/search_results_complex_geometry_spec.rb +1 -1
- data/spec/features/search_results_icons_spec.rb +3 -4
- data/spec/features/search_results_map_spec.rb +1 -1
- data/spec/features/search_results_overlap_ratio_spec.rb +3 -3
- data/spec/features/search_spec.rb +1 -1
- data/spec/features/show_page_download_spec.rb +1 -1
- data/spec/features/show_page_metadata_spec.rb +2 -2
- data/spec/features/sms_spec.rb +1 -1
- data/spec/features/suppressed_records_spec.rb +1 -1
- data/spec/features/tilejson_spec.rb +1 -1
- data/spec/features/tms_spec.rb +1 -1
- data/spec/features/web_services_modal_spec.rb +1 -1
- data/spec/features/wmts_spec.rb +1 -1
- data/spec/features/xyz_spec.rb +1 -1
- data/spec/fixtures/manifests/tilejson.json +10 -19
- data/spec/fixtures/metadata/fgdc.html +1 -1
- data/spec/fixtures/metadata/iso.html +1 -1
- data/spec/fixtures/solr_documents/README.md +0 -1
- data/spec/fixtures/solr_documents/actual-papermap1.json +9 -28
- data/spec/fixtures/solr_documents/actual-point1.json +12 -39
- data/spec/fixtures/solr_documents/actual-polygon1.json +10 -30
- data/spec/fixtures/solr_documents/actual-raster1.json +14 -46
- data/spec/fixtures/solr_documents/all-relationships.json +12 -36
- data/spec/fixtures/solr_documents/b1g_iiif_manifest.json +33 -62
- data/spec/fixtures/solr_documents/b1g_wabash_child_15.json +13 -40
- data/spec/fixtures/solr_documents/b1g_wabash_child_16.json +13 -40
- data/spec/fixtures/solr_documents/b1g_wabash_child_17.json +13 -40
- data/spec/fixtures/solr_documents/b1g_wabash_child_18.json +13 -40
- data/spec/fixtures/solr_documents/b1g_wabash_parent.json +13 -40
- data/spec/fixtures/solr_documents/baruch_ancestor1.json +13 -40
- data/spec/fixtures/solr_documents/baruch_ancestor2.json +13 -40
- data/spec/fixtures/solr_documents/baruch_documentation_download.json +14 -46
- data/spec/fixtures/solr_documents/bbox-spans-180.json +7 -21
- data/spec/fixtures/solr_documents/complex-geom.json +11 -37
- data/spec/fixtures/solr_documents/cornell_html_metadata.json +12 -37
- data/spec/fixtures/solr_documents/display-note.json +11 -33
- data/spec/fixtures/solr_documents/esri-dynamic-layer-all-layers.json +13 -39
- data/spec/fixtures/solr_documents/esri-dynamic-layer-single-layer.json +13 -40
- data/spec/fixtures/solr_documents/esri-feature-layer.json +13 -39
- data/spec/fixtures/solr_documents/esri-image-map-layer.json +13 -40
- data/spec/fixtures/solr_documents/esri-tiled_map_layer.json +16 -54
- data/spec/fixtures/solr_documents/esri-wms-layer.json +12 -36
- data/spec/fixtures/solr_documents/harvard_raster.json +12 -37
- data/spec/fixtures/solr_documents/iiif-eastern-hemisphere.json +9 -27
- data/spec/fixtures/solr_documents/index-map-polygon-no-downloadurl.json +12 -41
- data/spec/fixtures/solr_documents/index-map-polygon.json +12 -41
- data/spec/fixtures/solr_documents/index-map-stanford.json +14 -45
- data/spec/fixtures/solr_documents/index-map-v1-complex.json +13 -38
- data/spec/fixtures/solr_documents/index_map_point.json +13 -42
- data/spec/fixtures/solr_documents/metadata_no_geom.json +4 -14
- data/spec/fixtures/solr_documents/metadata_no_provider.json +8 -25
- data/spec/fixtures/solr_documents/multiple-downloads.json +6 -18
- data/spec/fixtures/solr_documents/no_locn_geometry.json +4 -12
- data/spec/fixtures/solr_documents/no_spatial.json +4 -12
- data/spec/fixtures/solr_documents/oembed.json +8 -25
- data/spec/fixtures/solr_documents/princeton-child1.json +9 -29
- data/spec/fixtures/solr_documents/princeton-child2.json +9 -29
- data/spec/fixtures/solr_documents/princeton-child3.json +9 -29
- data/spec/fixtures/solr_documents/princeton-child4.json +9 -29
- data/spec/fixtures/solr_documents/princeton-parent.json +10 -33
- data/spec/fixtures/solr_documents/public_cog_princeton.json +9 -27
- data/spec/fixtures/solr_documents/public_iiif_princeton.json +13 -43
- data/spec/fixtures/solr_documents/public_pmtiles_princeton.json +29 -39
- data/spec/fixtures/solr_documents/public_polygon_mit.json +9 -30
- data/spec/fixtures/solr_documents/restricted-line.json +14 -47
- data/spec/fixtures/solr_documents/the-related-record.json +4 -12
- data/spec/fixtures/solr_documents/tilejson.json +23 -46
- data/spec/fixtures/solr_documents/tms.json +7 -21
- data/spec/fixtures/solr_documents/umn_metro_result1.json +13 -41
- data/spec/fixtures/solr_documents/umn_state_result1.json +13 -39
- data/spec/fixtures/solr_documents/umn_state_result2.json +13 -39
- data/spec/fixtures/solr_documents/uva_slug_colon.json +10 -30
- data/spec/fixtures/solr_documents/wmts-multiple.json +23 -39
- data/spec/fixtures/solr_documents/wmts-single-layer.json +23 -46
- data/spec/fixtures/solr_documents/xyz.json +10 -33
- data/spec/helpers/geoblacklight_helper_spec.rb +5 -50
- data/spec/javascripts/geoblacklight_spec.js +10 -10
- data/spec/javascripts/metadata_download_button_spec.js +14 -13
- data/spec/lib/geoblacklight/bounding_box_spec.rb +1 -1
- data/spec/lib/geoblacklight/configuration/default_settings_builder_spec.rb +9 -0
- data/spec/lib/geoblacklight/configuration/layer_config_spec.rb +71 -0
- data/spec/lib/geoblacklight/configuration/leaflet_layers_config_spec.rb +63 -0
- data/spec/lib/geoblacklight/configuration/settings_builder_spec.rb +177 -0
- data/spec/lib/geoblacklight/configuration_spec.rb +48 -0
- data/spec/lib/geoblacklight/download/csv_download_spec.rb +2 -2
- data/spec/lib/geoblacklight/download/geojson_download_spec.rb +2 -2
- data/spec/lib/geoblacklight/download/geotiff_download_spec.rb +5 -2
- data/spec/lib/geoblacklight/download/kmz_download_spec.rb +2 -2
- data/spec/lib/geoblacklight/download/shapefile_download_spec.rb +2 -2
- data/spec/lib/geoblacklight/download_spec.rb +15 -6
- data/spec/lib/geoblacklight/geometry_spec.rb +1 -1
- data/spec/lib/geoblacklight/item_viewer_spec.rb +2 -2
- data/spec/lib/geoblacklight/metadata/base_spec.rb +1 -1
- data/spec/lib/geoblacklight/metadata/html_spec.rb +1 -1
- data/spec/lib/geoblacklight/metadata_spec.rb +1 -1
- data/spec/lib/geoblacklight/metadata_transformer/base_spec.rb +1 -1
- data/spec/lib/geoblacklight/metadata_transformer/fgdc_spec.rb +1 -1
- data/spec/lib/geoblacklight/metadata_transformer/iso19139_spec.rb +1 -1
- data/spec/lib/geoblacklight/metadata_transformer_spec.rb +1 -1
- data/spec/lib/geoblacklight/reference_spec.rb +1 -1
- data/spec/lib/geoblacklight/references_spec.rb +6 -4
- data/spec/lib/geoblacklight/relation/ancestors_spec.rb +10 -4
- data/spec/lib/geoblacklight/relation/descendants_spec.rb +9 -4
- data/spec/lib/geoblacklight/relation/relation_response_spec.rb +16 -19
- data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +1 -1
- data/spec/lib/geoblacklight/wms_layer_spec.rb +1 -1
- data/spec/models/concerns/geoblacklight/bbox_filter_query_spec.rb +20 -11
- data/spec/models/concerns/geoblacklight/solr_document/citation_spec.rb +1 -1
- data/spec/models/concerns/geoblacklight/solr_document/finder_spec.rb +1 -1
- data/spec/models/concerns/geoblacklight/solr_document/inspection_spec.rb +1 -1
- data/spec/models/concerns/geoblacklight/solr_document_spec.rb +4 -39
- data/spec/models/concerns/geoblacklight/suppressed_records_search_behavior_spec.rb +2 -2
- data/spec/routing/catalog_routing_spec.rb +1 -1
- data/spec/spec_helper.rb +26 -10
- data/spec/tasks/geoblacklight_spec.rb +1 -1
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +4 -3
- metadata +44 -187
- data/Procfile.dev +0 -3
- data/app/assets/stylesheets/geoblacklight/geoblacklight.scss +0 -2
- data/app/assets/stylesheets/geoblacklight/modules/_base.scss +0 -31
- data/app/assets/stylesheets/geoblacklight/modules/_blacklight_overrides.scss +0 -40
- data/app/assets/stylesheets/geoblacklight/modules/_styles.scss +0 -9
- data/app/assets/stylesheets/geoblacklight/modules/downloads.scss +0 -62
- data/app/assets/stylesheets/geoblacklight/modules/geosearch.scss +0 -23
- data/app/assets/stylesheets/geoblacklight/modules/home.scss +0 -13
- data/app/assets/stylesheets/geoblacklight/modules/icon-customization.scss +0 -116
- data/app/assets/stylesheets/geoblacklight/modules/index_maps.scss +0 -61
- data/app/assets/stylesheets/geoblacklight/modules/item.scss +0 -78
- data/app/assets/stylesheets/geoblacklight/modules/layer_opacity.scss +0 -87
- data/app/assets/stylesheets/geoblacklight/modules/leaflet.scss +0 -4
- data/app/assets/stylesheets/geoblacklight/modules/metadata.scss +0 -31
- data/app/assets/stylesheets/geoblacklight/modules/metadata_content.scss +0 -43
- data/app/assets/stylesheets/geoblacklight/modules/metadata_markup.scss +0 -9
- data/app/assets/stylesheets/geoblacklight/modules/metadata_missing.scss +0 -7
- data/app/assets/stylesheets/geoblacklight/modules/modal.scss +0 -5
- data/app/assets/stylesheets/geoblacklight/modules/results.scss +0 -60
- data/app/assets/stylesheets/geoblacklight/modules/search_widgets.scss +0 -5
- data/app/assets/stylesheets/geoblacklight/modules/sidebar.scss +0 -42
- data/app/assets/stylesheets/geoblacklight/modules/toolbar.scss +0 -34
- data/app/assets/stylesheets/geoblacklight/modules/web_services.scss +0 -5
- data/app/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component.rb +0 -46
- data/app/components/blacklight/icons/arizona_component.rb +0 -24
- data/app/components/blacklight/icons/baruch_cuny_component.rb +0 -23
- data/app/components/blacklight/icons/bookmark_component.rb +0 -23
- data/app/components/blacklight/icons/circle_info_solid_component.rb +0 -23
- data/app/components/blacklight/icons/columbia_component.rb +0 -23
- data/app/components/blacklight/icons/cornell_component.rb +0 -25
- data/app/components/blacklight/icons/george_mason_component.rb +0 -24
- data/app/components/blacklight/icons/harvard_component.rb +0 -23
- data/app/components/blacklight/icons/indiana_component.rb +0 -23
- data/app/components/blacklight/icons/lewis_clark_component.rb +0 -25
- data/app/components/blacklight/icons/massgis_component.rb +0 -23
- data/app/components/blacklight/icons/michigan_state_university_component.rb +0 -25
- data/app/components/blacklight/icons/mit_component.rb +0 -23
- data/app/components/blacklight/icons/northwestern_university_component.rb +0 -24
- data/app/components/blacklight/icons/nyu_component.rb +0 -26
- data/app/components/blacklight/icons/pennsylvania_state_university_component.rb +0 -25
- data/app/components/blacklight/icons/princeton_component.rb +0 -23
- data/app/components/blacklight/icons/purdue_university_component.rb +0 -25
- data/app/components/blacklight/icons/rutgers_component.rb +0 -25
- data/app/components/blacklight/icons/sms_component.rb +0 -23
- data/app/components/blacklight/icons/stanford_component.rb +0 -23
- data/app/components/blacklight/icons/texas_component.rb +0 -23
- data/app/components/blacklight/icons/the_ohio_state_university_component.rb +0 -26
- data/app/components/blacklight/icons/tufts_component.rb +0 -23
- data/app/components/blacklight/icons/ucla_component.rb +0 -23
- data/app/components/blacklight/icons/university_of_california_berkeley_component.rb +0 -24
- data/app/components/blacklight/icons/university_of_chicago_component.rb +0 -25
- data/app/components/blacklight/icons/university_of_colorado_boulder_component.rb +0 -26
- data/app/components/blacklight/icons/university_of_illinois_urbana_champaign_component.rb +0 -25
- data/app/components/blacklight/icons/university_of_iowa_component.rb +0 -24
- data/app/components/blacklight/icons/university_of_maryland_component.rb +0 -24
- data/app/components/blacklight/icons/university_of_michigan_component.rb +0 -24
- data/app/components/blacklight/icons/university_of_minnesota_component.rb +0 -24
- data/app/components/blacklight/icons/university_of_nebraska_lincoln_component.rb +0 -27
- data/app/components/blacklight/icons/university_of_wisconsin_madison_component.rb +0 -24
- data/app/components/blacklight/icons/uva_component.rb +0 -23
- data/app/components/geoblacklight/icon_facet_item_component.rb +0 -33
- data/app/components/geoblacklight/web_services_link_component.html.erb +0 -3
- data/app/javascript/geoblacklight/initializers/relations.js +0 -40
- data/app/views/catalog/_relations_container.html.erb +0 -1
- data/bin/vite +0 -29
- data/config/initializers/new_gbl_settings_defaults_4.1.yml +0 -104
- data/lib/generators/geoblacklight/assets/importmap_generator.rb +0 -73
- data/lib/generators/geoblacklight/assets/vite_generator.rb +0 -89
- data/lib/generators/geoblacklight/templates/assets/_customizations.scss +0 -23
- data/lib/generators/geoblacklight/templates/assets/application.js +0 -17
- data/lib/generators/geoblacklight/templates/assets/application.scss +0 -9
- data/lib/generators/geoblacklight/templates/assets/geoblacklight.scss +0 -11
- data/lib/generators/geoblacklight/templates/base.html.erb +0 -46
- data/lib/generators/geoblacklight/templates/vite.config.ts +0 -23
- data/lib/generators/geoblacklight/templates/vite.json +0 -16
- data/schema/geoblacklight-schema-1.0.json +0 -214
- data/solr/conf/xslt/example.xsl +0 -132
- data/solr/conf/xslt/example_atom.xsl +0 -67
- data/solr/conf/xslt/example_rss.xsl +0 -66
- data/solr/conf/xslt/luke.xsl +0 -337
- data/spec/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/arizona_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/arrow_circle_down_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/baruch_cuny_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/book_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/bookmark_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/cd_rom_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/child_item_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/circle_info_solid_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/citation_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/collection_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/collections_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/columbia_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/cornell_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/datasets_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/dvd_rom_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/email_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/esri_globe_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/fire_solid_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/george_mason_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/globe_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/harvard_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/home_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/iiif_drag_drop_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/image_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/imagery_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/indiana_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/leaf_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/lewis_clark_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/lightbulb_solid_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/line_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/map_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/map_marker_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/maps_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/massgis_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/metadata_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/michigan_state_university_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/mit_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/mixed_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/multilinestring_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/multipoint_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/multipolygon_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/northwestern_university_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/nyu_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/pagelines_brands_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/paper_map_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/parent_item_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/pennsylvania_state_university_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/point_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/polygon_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/polyline_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/princeton_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/public_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/purdue_university_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/raster_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/restricted_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/rutgers_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/sms_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/stanford_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/table_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/tags_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/texas_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/the_ohio_state_university_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/triangle_exclamation_solid_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/tufts_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/ucla_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_california_berkeley_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_chicago_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_colorado_boulder_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_illinois_urbana_champaign_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_iowa_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_maryland_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_michigan_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_minnesota_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_nebraska_lincoln_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_wisconsin_madison_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/uva_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/web_services_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/websites_component_spec.rb +0 -15
- data/spec/components/geoblacklight/icon_facet_item_component_spec.rb +0 -18
- data/spec/config/initializers/rails_config_spec.rb +0 -16
- data/spec/features/show_page_sidebar_static_map_spec.rb +0 -21
- data/spec/fixtures/solr_documents/public_direct_download.json +0 -62
- data/spec/support/backport_test_helpers.rb +0 -47
- data/spec/support/view_component_capybara_test_helpers.rb +0 -8
- data/vite.config.ts +0 -32
- /data/app/assets/images/{blacklight → geoblacklight}/logo.svg +0 -0
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
* If complex logic is needed for a certain layer type, it is broken out into its own file,
|
|
3
3
|
* such as layer_wmts.js for WMTS layers and layer_index_map.js for index map layers, at the same directory level as this file.
|
|
4
4
|
*/
|
|
5
|
-
import { tileLayer, geoJson, circleMarker } from "leaflet"
|
|
6
|
-
import { dynamicMapLayer, featureLayer, tiledMapLayer } from "esri-leaflet"
|
|
7
|
-
import { parseWmtsCapabilities } from "geoblacklight/leaflet/layer_wmts"
|
|
8
|
-
import { availabilityStyle, updateInformation } from "geoblacklight/leaflet/layer_index_map"
|
|
9
|
-
import { getTileJsonBounds } from "geoblacklight/leaflet/utils"
|
|
5
|
+
import { tileLayer, geoJson, circleMarker } from "leaflet"
|
|
6
|
+
import { dynamicMapLayer, featureLayer, tiledMapLayer } from "esri-leaflet"
|
|
7
|
+
import { parseWmtsCapabilities } from "geoblacklight/leaflet/layer_wmts"
|
|
8
|
+
import { availabilityStyle, updateInformation } from "geoblacklight/leaflet/layer_index_map"
|
|
9
|
+
import { getTileJsonBounds } from "geoblacklight/leaflet/utils"
|
|
10
10
|
|
|
11
11
|
// Create a leaflet tile layer for WMS
|
|
12
12
|
export const wmsLayer = (url, { layerId, opacity, detectRetina }) => {
|
|
@@ -18,50 +18,48 @@ export const wmsLayer = (url, { layerId, opacity, detectRetina }) => {
|
|
|
18
18
|
CRS: "EPSG:3857",
|
|
19
19
|
opacity,
|
|
20
20
|
detectRetina,
|
|
21
|
-
})
|
|
22
|
-
}
|
|
21
|
+
})
|
|
22
|
+
}
|
|
23
23
|
|
|
24
24
|
// Fetch a WMTSCapabilities document and create a leaflet tileLayer using it
|
|
25
25
|
export const wmtsLayer = async (url, { opacity, detectRetina, layerId }) => {
|
|
26
|
-
const response = await fetch(url)
|
|
27
|
-
if (!response.ok)
|
|
28
|
-
throw new Error("Unable to fetch WMTSCapabilities document", url);
|
|
26
|
+
const response = await fetch(url)
|
|
27
|
+
if (!response.ok) throw new Error("Unable to fetch WMTSCapabilities document", url)
|
|
29
28
|
|
|
30
|
-
const wmtsCapabilities = await response.text()
|
|
31
|
-
if (!wmtsCapabilities)
|
|
32
|
-
throw new Error("Unable to parse WMTSCapabilities document", url);
|
|
29
|
+
const wmtsCapabilities = await response.text()
|
|
30
|
+
if (!wmtsCapabilities) throw new Error("Unable to parse WMTSCapabilities document", url)
|
|
33
31
|
|
|
34
|
-
const tileInfo = parseWmtsCapabilities(wmtsCapabilities, layerId)
|
|
35
|
-
const options = tileInfo.bounds ? { bounds: tileInfo.bounds } : {}
|
|
32
|
+
const tileInfo = parseWmtsCapabilities(wmtsCapabilities, layerId)
|
|
33
|
+
const options = tileInfo.bounds ? { bounds: tileInfo.bounds } : {}
|
|
36
34
|
return tileLayer(tileInfo.url, {
|
|
37
35
|
opacity,
|
|
38
36
|
detectRetina,
|
|
39
37
|
...options,
|
|
40
|
-
})
|
|
41
|
-
}
|
|
38
|
+
})
|
|
39
|
+
}
|
|
42
40
|
|
|
43
41
|
// Create an ESRI-leaflet dynamic map layer
|
|
44
42
|
export const esriDynamicMapLayer = (url, { opacity, detectRetina }) => {
|
|
45
43
|
// Remove any trailing slash and get the last segment from the URL
|
|
46
|
-
url = url.replace(/\/$/, "")
|
|
47
|
-
const pathArray = url.split("/")
|
|
48
|
-
const lastSegment = pathArray[pathArray.length - 1]
|
|
44
|
+
url = url.replace(/\/$/, "")
|
|
45
|
+
const pathArray = url.split("/")
|
|
46
|
+
const lastSegment = pathArray[pathArray.length - 1]
|
|
49
47
|
|
|
50
48
|
// If the last segment is an integer it's the layer ID
|
|
51
|
-
let layerId
|
|
49
|
+
let layerId
|
|
52
50
|
if (Number(lastSegment) === parseInt(lastSegment, 10)) {
|
|
53
|
-
layerId = lastSegment
|
|
54
|
-
url = url.slice(0, -(lastSegment.length + 1))
|
|
51
|
+
layerId = lastSegment
|
|
52
|
+
url = url.slice(0, -(lastSegment.length + 1))
|
|
55
53
|
}
|
|
56
54
|
|
|
57
|
-
const options = layerId ? { layers: [layerId] } : {}
|
|
55
|
+
const options = layerId ? { layers: [layerId] } : {}
|
|
58
56
|
return dynamicMapLayer({
|
|
59
57
|
url,
|
|
60
58
|
opacity,
|
|
61
59
|
detectRetina,
|
|
62
60
|
...options,
|
|
63
|
-
})
|
|
64
|
-
}
|
|
61
|
+
})
|
|
62
|
+
}
|
|
65
63
|
|
|
66
64
|
// Create an ESRI-leaflet feature layer
|
|
67
65
|
export const esriFeatureLayer = (url, { opacity, detectRetina }) => {
|
|
@@ -69,85 +67,80 @@ export const esriFeatureLayer = (url, { opacity, detectRetina }) => {
|
|
|
69
67
|
url,
|
|
70
68
|
opacity,
|
|
71
69
|
detectRetina,
|
|
72
|
-
})
|
|
73
|
-
}
|
|
70
|
+
})
|
|
71
|
+
}
|
|
74
72
|
|
|
75
73
|
// Create an ESRI tiled map layer
|
|
76
74
|
export const esriTiledMapLayer = async (url, options) => {
|
|
77
|
-
const response = await fetch(url)
|
|
75
|
+
const response = await fetch(url)
|
|
78
76
|
|
|
79
|
-
if (!response.ok)
|
|
80
|
-
throw new Error("Unable to fetch EsriTiledMapLayer document", url);
|
|
77
|
+
if (!response.ok) throw new Error("Unable to fetch EsriTiledMapLayer document", url)
|
|
81
78
|
|
|
82
|
-
let layerInfo
|
|
79
|
+
let layerInfo
|
|
83
80
|
try {
|
|
84
|
-
layerInfo = await response.json()
|
|
81
|
+
layerInfo = await response.json()
|
|
85
82
|
} catch (error) {
|
|
86
|
-
throw new Error("Unable to parse TiledMapLayer document", response)
|
|
83
|
+
throw new Error("Unable to parse TiledMapLayer document", response)
|
|
87
84
|
}
|
|
88
85
|
|
|
89
86
|
// For an example of tiledMapLayer data see nyu-test-soil-survey-map
|
|
90
87
|
// We aren't sure what the json structure looks like
|
|
91
88
|
// This is not rendering anything (and wasn't before we made changes) and the keys are not even present
|
|
92
|
-
// Check out this json: https://dnrmaps.wi.gov/arcgis2/rest/services/TS_AGOL_STAGING_SERVICES/EN_AGOL_STAGING_SurfaceWater_WTM/MapServer/2?f=pjson -- wrong protocol, now a feature map??
|
|
93
|
-
if (
|
|
94
|
-
|
|
95
|
-
layerInfo.spatialReference.wkid === 102100
|
|
96
|
-
) {
|
|
97
|
-
return tiledMapLayer({ url, ...options });
|
|
89
|
+
// Check out this json: https://dnrmaps.wi.gov/arcgis2/rest/services/TS_AGOL_STAGING_SERVICES/EN_AGOL_STAGING_SurfaceWater_WTM/MapServer/2?f=pjson -- wrong protocol, now a feature map??
|
|
90
|
+
if (layerInfo.singleFusedMapCache === true && layerInfo.spatialReference.wkid === 102100) {
|
|
91
|
+
return tiledMapLayer({ url, ...options })
|
|
98
92
|
}
|
|
99
|
-
}
|
|
93
|
+
}
|
|
100
94
|
|
|
101
|
-
// Create a leaflet tile layer
|
|
95
|
+
// Create a leaflet tile layer
|
|
102
96
|
export const tileJsonLayer = async (url, options) => {
|
|
103
|
-
const response = await fetch(url)
|
|
97
|
+
const response = await fetch(url)
|
|
104
98
|
|
|
105
99
|
if (!response.ok) {
|
|
106
|
-
throw new Error("Unable to fetch TiledJson document", url)
|
|
100
|
+
throw new Error("Unable to fetch TiledJson document", url)
|
|
107
101
|
}
|
|
108
102
|
|
|
109
|
-
const layerInfo = await response.json()
|
|
103
|
+
const layerInfo = await response.json()
|
|
110
104
|
|
|
111
|
-
const bounds = getTileJsonBounds(layerInfo)
|
|
112
|
-
if (bounds) options.bounds = bounds
|
|
113
|
-
const tileUrl = layerInfo.tiles[0]
|
|
114
|
-
return tileLayer(tileUrl, options)
|
|
115
|
-
}
|
|
105
|
+
const bounds = getTileJsonBounds(layerInfo)
|
|
106
|
+
if (bounds) options.bounds = bounds
|
|
107
|
+
const tileUrl = layerInfo.tiles[0]
|
|
108
|
+
return tileLayer(tileUrl, options)
|
|
109
|
+
}
|
|
116
110
|
|
|
117
111
|
// Fetch an indexMapLayer document and create a leaflet geoJSON layer
|
|
118
112
|
export const indexMapLayer = async (url, leafletOptions) => {
|
|
119
|
-
let prevLayer = null
|
|
113
|
+
let prevLayer = null
|
|
120
114
|
|
|
121
|
-
const response = await fetch(url)
|
|
115
|
+
const response = await fetch(url)
|
|
122
116
|
|
|
123
117
|
if (!response.ok) {
|
|
124
|
-
throw new Error("Unable to fetch indexMapLayer document", url)
|
|
118
|
+
throw new Error("Unable to fetch indexMapLayer document", url)
|
|
125
119
|
}
|
|
126
120
|
|
|
127
|
-
const data = await response.json()
|
|
121
|
+
const data = await response.json()
|
|
128
122
|
|
|
129
123
|
// name the const geoJSONLayer; we access it self-referentially within the method
|
|
130
124
|
const geoJSONLayer = geoJson(data, {
|
|
131
|
-
style: (feature) =>
|
|
132
|
-
availabilityStyle(feature.properties.available, leafletOptions),
|
|
125
|
+
style: (feature) => availabilityStyle(feature.properties.available, leafletOptions),
|
|
133
126
|
onEachFeature: (feature, layer) => {
|
|
134
127
|
if (feature.properties.label !== null) {
|
|
135
|
-
layer.bindTooltip(feature.properties.label)
|
|
128
|
+
layer.bindTooltip(feature.properties.label)
|
|
136
129
|
}
|
|
137
130
|
if (feature.properties.available !== null) {
|
|
138
131
|
layer.on("click", (e) => {
|
|
139
|
-
layer.setStyle(leafletOptions.
|
|
132
|
+
layer.setStyle(leafletOptions.layers.index.SELECTED)
|
|
140
133
|
if (prevLayer !== null) {
|
|
141
|
-
leafletOptions.opacity = layer.options.fillOpacity
|
|
142
|
-
geoJSONLayer.resetStyle(prevLayer)
|
|
134
|
+
leafletOptions.opacity = layer.options.fillOpacity
|
|
135
|
+
geoJSONLayer.resetStyle(prevLayer)
|
|
143
136
|
}
|
|
144
|
-
prevLayer = layer
|
|
145
|
-
updateInformation(feature.properties)
|
|
146
|
-
})
|
|
137
|
+
prevLayer = layer
|
|
138
|
+
updateInformation(feature.properties)
|
|
139
|
+
})
|
|
147
140
|
}
|
|
148
141
|
},
|
|
149
142
|
pointToLayer: (feature, latlng) => circleMarker(latlng),
|
|
150
|
-
})
|
|
143
|
+
})
|
|
151
144
|
|
|
152
|
-
return geoJSONLayer
|
|
153
|
-
}
|
|
145
|
+
return geoJSONLayer
|
|
146
|
+
}
|
|
@@ -1,83 +1,77 @@
|
|
|
1
|
-
import { latLngBounds, Util, geoJSON, latLng
|
|
1
|
+
import { latLngBounds, Util, geoJSON, latLng } from "leaflet"
|
|
2
2
|
|
|
3
3
|
export const bboxToBounds = (bbox) => {
|
|
4
|
-
bbox = bbox.split(" ")
|
|
4
|
+
bbox = bbox.split(" ")
|
|
5
5
|
if (bbox.length === 4) {
|
|
6
6
|
return latLngBounds([
|
|
7
7
|
[parseFloat(bbox[1]), parseFloat(bbox[0])],
|
|
8
8
|
[parseFloat(bbox[3]), parseFloat(bbox[2])],
|
|
9
|
-
])
|
|
9
|
+
])
|
|
10
10
|
} else {
|
|
11
|
-
throw new Error("Invalid bounding box string")
|
|
11
|
+
throw new Error("Invalid bounding box string")
|
|
12
12
|
}
|
|
13
|
-
}
|
|
13
|
+
}
|
|
14
14
|
|
|
15
15
|
export const boundsToBbox = (bounds) => {
|
|
16
16
|
let sw = bounds.getSouthWest(),
|
|
17
|
-
ne = bounds.getNorthEast()
|
|
17
|
+
ne = bounds.getNorthEast()
|
|
18
18
|
|
|
19
19
|
if (ne.lng - sw.lng >= 360) {
|
|
20
|
-
sw.lng = -180
|
|
21
|
-
ne.lng = 180
|
|
20
|
+
sw.lng = -180
|
|
21
|
+
ne.lng = 180
|
|
22
22
|
}
|
|
23
|
-
sw = sw.wrap()
|
|
24
|
-
ne = ne.wrap()
|
|
25
|
-
return [
|
|
26
|
-
|
|
27
|
-
Util.formatNum(sw.lat, 6),
|
|
28
|
-
Util.formatNum(ne.lng, 6),
|
|
29
|
-
Util.formatNum(ne.lat, 6),
|
|
30
|
-
];
|
|
31
|
-
};
|
|
23
|
+
sw = sw.wrap()
|
|
24
|
+
ne = ne.wrap()
|
|
25
|
+
return [Util.formatNum(sw.lng, 6), Util.formatNum(sw.lat, 6), Util.formatNum(ne.lng, 6), Util.formatNum(ne.lat, 6)]
|
|
26
|
+
}
|
|
32
27
|
|
|
33
28
|
export const geoJSONToBounds = (geojson) => {
|
|
34
|
-
const layer = geoJSON(geojson)
|
|
35
|
-
return layer.getBounds()
|
|
36
|
-
}
|
|
29
|
+
const layer = geoJSON(geojson)
|
|
30
|
+
return layer.getBounds()
|
|
31
|
+
}
|
|
37
32
|
|
|
38
33
|
export const debounce = (fn, delay) => {
|
|
39
|
-
let timeout = null
|
|
34
|
+
let timeout = null
|
|
40
35
|
return function (...args) {
|
|
41
|
-
clearTimeout(timeout)
|
|
36
|
+
clearTimeout(timeout)
|
|
42
37
|
timeout = setTimeout(() => {
|
|
43
|
-
fn.apply(this, args)
|
|
44
|
-
}, delay)
|
|
45
|
-
}
|
|
46
|
-
}
|
|
38
|
+
fn.apply(this, args)
|
|
39
|
+
}, delay)
|
|
40
|
+
}
|
|
41
|
+
}
|
|
47
42
|
|
|
48
43
|
export const getTileJsonBounds = (doc) => {
|
|
49
|
-
const bounds = doc.bounds
|
|
44
|
+
const bounds = doc.bounds
|
|
50
45
|
if (bounds) {
|
|
51
46
|
const corner1 = latLng(bounds[1], bounds[0]),
|
|
52
|
-
corner2 = latLng(bounds[3], bounds[2])
|
|
53
|
-
return latLngBounds(corner1, corner2)
|
|
47
|
+
corner2 = latLng(bounds[3], bounds[2])
|
|
48
|
+
return latLngBounds(corner1, corner2)
|
|
54
49
|
}
|
|
55
|
-
}
|
|
50
|
+
}
|
|
56
51
|
|
|
57
52
|
export const appendLoadingMessage = () => {
|
|
58
53
|
const spinner = `<tbody class="attribute-table-body"><tr><td colspan="2">
|
|
59
54
|
<span id="attribute-table">
|
|
60
55
|
<div class="spinner-border" role="status"><span class="visually-hidden">Inspecting</span></div>
|
|
61
56
|
</span>
|
|
62
|
-
</td></tr></tbody
|
|
57
|
+
</td></tr></tbody>`
|
|
63
58
|
|
|
64
|
-
document.querySelector(".attribute-table-body").innerHTML = spinner
|
|
65
|
-
}
|
|
59
|
+
document.querySelector(".attribute-table-body").innerHTML = spinner
|
|
60
|
+
}
|
|
66
61
|
|
|
67
62
|
export const appendErrorMessage = () => {
|
|
68
|
-
document.querySelector(
|
|
69
|
-
"
|
|
70
|
-
|
|
71
|
-
<tr><td colspan="2">Could not find that feature</td></tr></tbody>`;
|
|
72
|
-
};
|
|
63
|
+
document.querySelector(".attribute-table-body").innerHTML = `<tbody class="attribute-table-body">
|
|
64
|
+
<tr><td colspan="2">Could not find that feature</td></tr></tbody>`
|
|
65
|
+
}
|
|
73
66
|
|
|
74
67
|
// Looks for strings that could be URLs and wraps them in <a> tags
|
|
75
68
|
export const linkify = (str) => {
|
|
76
|
-
if (!str) return
|
|
77
|
-
const urlRegEx =
|
|
78
|
-
|
|
69
|
+
if (!str) return ""
|
|
70
|
+
const urlRegEx =
|
|
71
|
+
/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+~%\/\.\w\-]*)?\??(?:[\-\+=&;%@\.\w]*)#?(?:[\.\!\/\\\w]*))?)/g
|
|
72
|
+
return str.toString().replace(urlRegEx, "<a href='$1'>$1</a>")
|
|
79
73
|
}
|
|
80
74
|
|
|
81
75
|
export const getLayerOpacity = (layer) => {
|
|
82
|
-
return layer.options.fillOpacity ? layer.options.fillOpacity : layer.options.opacity
|
|
83
|
-
}
|
|
76
|
+
return layer.options.fillOpacity ? layer.options.fillOpacity : layer.options.opacity
|
|
77
|
+
}
|
|
@@ -1,47 +1,55 @@
|
|
|
1
1
|
export default {
|
|
2
2
|
darkMatter: {
|
|
3
|
-
url:
|
|
4
|
-
attributions:
|
|
5
|
-
|
|
3
|
+
url: "https://{a-d}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png",
|
|
4
|
+
attributions:
|
|
5
|
+
'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributionss">Carto</a>',
|
|
6
|
+
maxZoom: 18,
|
|
6
7
|
},
|
|
7
8
|
positron: {
|
|
8
|
-
url:
|
|
9
|
-
attributions:
|
|
10
|
-
|
|
9
|
+
url: "https://{a-d}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",
|
|
10
|
+
attributions:
|
|
11
|
+
'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributionss">Carto</a>',
|
|
12
|
+
maxZoom: 18,
|
|
11
13
|
},
|
|
12
14
|
positronLite: {
|
|
13
|
-
url:
|
|
14
|
-
attributions:
|
|
15
|
-
|
|
15
|
+
url: "https://{a-d}.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}.png",
|
|
16
|
+
attributions:
|
|
17
|
+
'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributionss">Carto</a>',
|
|
18
|
+
maxZoom: 18,
|
|
16
19
|
},
|
|
17
20
|
worldAntique: {
|
|
18
|
-
url:
|
|
19
|
-
attributions:
|
|
20
|
-
|
|
21
|
+
url: "https://cartocdn_{a-d}.global.ssl.fastly.net/base-antique/{z}/{x}/{y}.png",
|
|
22
|
+
attributions:
|
|
23
|
+
'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributionss">Carto</a>',
|
|
24
|
+
maxZoom: 18,
|
|
21
25
|
},
|
|
22
26
|
worldEco: {
|
|
23
|
-
url:
|
|
24
|
-
attributions:
|
|
25
|
-
|
|
27
|
+
url: "https://cartocdn_{a-d}.global.ssl.fastly.net/base-eco/{z}/{x}/{y}.png",
|
|
28
|
+
attributions:
|
|
29
|
+
'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributionss">Carto</a>',
|
|
30
|
+
maxZoom: 18,
|
|
26
31
|
},
|
|
27
32
|
flatBlue: {
|
|
28
|
-
url:
|
|
29
|
-
attributions:
|
|
30
|
-
|
|
33
|
+
url: "https://cartocdn_{a-d}.global.ssl.fastly.net/base-flatblue/{z}/{x}/{y}.png",
|
|
34
|
+
attributions:
|
|
35
|
+
'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributionss">Carto</a>',
|
|
36
|
+
maxZoom: 18,
|
|
31
37
|
},
|
|
32
38
|
midnightCommander: {
|
|
33
|
-
url:
|
|
34
|
-
attributions:
|
|
35
|
-
|
|
39
|
+
url: "https://cartocdn_{a-d}.global.ssl.fastly.net/base-midnight/{z}/{x}/{y}.png",
|
|
40
|
+
attributions:
|
|
41
|
+
'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributionss">Carto</a>',
|
|
42
|
+
maxZoom: 18,
|
|
36
43
|
},
|
|
37
44
|
openstreetmapHot: {
|
|
38
|
-
url:
|
|
39
|
-
attributions:
|
|
40
|
-
|
|
45
|
+
url: "https://{a-c}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png",
|
|
46
|
+
attributions:
|
|
47
|
+
'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>, Tiles courtesy of <a href="http://hot.openstreetmap.org/" target="_blank">Humanitarian OpenStreetMap Team</a>',
|
|
48
|
+
maxZoom: 19,
|
|
41
49
|
},
|
|
42
50
|
openstreetmapStandard: {
|
|
43
|
-
url:
|
|
51
|
+
url: "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
|
44
52
|
attributions: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
|
|
45
|
-
maxZoom: 19
|
|
46
|
-
}
|
|
53
|
+
maxZoom: 19,
|
|
54
|
+
},
|
|
47
55
|
}
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import { linkify } from "geoblacklight/leaflet/utils"
|
|
1
|
+
import { linkify } from "geoblacklight/leaflet/utils"
|
|
2
2
|
|
|
3
3
|
export const pmTilesInspection = (map) => {
|
|
4
4
|
// add crosshair class for map items
|
|
5
|
-
map.on(
|
|
6
|
-
var pixel = map.getEventPixel(e.originalEvent)
|
|
7
|
-
var hit = map.hasFeatureAtPixel(pixel)
|
|
8
|
-
map.getViewport().style.cursor = hit ?
|
|
9
|
-
})
|
|
5
|
+
map.on("pointermove", function (e) {
|
|
6
|
+
var pixel = map.getEventPixel(e.originalEvent)
|
|
7
|
+
var hit = map.hasFeatureAtPixel(pixel)
|
|
8
|
+
map.getViewport().style.cursor = hit ? "crosshair" : ""
|
|
9
|
+
})
|
|
10
10
|
|
|
11
|
-
map.on(
|
|
12
|
-
const spinner = document.createElement("tbody")
|
|
13
|
-
spinner.className = "attribute-table-body"
|
|
11
|
+
map.on("click", (event) => {
|
|
12
|
+
const spinner = document.createElement("tbody")
|
|
13
|
+
spinner.className = "attribute-table-body"
|
|
14
14
|
spinner.innerHTML =
|
|
15
|
-
'<tr><td colspan="2"><div class="spinner-border" role="status"><span class="visually-hidden">Inspecting</span></div></td></tr>'
|
|
16
|
-
document.querySelector(".attribute-table-body").replaceWith(spinner)
|
|
15
|
+
'<tr><td colspan="2"><div class="spinner-border" role="status"><span class="visually-hidden">Inspecting</span></div></td></tr>'
|
|
16
|
+
document.querySelector(".attribute-table-body").replaceWith(spinner)
|
|
17
17
|
|
|
18
|
-
const features = map.getFeaturesAtPixel(event.pixel)
|
|
18
|
+
const features = map.getFeaturesAtPixel(event.pixel)
|
|
19
19
|
if (features.length == 0) {
|
|
20
20
|
document.querySelector(".attribute-table-body").innerHTML =
|
|
21
|
-
'<tr><td colspan="2">Could not find that feature</td></tr>'
|
|
22
|
-
return
|
|
21
|
+
'<tr><td colspan="2">Could not find that feature</td></tr>'
|
|
22
|
+
return
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
const properties = features[0].getProperties()
|
|
26
|
-
populateAttributeTable(properties)
|
|
27
|
-
})
|
|
25
|
+
const properties = features[0].getProperties()
|
|
26
|
+
populateAttributeTable(properties)
|
|
27
|
+
})
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
const populateAttributeTable = (properties) => {
|
|
31
|
-
let html = '<tbody class="attribute-table-body">'
|
|
31
|
+
let html = '<tbody class="attribute-table-body">'
|
|
32
32
|
|
|
33
33
|
// Step through properties and append to table
|
|
34
34
|
Object.keys(properties).forEach((property) => {
|
|
35
35
|
html += `<tr><td>${property}</td>
|
|
36
|
-
<td>${linkify(properties[property])}</td></tr
|
|
37
|
-
})
|
|
38
|
-
html += "</tbody>"
|
|
36
|
+
<td>${linkify(properties[property])}</td></tr>`
|
|
37
|
+
})
|
|
38
|
+
html += "</tbody>"
|
|
39
39
|
|
|
40
|
-
const tableBody = document.querySelector(".attribute-table-body")
|
|
40
|
+
const tableBody = document.querySelector(".attribute-table-body")
|
|
41
41
|
if (tableBody) {
|
|
42
|
-
tableBody.outerHTML = html
|
|
42
|
+
tableBody.outerHTML = html // Replace existing table body with new content
|
|
43
43
|
}
|
|
44
44
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import VectorTile from "ol/layer/VectorTile"
|
|
2
|
-
import { Style, Stroke, Fill, Circle } from "ol/style"
|
|
3
|
-
import { PMTilesVectorSource } from "ol-pmtiles"
|
|
4
|
-
import { useGeographic } from "ol/proj"
|
|
5
|
-
import GeoTIFF from "ol/source/GeoTIFF"
|
|
6
|
-
import WebGLTileLayer from "ol/layer/WebGLTile"
|
|
1
|
+
import VectorTile from "ol/layer/VectorTile"
|
|
2
|
+
import { Style, Stroke, Fill, Circle } from "ol/style"
|
|
3
|
+
import { PMTilesVectorSource } from "ol-pmtiles"
|
|
4
|
+
import { useGeographic } from "ol/proj"
|
|
5
|
+
import GeoTIFF from "ol/source/GeoTIFF"
|
|
6
|
+
import WebGLTileLayer from "ol/layer/WebGLTile"
|
|
7
7
|
|
|
8
8
|
// Create a new PMTiles layer
|
|
9
9
|
export const pmTilesLayer = (url) => {
|
|
10
|
-
useGeographic()
|
|
10
|
+
useGeographic()
|
|
11
11
|
return new VectorTile({
|
|
12
12
|
declutter: true,
|
|
13
13
|
source: new PMTilesVectorSource({ url }),
|
|
@@ -30,8 +30,8 @@ export const pmTilesLayer = (url) => {
|
|
|
30
30
|
}),
|
|
31
31
|
}),
|
|
32
32
|
}),
|
|
33
|
-
})
|
|
34
|
-
}
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
35
|
|
|
36
36
|
// Create a new cloud-optimized GeoTIFF (COG) layer
|
|
37
37
|
export const cogLayer = (url) => {
|
|
@@ -40,5 +40,5 @@ export const cogLayer = (url) => {
|
|
|
40
40
|
sources: [{ url }],
|
|
41
41
|
convertToRGB: true,
|
|
42
42
|
}),
|
|
43
|
-
})
|
|
44
|
-
}
|
|
43
|
+
})
|
|
44
|
+
}
|
|
@@ -2,23 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
module Geoblacklight
|
|
4
4
|
class BboxFilterQuery
|
|
5
|
-
def
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
[bbox_filter_query.intersects_filter, bbox_filter_query.relevancy_boost]
|
|
5
|
+
def call(filter, solr_params)
|
|
6
|
+
@filter = filter
|
|
7
|
+
[intersects_filter, relevancy_boost(solr_params)]
|
|
9
8
|
end
|
|
10
9
|
|
|
11
|
-
def initialize(
|
|
12
|
-
@
|
|
13
|
-
@solr_params = solr_params
|
|
10
|
+
def initialize(blacklight_config:)
|
|
11
|
+
@blacklight_config = blacklight_config
|
|
14
12
|
end
|
|
15
13
|
|
|
16
14
|
def intersects_filter
|
|
17
15
|
"#{@filter.key}:\"Intersects(#{envelope_bounds})\""
|
|
18
16
|
end
|
|
19
17
|
|
|
20
|
-
def relevancy_boost
|
|
21
|
-
boosted_params =
|
|
18
|
+
def relevancy_boost(solr_params)
|
|
19
|
+
boosted_params = solr_params.slice(:bq, :bf)
|
|
22
20
|
|
|
23
21
|
boosted_params[:bq] ||= []
|
|
24
22
|
boosted_params[:bq] << "#{@filter.key}:\"IsWithin(#{envelope_bounds})\"#{boost}"
|
|
@@ -15,20 +15,21 @@ module Geoblacklight
|
|
|
15
15
|
delegate :viewer_endpoint, to: :item_viewer
|
|
16
16
|
|
|
17
17
|
included do
|
|
18
|
-
|
|
19
|
-
attribute :
|
|
20
|
-
attribute :
|
|
21
|
-
attribute :
|
|
22
|
-
attribute :
|
|
23
|
-
attribute :
|
|
24
|
-
attribute :
|
|
25
|
-
attribute :
|
|
26
|
-
attribute :
|
|
27
|
-
attribute :
|
|
28
|
-
attribute :
|
|
29
|
-
attribute :
|
|
30
|
-
attribute :
|
|
31
|
-
attribute :
|
|
18
|
+
field_config = Geoblacklight.configuration.fields
|
|
19
|
+
attribute :display_note, :array, field_config.display_note
|
|
20
|
+
attribute :geom_field, :string, field_config.geometry
|
|
21
|
+
attribute :wxs_identifier, :string, field_config.wxs_identifier
|
|
22
|
+
attribute :file_format, :string, field_config.format
|
|
23
|
+
attribute :rights_field_data, :string, field_config.access_rights
|
|
24
|
+
attribute :provider, :string, field_config.provider
|
|
25
|
+
attribute :resource_type, :array, field_config.resource_type
|
|
26
|
+
attribute :resource_class, :array, field_config.resource_class
|
|
27
|
+
attribute :title, :string, field_config.title
|
|
28
|
+
attribute :creator, :array, field_config.creator
|
|
29
|
+
attribute :publisher, :string, field_config.publisher
|
|
30
|
+
attribute :identifiers, :array, field_config.identifier
|
|
31
|
+
attribute :issued, :string, field_config.date_issued
|
|
32
|
+
attribute :format, :string, field_config.format
|
|
32
33
|
end
|
|
33
34
|
|
|
34
35
|
def available?
|
|
@@ -60,7 +61,7 @@ module Geoblacklight
|
|
|
60
61
|
end
|
|
61
62
|
|
|
62
63
|
def same_institution?
|
|
63
|
-
provider&.casecmp?(
|
|
64
|
+
provider&.casecmp?(Geoblacklight.configuration.institution.downcase)
|
|
64
65
|
end
|
|
65
66
|
|
|
66
67
|
def iiif_download
|
|
@@ -86,29 +87,5 @@ module Geoblacklight
|
|
|
86
87
|
def geometry
|
|
87
88
|
@geometry ||= Geoblacklight::Geometry.new(geom_field)
|
|
88
89
|
end
|
|
89
|
-
|
|
90
|
-
##
|
|
91
|
-
# Provides a convenience method to access a SolrDocument's References
|
|
92
|
-
# endpoint url without having to check and see if it is available
|
|
93
|
-
# :type => a string which if its a Geoblacklight::Constants::URI key
|
|
94
|
-
# will return a coresponding Geoblacklight::Reference
|
|
95
|
-
def checked_endpoint(type)
|
|
96
|
-
type = references.public_send(type)
|
|
97
|
-
type.endpoint if type.present?
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
private
|
|
101
|
-
|
|
102
|
-
def method_missing(method, *args, &block)
|
|
103
|
-
if /.*_url$/.match?(method.to_s)
|
|
104
|
-
checked_endpoint(method.to_s.gsub("_url", ""))
|
|
105
|
-
else
|
|
106
|
-
super
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
def respond_to_missing?(method, *args, &block)
|
|
111
|
-
/.*_url$/.match?(method.to_s) || super
|
|
112
|
-
end
|
|
113
90
|
end
|
|
114
91
|
end
|
|
@@ -16,17 +16,17 @@ module Geoblacklight
|
|
|
16
16
|
# Show suppressed records when searching relationships
|
|
17
17
|
return if blacklight_params.fetch(:f,
|
|
18
18
|
{}).keys.any? do |field|
|
|
19
|
-
|
|
19
|
+
Geoblacklight.configuration.relationships_shown.map do |_key, value|
|
|
20
20
|
value.field
|
|
21
21
|
end.include?(field)
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
# Do not suppress action_documents method calls for individual documents
|
|
25
25
|
# ex. CatalogController#web_services (exportable views)
|
|
26
|
-
return if solr_params[:q]&.include?("{!lucene}#{
|
|
26
|
+
return if solr_params[:q]&.include?("{!lucene}#{Geoblacklight.configuration.fields.id}:")
|
|
27
27
|
|
|
28
28
|
solr_params[:fq] ||= []
|
|
29
|
-
solr_params[:fq] << "-#{
|
|
29
|
+
solr_params[:fq] << "-#{Geoblacklight.configuration.fields.suppressed}: true"
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
end
|