geoblacklight 5.3.0 → 6.0.0.pre.alpha.1
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 +24 -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/sidebar_component.html.erb +1 -1
- data/app/components/geoblacklight/document/sidebar_component.rb +0 -1
- data/app/components/geoblacklight/document_component.html.erb +1 -2
- 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/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.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/wms_controller.rb +1 -1
- data/app/helpers/geoblacklight_helper.rb +0 -15
- 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 +35 -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/relations.js +20 -20
- 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/_relations_container.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 +1 -1
- 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 +97 -113
- 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/leaflet_config.rb +73 -0
- data/lib/geoblacklight/configuration/leaflet_layers_config.rb +21 -0
- data/lib/geoblacklight/configuration/leaflet_sleep_config.rb +20 -0
- data/lib/geoblacklight/configuration/legacy_settings_builder.rb +94 -0
- data/lib/geoblacklight/configuration.rb +148 -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_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 +4 -5
- 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/show_page_sidebar_static_map_spec.rb +1 -1
- 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_spec.rb +13 -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 +12 -15
- 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 +21 -10
- data/spec/tasks/geoblacklight_spec.rb +1 -1
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +4 -3
- metadata +33 -184
- 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/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/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
|