geoblacklight 4.4.2 → 5.0.0.pre.alpha.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/build-demo-app.yml +153 -0
- data/.github/workflows/prune-containers.yml +19 -0
- data/.github/workflows/ruby.yml +54 -52
- data/.gitignore +2 -2
- data/CONTRIBUTING.md +62 -44
- data/Gemfile +3 -28
- data/Rakefile +42 -67
- data/app/assets/images/blacklight/logo.svg +31 -1
- data/app/assets/stylesheets/geoblacklight/geoblacklight.scss +1 -2
- data/app/assets/stylesheets/geoblacklight/modules/_base.scss +1 -1
- data/app/assets/stylesheets/geoblacklight/modules/_blacklight_overrides.scss +24 -26
- data/app/assets/stylesheets/geoblacklight/modules/downloads.scss +13 -0
- data/app/assets/stylesheets/geoblacklight/modules/home.scss +2 -17
- data/app/assets/stylesheets/geoblacklight/modules/icon-customization.scss +48 -23
- data/app/assets/stylesheets/geoblacklight/modules/index_maps.scss +1 -15
- data/app/assets/stylesheets/geoblacklight/modules/item.scss +13 -11
- data/app/assets/stylesheets/geoblacklight/modules/layer_opacity.scss +3 -3
- data/app/assets/stylesheets/geoblacklight/modules/leaflet.scss +4 -0
- data/app/assets/stylesheets/geoblacklight/modules/modal.scss +0 -15
- data/app/assets/stylesheets/geoblacklight/modules/results.scss +10 -19
- data/app/assets/stylesheets/geoblacklight/modules/sidebar.scss +2 -2
- data/app/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component.rb +46 -0
- data/app/components/blacklight/icons/arizona_component.rb +24 -0
- data/app/components/blacklight/icons/arrow_circle_down_component.rb +23 -0
- data/app/components/blacklight/icons/baruch_cuny_component.rb +23 -0
- data/app/components/blacklight/icons/book_component.rb +23 -0
- data/app/components/blacklight/icons/bookmark_component.rb +23 -0
- data/app/components/blacklight/icons/cd_rom_component.rb +23 -0
- data/app/components/blacklight/icons/child_item_component.rb +23 -0
- data/app/components/blacklight/icons/circle_info_solid_component.rb +23 -0
- data/app/components/blacklight/icons/citation_component.rb +23 -0
- data/app/components/blacklight/icons/collection_component.rb +23 -0
- data/app/components/blacklight/icons/collections_component.rb +24 -0
- data/app/components/blacklight/icons/columbia_component.rb +23 -0
- data/app/components/blacklight/icons/cornell_component.rb +25 -0
- data/app/components/blacklight/icons/datasets_component.rb +27 -0
- data/app/components/blacklight/icons/dvd_rom_component.rb +23 -0
- data/app/components/blacklight/icons/email_component.rb +23 -0
- data/app/components/blacklight/icons/esri_globe_component.rb +51 -0
- data/app/components/blacklight/icons/fire_solid_component.rb +23 -0
- data/app/components/blacklight/icons/george_mason_component.rb +24 -0
- data/app/components/blacklight/icons/globe_component.rb +23 -0
- data/app/components/blacklight/icons/harvard_component.rb +23 -0
- data/app/components/blacklight/icons/home_component.rb +23 -0
- data/app/components/blacklight/icons/iiif_drag_drop_component.rb +31 -0
- data/app/components/blacklight/icons/image_component.rb +23 -0
- data/app/components/blacklight/icons/imagery_component.rb +24 -0
- data/app/components/blacklight/icons/indiana_component.rb +23 -0
- data/app/components/blacklight/icons/leaf_component.rb +23 -0
- data/app/components/blacklight/icons/lewis_clark_component.rb +25 -0
- data/app/components/blacklight/icons/lightbulb_solid_component.rb +23 -0
- data/app/components/blacklight/icons/line_component.rb +24 -0
- data/app/components/blacklight/icons/map_component.rb +23 -0
- data/app/components/blacklight/icons/map_marker_component.rb +23 -0
- data/app/components/blacklight/icons/maps_component.rb +24 -0
- data/app/components/blacklight/icons/massgis_component.rb +23 -0
- data/app/components/blacklight/icons/metadata_component.rb +23 -0
- data/app/components/blacklight/icons/michigan_state_university_component.rb +25 -0
- data/app/components/blacklight/icons/mit_component.rb +23 -0
- data/app/components/blacklight/icons/mixed_component.rb +25 -0
- data/app/components/blacklight/icons/multilinestring_component.rb +26 -0
- data/app/components/blacklight/icons/multipoint_component.rb +23 -0
- data/app/components/blacklight/icons/multipolygon_component.rb +26 -0
- data/app/components/blacklight/icons/northwestern_university_component.rb +24 -0
- data/app/components/blacklight/icons/nyu_component.rb +26 -0
- data/app/components/blacklight/icons/pagelines_brands_component.rb +23 -0
- data/app/components/blacklight/icons/paper_map_component.rb +23 -0
- data/app/components/blacklight/icons/parent_item_component.rb +23 -0
- data/app/components/blacklight/icons/pennsylvania_state_university_component.rb +25 -0
- data/app/components/blacklight/icons/point_component.rb +23 -0
- data/app/components/blacklight/icons/polygon_component.rb +24 -0
- data/app/components/blacklight/icons/polyline_component.rb +26 -0
- data/app/components/blacklight/icons/princeton_component.rb +23 -0
- data/app/components/blacklight/icons/public_component.rb +23 -0
- data/app/components/blacklight/icons/purdue_university_component.rb +25 -0
- data/app/components/blacklight/icons/raster_component.rb +23 -0
- data/app/components/blacklight/icons/restricted_component.rb +23 -0
- data/app/components/blacklight/icons/rutgers_component.rb +25 -0
- data/app/components/blacklight/icons/sms_component.rb +23 -0
- data/app/components/blacklight/icons/stanford_component.rb +23 -0
- data/app/components/blacklight/icons/table_component.rb +23 -0
- data/app/components/blacklight/icons/tags_component.rb +23 -0
- data/app/components/blacklight/icons/texas_component.rb +23 -0
- data/app/components/blacklight/icons/the_ohio_state_university_component.rb +26 -0
- data/app/components/blacklight/icons/triangle_exclamation_solid_component.rb +23 -0
- data/app/components/blacklight/icons/tufts_component.rb +23 -0
- data/app/components/blacklight/icons/ucla_component.rb +23 -0
- data/app/components/blacklight/icons/university_of_california_berkeley_component.rb +24 -0
- data/app/components/blacklight/icons/university_of_chicago_component.rb +25 -0
- data/app/components/blacklight/icons/university_of_colorado_boulder_component.rb +26 -0
- data/app/components/blacklight/icons/university_of_illinois_urbana_champaign_component.rb +25 -0
- data/app/components/blacklight/icons/university_of_iowa_component.rb +24 -0
- data/app/components/blacklight/icons/university_of_maryland_component.rb +24 -0
- data/app/components/blacklight/icons/university_of_michigan_component.rb +24 -0
- data/app/components/blacklight/icons/university_of_minnesota_component.rb +24 -0
- data/app/components/blacklight/icons/university_of_nebraska_lincoln_component.rb +27 -0
- data/app/components/blacklight/icons/university_of_wisconsin_madison_component.rb +24 -0
- data/app/components/blacklight/icons/uva_component.rb +23 -0
- data/app/components/blacklight/icons/web_services_component.rb +23 -0
- data/app/components/blacklight/icons/websites_component.rb +24 -0
- data/app/components/geoblacklight/arcgis_component.html.erb +3 -0
- data/app/components/geoblacklight/arcgis_component.rb +25 -0
- data/app/components/geoblacklight/attribute_table_component.html.erb +17 -0
- data/app/components/geoblacklight/attribute_table_component.rb +17 -0
- data/app/components/geoblacklight/data_dictionary_download_component.html.erb +3 -0
- data/app/components/geoblacklight/data_dictionary_download_component.rb +16 -0
- data/app/components/geoblacklight/display_note_component.rb +1 -1
- data/app/components/geoblacklight/document/citation_component.html.erb +1 -0
- data/app/components/geoblacklight/document/citation_component.rb +19 -0
- data/app/components/geoblacklight/document/sidebar_component.html.erb +12 -0
- data/app/components/geoblacklight/document/sidebar_component.rb +8 -0
- data/app/components/geoblacklight/document_component.html.erb +43 -0
- data/app/components/geoblacklight/document_component.rb +6 -0
- data/app/components/geoblacklight/download_links_component.html.erb +31 -0
- data/app/components/geoblacklight/download_links_component.rb +80 -0
- data/app/components/geoblacklight/header_component.html.erb +14 -0
- data/app/components/geoblacklight/header_component.rb +9 -0
- data/app/components/geoblacklight/header_icons_component.html.erb +3 -0
- data/app/components/geoblacklight/header_icons_component.rb +29 -0
- data/app/components/geoblacklight/iiif_drag_drop_component.html.erb +3 -0
- data/app/components/geoblacklight/iiif_drag_drop_component.rb +16 -0
- data/app/components/geoblacklight/index_map_inspect_component.rb +15 -0
- data/app/components/geoblacklight/index_map_legend_component.html.erb +14 -0
- data/app/components/geoblacklight/index_map_legend_component.rb +17 -0
- data/app/components/geoblacklight/item_map_viewer_component.html.erb +1 -0
- data/app/components/geoblacklight/item_map_viewer_component.rb +87 -0
- data/app/components/geoblacklight/location_leaflet_map_component.html.erb +1 -0
- data/app/components/geoblacklight/location_leaflet_map_component.rb +49 -0
- data/app/components/geoblacklight/login_link_component.html.erb +5 -0
- data/app/components/geoblacklight/login_link_component.rb +17 -0
- data/app/components/geoblacklight/relations_component.html.erb +23 -0
- data/app/components/geoblacklight/relations_component.rb +25 -0
- data/app/components/geoblacklight/search_result_component.html.erb +44 -0
- data/app/{presenters/geoblacklight/document_presenter.rb → components/geoblacklight/search_result_component.rb} +9 -6
- data/app/components/geoblacklight/static_map_component.html.erb +9 -0
- data/app/components/geoblacklight/static_map_component.rb +36 -0
- data/app/components/geoblacklight/viewer_help_text_component.html.erb +1 -0
- data/app/components/geoblacklight/viewer_help_text_component.rb +46 -0
- data/app/components/geoblacklight/web_services_component.html.erb +1 -0
- data/app/components/geoblacklight/web_services_component.rb +26 -0
- data/app/{views/catalog/_web_services_default.html.erb → components/geoblacklight/web_services_default_component.html.erb} +3 -5
- data/app/components/geoblacklight/web_services_default_component.rb +11 -0
- data/app/components/geoblacklight/web_services_link_component.html.erb +3 -0
- data/app/components/geoblacklight/web_services_link_component.rb +22 -0
- data/app/{views/catalog/_web_services_wfs.html.erb → components/geoblacklight/web_services_wfs_component.html.erb} +4 -7
- data/app/components/geoblacklight/web_services_wfs_component.rb +12 -0
- data/app/components/geoblacklight/web_services_wms_component.html.erb +10 -0
- data/app/components/geoblacklight/web_services_wms_component.rb +12 -0
- data/app/controllers/download_controller.rb +8 -24
- data/app/helpers/geoblacklight_helper.rb +10 -194
- data/app/javascript/geoblacklight/controllers/clipboard_controller.js +11 -0
- data/app/javascript/geoblacklight/controllers/clover_viewer_controller.js +47 -0
- data/app/javascript/geoblacklight/controllers/downloads_controller.js +56 -0
- data/app/javascript/geoblacklight/controllers/leaflet_viewer_controller.js +217 -0
- data/app/javascript/geoblacklight/controllers/oembed_viewer_controller.js +18 -0
- data/app/javascript/geoblacklight/controllers/openlayers_viewer_controller.js +63 -0
- data/app/javascript/geoblacklight/controllers/search_results_controller.js +50 -0
- data/app/javascript/geoblacklight/core.js +69 -0
- data/app/javascript/geoblacklight/index.js +29 -0
- data/app/javascript/geoblacklight/initializers/metadata_download.js +54 -0
- data/app/javascript/geoblacklight/initializers/popovers.js +11 -0
- data/app/javascript/geoblacklight/initializers/relations.js +40 -0
- data/app/javascript/geoblacklight/initializers/tooltips.js +55 -0
- data/app/javascript/geoblacklight/initializers/truncation.js +45 -0
- data/app/javascript/geoblacklight/leaflet/basemaps.js +74 -0
- data/app/javascript/geoblacklight/leaflet/constants.js +18 -0
- data/app/javascript/geoblacklight/leaflet/controls/geosearch.js +160 -0
- data/app/javascript/geoblacklight/leaflet/controls/layer_opacity.js +120 -0
- data/app/javascript/geoblacklight/leaflet/inspection.js +195 -0
- data/app/javascript/geoblacklight/leaflet/layer_index_map.js +120 -0
- data/app/javascript/geoblacklight/leaflet/layer_wmts.js +59 -0
- data/app/javascript/geoblacklight/leaflet/layers.js +153 -0
- data/app/javascript/geoblacklight/leaflet/utils.js +83 -0
- data/app/javascript/geoblacklight/openlayers/basemaps.js +47 -0
- data/app/javascript/geoblacklight/openlayers/layers.js +44 -0
- data/app/models/concerns/geoblacklight/solr_document/citation.rb +20 -8
- data/app/models/concerns/geoblacklight/solr_document.rb +22 -30
- data/app/presenters/geoblacklight/bbox_item_presenter.rb +1 -1
- data/app/views/catalog/_citation.html.erb +16 -33
- data/app/views/catalog/_document_split.html.erb +18 -3
- data/app/views/catalog/_home_text.html.erb +2 -2
- data/app/views/catalog/_metadata.html.erb +1 -1
- data/app/views/catalog/index.html.erb +8 -4
- data/app/views/catalog/metadata/_markup.html.erb +1 -1
- data/app/views/catalog/metadata.html.erb +14 -13
- data/app/views/catalog/web_services.html.erb +19 -28
- data/app/views/relation/index.html.erb +2 -12
- data/app/views/relation/index.json.jbuilder +1 -1
- data/compose.yml +14 -0
- data/config/importmap.rb +20 -0
- data/config/locales/geoblacklight.en.yml +15 -24
- data/geoblacklight.gemspec +7 -7
- data/lib/generators/geoblacklight/assets/importmap_generator.rb +87 -0
- data/lib/generators/geoblacklight/assets/vite_generator.rb +90 -0
- data/lib/generators/geoblacklight/assets_generator.rb +12 -37
- data/lib/generators/geoblacklight/install_generator.rb +11 -49
- data/lib/generators/geoblacklight/templates/assets/_customizations.scss +13 -19
- data/lib/generators/geoblacklight/templates/assets/application.js +17 -0
- data/lib/generators/geoblacklight/templates/assets/application.scss +9 -4
- data/lib/generators/geoblacklight/templates/assets/geoblacklight.scss +11 -0
- data/lib/generators/geoblacklight/templates/base.html.erb +9 -12
- data/lib/generators/geoblacklight/templates/catalog_controller.rb +7 -15
- data/lib/generators/geoblacklight/templates/demo-app/Dockerfile +31 -0
- data/lib/generators/geoblacklight/templates/demo-app/compose.yml +26 -0
- data/lib/generators/geoblacklight/templates/demo-app/start-server.sh +21 -0
- data/lib/generators/geoblacklight/templates/package.json +7 -1
- data/lib/generators/geoblacklight/templates/settings.yml +45 -40
- data/lib/generators/geoblacklight/templates/vite.config.ts +22 -7
- data/lib/geoblacklight/bounding_box.rb +16 -0
- data/lib/geoblacklight/constants.rb +0 -1
- data/lib/geoblacklight/download/csv_download.rb +22 -0
- data/lib/geoblacklight/download/geojson_download.rb +1 -1
- data/lib/geoblacklight/download/geotiff_download.rb +1 -1
- data/lib/geoblacklight/download/kmz_download.rb +1 -1
- data/lib/geoblacklight/download/shapefile_download.rb +1 -1
- data/lib/geoblacklight/download.rb +1 -1
- data/lib/geoblacklight/engine.rb +15 -6
- data/lib/geoblacklight/item_viewer.rb +1 -1
- data/lib/geoblacklight/metadata/base.rb +2 -1
- data/lib/geoblacklight/references.rb +27 -8
- data/lib/geoblacklight/routes/downloadable.rb +0 -1
- data/lib/geoblacklight/routes.rb +0 -3
- data/lib/geoblacklight/version.rb +1 -1
- data/lib/geoblacklight/wms_layer/feature_info_response.rb +9 -6
- data/lib/geoblacklight.rb +6 -30
- data/lib/tasks/geoblacklight.rake +24 -60
- data/package.json +24 -17
- data/solr/conf/schema.xml +15 -13
- data/solr/conf/solrconfig.xml +6 -4
- data/spec/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/arizona_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/arrow_circle_down_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/baruch_cuny_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/book_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/bookmark_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/cd_rom_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/child_item_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/circle_info_solid_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/citation_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/collection_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/collections_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/columbia_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/cornell_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/datasets_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/dvd_rom_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/email_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/esri_globe_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/fire_solid_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/george_mason_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/globe_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/harvard_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/home_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/iiif_drag_drop_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/image_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/imagery_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/indiana_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/leaf_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/lewis_clark_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/lightbulb_solid_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/line_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/map_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/map_marker_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/maps_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/massgis_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/metadata_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/michigan_state_university_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/mit_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/mixed_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/multilinestring_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/multipoint_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/multipolygon_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/northwestern_university_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/nyu_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/pagelines_brands_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/paper_map_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/parent_item_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/pennsylvania_state_university_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/point_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/polygon_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/polyline_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/princeton_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/public_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/purdue_university_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/raster_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/restricted_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/rutgers_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/sms_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/stanford_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/table_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/tags_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/texas_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/the_ohio_state_university_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/triangle_exclamation_solid_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/tufts_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/ucla_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/university_of_california_berkeley_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/university_of_chicago_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/university_of_colorado_boulder_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/university_of_illinois_urbana_champaign_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/university_of_iowa_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/university_of_maryland_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/university_of_michigan_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/university_of_minnesota_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/university_of_nebraska_lincoln_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/university_of_wisconsin_madison_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/uva_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/web_services_component_spec.rb +15 -0
- data/spec/components/blacklight/icons/websites_component_spec.rb +15 -0
- data/spec/components/geoblacklight/arcgis_component_spec.rb +31 -0
- data/spec/components/geoblacklight/attribute_table_component_spec.rb +37 -0
- data/spec/components/geoblacklight/citation_component_spec.rb +37 -0
- data/spec/components/geoblacklight/document_component_spec.rb +92 -0
- data/spec/components/geoblacklight/download_links_component_spec.rb +102 -0
- data/spec/components/geoblacklight/header_icons_component_spec.rb +56 -0
- data/spec/components/geoblacklight/iiif_drag_drop_component_spec.rb +30 -0
- data/spec/components/geoblacklight/index_map_legend_component_spec.rb +42 -0
- data/spec/components/geoblacklight/item_map_viewer_component_spec.rb +36 -0
- data/spec/components/geoblacklight/login_link_component_spec.rb +33 -0
- data/spec/{lib/geoblacklight/document_presenter_spec.rb → components/geoblacklight/search_result_component_spec.rb} +19 -11
- data/spec/components/geoblacklight/static_map_component_spec.rb +22 -0
- data/spec/components/geoblacklight/viewer_help_text_component_spec.rb +28 -0
- data/spec/components/geoblacklight/web_services_component_spec.rb +45 -0
- data/spec/controllers/download_controller_spec.rb +12 -35
- data/spec/features/axe_spec.rb +66 -0
- data/spec/features/bookmarks_spec.rb +1 -1
- data/spec/features/citations_spec.rb +7 -3
- data/spec/features/download_layer_spec.rb +24 -39
- data/spec/features/esri_viewer_spec.rb +1 -1
- data/spec/features/exports_spec.rb +0 -15
- data/spec/features/{full_screen_controll_spec.rb → full_screen_control_spec.rb} +6 -6
- data/spec/features/home_page_spec.rb +12 -7
- data/spec/features/iiif_viewer_spec.rb +1 -1
- data/spec/features/index_map_spec.rb +16 -9
- data/spec/features/{split_view.html.erb_spec.rb → index_view_spec.rb} +15 -13
- data/spec/features/layer_inspection_spec.rb +2 -2
- data/spec/features/layer_preview_spec.rb +1 -1
- data/spec/features/missing_metadata_spec.rb +5 -5
- data/spec/features/oembed_spec.rb +2 -2
- data/spec/features/saved_searches_spec.rb +4 -1
- data/spec/features/search_results_complex_geometry_spec.rb +2 -2
- data/spec/features/search_results_icons_spec.rb +3 -3
- data/spec/features/search_results_map_spec.rb +4 -36
- data/spec/features/search_results_overlap_ratio_spec.rb +1 -1
- data/spec/features/show_page_download_spec.rb +0 -8
- data/spec/features/tilejson_spec.rb +2 -2
- data/spec/features/web_services_modal_spec.rb +57 -39
- data/spec/features/wmts_spec.rb +4 -4
- data/spec/fixtures/solr_documents/README.md +2 -1
- data/spec/fixtures/solr_documents/complex-geom.json +61 -0
- data/spec/fixtures/solr_documents/esri-tiled_map_layer.json +45 -24
- data/spec/fixtures/solr_documents/harvard_raster.json +1 -1
- data/spec/fixtures/solr_documents/multiple-downloads.json +1 -0
- data/spec/helpers/geoblacklight_helper_spec.rb +8 -173
- data/spec/lib/geoblacklight/download/csv_download_spec.rb +21 -0
- data/spec/lib/geoblacklight/reference_spec.rb +17 -19
- data/spec/lib/geoblacklight/references_spec.rb +31 -17
- data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +8 -6
- data/spec/lib/geoblacklight/wms_layer_spec.rb +14 -0
- data/spec/models/concerns/geoblacklight/solr_document/citation_spec.rb +1 -1
- data/spec/models/concerns/geoblacklight/solr_document_spec.rb +1 -21
- data/spec/spec_helper.rb +2 -28
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +4 -12
- data/template.rb +13 -11
- data/test/leaflet/layers.test.js +17 -0
- data/vite.config.ts +34 -23
- metadata +304 -256
- data/.hound.yml +0 -8
- data/.jshintignore +0 -2
- data/.jshintrc +0 -67
- data/.solr_wrapper +0 -6
- data/app/assets/images/blacklight/american-geographical-society-library-uwm-libraries.svg +0 -26
- data/app/assets/images/blacklight/arizona.svg +0 -4
- data/app/assets/images/blacklight/arrow-circle-down.svg +0 -3
- data/app/assets/images/blacklight/baruch-cuny.svg +0 -3
- data/app/assets/images/blacklight/book.svg +0 -3
- data/app/assets/images/blacklight/bookmark.svg +0 -3
- data/app/assets/images/blacklight/cd-rom.svg +0 -3
- data/app/assets/images/blacklight/chicago.svg +0 -4
- data/app/assets/images/blacklight/child-item.svg +0 -3
- data/app/assets/images/blacklight/circle-info-solid.svg +0 -1
- data/app/assets/images/blacklight/citation.svg +0 -3
- data/app/assets/images/blacklight/collection.svg +0 -3
- data/app/assets/images/blacklight/collections.svg +0 -4
- data/app/assets/images/blacklight/columbia.svg +0 -3
- data/app/assets/images/blacklight/cornell.svg +0 -5
- data/app/assets/images/blacklight/datasets.svg +0 -7
- data/app/assets/images/blacklight/dvd-rom.svg +0 -3
- data/app/assets/images/blacklight/email.svg +0 -3
- data/app/assets/images/blacklight/esri-globe.svg +0 -31
- data/app/assets/images/blacklight/fire-solid.svg +0 -1
- data/app/assets/images/blacklight/geoblacklight-icons.json +0 -3312
- data/app/assets/images/blacklight/george-mason.svg +0 -4
- data/app/assets/images/blacklight/globe.svg +0 -3
- data/app/assets/images/blacklight/harvard.svg +0 -3
- data/app/assets/images/blacklight/home.svg +0 -3
- data/app/assets/images/blacklight/illinois.svg +0 -4
- data/app/assets/images/blacklight/image.svg +0 -3
- data/app/assets/images/blacklight/imagery.svg +0 -4
- data/app/assets/images/blacklight/indiana.svg +0 -3
- data/app/assets/images/blacklight/iowa.svg +0 -3
- data/app/assets/images/blacklight/leaf.svg +0 -3
- data/app/assets/images/blacklight/lewis-clark.svg +0 -5
- data/app/assets/images/blacklight/lightbulb-solid.svg +0 -1
- data/app/assets/images/blacklight/line.svg +0 -4
- data/app/assets/images/blacklight/map-marker.svg +0 -3
- data/app/assets/images/blacklight/map.svg +0 -3
- data/app/assets/images/blacklight/maps.svg +0 -4
- data/app/assets/images/blacklight/maryland.svg +0 -3
- data/app/assets/images/blacklight/massgis.svg +0 -3
- data/app/assets/images/blacklight/metadata.svg +0 -3
- data/app/assets/images/blacklight/michigan-state-university.svg +0 -5
- data/app/assets/images/blacklight/michigan-state.svg +0 -4
- data/app/assets/images/blacklight/michigan.svg +0 -3
- data/app/assets/images/blacklight/minnesota.svg +0 -3
- data/app/assets/images/blacklight/mit.svg +0 -3
- data/app/assets/images/blacklight/mixed.svg +0 -5
- data/app/assets/images/blacklight/multilinestring.svg +0 -6
- data/app/assets/images/blacklight/multipoint.svg +0 -3
- data/app/assets/images/blacklight/multipolygon.svg +0 -6
- data/app/assets/images/blacklight/nebraska.svg +0 -4
- data/app/assets/images/blacklight/northwestern-university.svg +0 -5
- data/app/assets/images/blacklight/nyu.svg +0 -6
- data/app/assets/images/blacklight/ohio-state.svg +0 -5
- data/app/assets/images/blacklight/pagelines-brands.svg +0 -3
- data/app/assets/images/blacklight/paper-map.svg +0 -3
- data/app/assets/images/blacklight/parent-item.svg +0 -3
- data/app/assets/images/blacklight/penn-state.svg +0 -4
- data/app/assets/images/blacklight/pennsylvania-state-university.svg +0 -5
- data/app/assets/images/blacklight/point.svg +0 -3
- data/app/assets/images/blacklight/polygon.svg +0 -4
- data/app/assets/images/blacklight/polyline.svg +0 -6
- data/app/assets/images/blacklight/princeton.svg +0 -3
- data/app/assets/images/blacklight/public.svg +0 -3
- data/app/assets/images/blacklight/purdue-university.svg +0 -5
- data/app/assets/images/blacklight/purdue.svg +0 -4
- data/app/assets/images/blacklight/raster.svg +0 -3
- data/app/assets/images/blacklight/restricted.svg +0 -3
- data/app/assets/images/blacklight/rutgers.svg +0 -5
- data/app/assets/images/blacklight/sms.svg +0 -3
- data/app/assets/images/blacklight/stanford.svg +0 -3
- data/app/assets/images/blacklight/table.svg +0 -3
- data/app/assets/images/blacklight/tags.svg +0 -3
- data/app/assets/images/blacklight/texas.svg +0 -3
- data/app/assets/images/blacklight/the-ohio-state-university.svg +0 -6
- data/app/assets/images/blacklight/triangle-exclamation-solid.svg +0 -1
- data/app/assets/images/blacklight/tufts.svg +0 -3
- data/app/assets/images/blacklight/ucla.svg +0 -3
- data/app/assets/images/blacklight/university-of-california-berkeley.svg +0 -4
- data/app/assets/images/blacklight/university-of-chicago.svg +0 -5
- data/app/assets/images/blacklight/university-of-colorado-boulder.svg +0 -6
- data/app/assets/images/blacklight/university-of-illinois-urbana-champaign.svg +0 -5
- data/app/assets/images/blacklight/university-of-iowa.svg +0 -4
- data/app/assets/images/blacklight/university-of-maryland.svg +0 -4
- data/app/assets/images/blacklight/university-of-michigan.svg +0 -4
- data/app/assets/images/blacklight/university-of-minnesota.svg +0 -4
- data/app/assets/images/blacklight/university-of-nebraska-lincoln.svg +0 -7
- data/app/assets/images/blacklight/university-of-wisconsin-madison.svg +0 -4
- data/app/assets/images/blacklight/uva.svg +0 -3
- data/app/assets/images/blacklight/web_services.svg +0 -3
- data/app/assets/images/blacklight/websites.svg +0 -4
- data/app/assets/images/blacklight/wisconsin.svg +0 -3
- data/app/assets/javascripts/geoblacklight/basemaps.js +0 -85
- data/app/assets/javascripts/geoblacklight/controls/fullscreen.js +0 -8
- data/app/assets/javascripts/geoblacklight/controls/opacity.js +0 -6
- data/app/assets/javascripts/geoblacklight/controls.js +0 -1
- data/app/assets/javascripts/geoblacklight/downloaders/downloader.js +0 -61
- data/app/assets/javascripts/geoblacklight/downloaders/hgl_downloader.js +0 -32
- data/app/assets/javascripts/geoblacklight/downloaders.js +0 -1
- data/app/assets/javascripts/geoblacklight/geoblacklight.js +0 -60
- data/app/assets/javascripts/geoblacklight/modules/bookmarks.js +0 -43
- data/app/assets/javascripts/geoblacklight/modules/download.js +0 -11
- data/app/assets/javascripts/geoblacklight/modules/geosearch.js +0 -133
- data/app/assets/javascripts/geoblacklight/modules/help_text.js +0 -7
- data/app/assets/javascripts/geoblacklight/modules/home.js +0 -16
- data/app/assets/javascripts/geoblacklight/modules/item.js +0 -32
- data/app/assets/javascripts/geoblacklight/modules/layer_opacity.js +0 -68
- data/app/assets/javascripts/geoblacklight/modules/metadata.js +0 -15
- data/app/assets/javascripts/geoblacklight/modules/metadata_download_button.js +0 -58
- data/app/assets/javascripts/geoblacklight/modules/relations.js +0 -14
- data/app/assets/javascripts/geoblacklight/modules/results.js +0 -81
- data/app/assets/javascripts/geoblacklight/modules/svg_tooltips.js +0 -31
- data/app/assets/javascripts/geoblacklight/modules/util.js +0 -48
- data/app/assets/javascripts/geoblacklight/modules.js +0 -1
- data/app/assets/javascripts/geoblacklight/templates/index_map_download.hbs +0 -19
- data/app/assets/javascripts/geoblacklight/templates/index_map_info.hbs +0 -61
- data/app/assets/javascripts/geoblacklight/viewers/cog.js +0 -5
- data/app/assets/javascripts/geoblacklight/viewers/esri/dynamic_map_layer.js +0 -85
- data/app/assets/javascripts/geoblacklight/viewers/esri/feature_layer.js +0 -76
- data/app/assets/javascripts/geoblacklight/viewers/esri/image_map_layer.js +0 -14
- data/app/assets/javascripts/geoblacklight/viewers/esri/tiled_map_layer.js +0 -50
- data/app/assets/javascripts/geoblacklight/viewers/esri.js +0 -78
- data/app/assets/javascripts/geoblacklight/viewers/iiif.js +0 -25
- data/app/assets/javascripts/geoblacklight/viewers/index_map.js +0 -71
- data/app/assets/javascripts/geoblacklight/viewers/map.js +0 -77
- data/app/assets/javascripts/geoblacklight/viewers/oembed.js +0 -13
- data/app/assets/javascripts/geoblacklight/viewers/pmtiles.js +0 -5
- data/app/assets/javascripts/geoblacklight/viewers/tilejson.js +0 -33
- data/app/assets/javascripts/geoblacklight/viewers/tms.js +0 -10
- data/app/assets/javascripts/geoblacklight/viewers/viewer.js +0 -68
- data/app/assets/javascripts/geoblacklight/viewers/wms.js +0 -74
- data/app/assets/javascripts/geoblacklight/viewers/wmts.js +0 -85
- data/app/assets/javascripts/geoblacklight/viewers/xyz.js +0 -10
- data/app/assets/javascripts/geoblacklight/viewers.js +0 -1
- data/app/assets/stylesheets/geoblacklight/modules/mixins.scss +0 -5
- data/app/helpers/arcgis_helper.rb +0 -14
- data/app/helpers/blacklight_helper.rb +0 -11
- data/app/helpers/carto_helper.rb +0 -31
- data/app/helpers/geoblacklight/geoblacklight_helper_behavior.rb +0 -18
- data/app/javascript/clover/clover_initializer.js +0 -29
- data/app/javascript/index.js +0 -7
- data/app/javascript/openlayers/basemaps.js +0 -47
- data/app/javascript/openlayers/ol_initializer.js +0 -106
- data/app/javascript/stylesheets/openlayers.css +0 -1
- data/app/models/concerns/geoblacklight/solr_document/carto.rb +0 -17
- data/app/views/catalog/_arcgis.html.erb +0 -4
- data/app/views/catalog/_carto.html.erb +0 -4
- data/app/views/catalog/_data_dictionary.html.erb +0 -5
- data/app/views/catalog/_downloads_collapse.html.erb +0 -27
- data/app/views/catalog/_header_icons.html.erb +0 -3
- data/app/views/catalog/_index_split_default.html.erb +0 -30
- data/app/views/catalog/_results_pagination.html.erb +0 -12
- data/app/views/catalog/_show_default_attribute_table.html.erb +0 -19
- data/app/views/catalog/_show_default_display_note.html.erb +0 -7
- data/app/views/catalog/_show_default_viewer_container.html.erb +0 -28
- data/app/views/catalog/_show_downloads.html.erb +0 -23
- data/app/views/catalog/_show_header_default.html.erb +0 -4
- data/app/views/catalog/_show_sidebar.html.erb +0 -16
- data/app/views/catalog/_show_sidebar_static_map.html.erb +0 -10
- data/app/views/catalog/_show_web_services.html.erb +0 -11
- data/app/views/catalog/_web_services.html.erb +0 -9
- data/app/views/catalog/_web_services_wms.html.erb +0 -13
- data/app/views/download/hgl.html.erb +0 -27
- data/app/views/relation/_relations.html.erb +0 -15
- data/app/views/shared/_header_navbar.html.erb +0 -46
- data/babel.config.json +0 -4
- data/jest.config.js +0 -25
- data/lib/generators/geoblacklight/templates/assets/_blacklight.scss +0 -1
- data/lib/generators/geoblacklight/templates/assets/_geoblacklight.scss +0 -1
- data/lib/generators/geoblacklight/templates/assets/geoblacklight.js +0 -9
- data/lib/generators/geoblacklight/templates/clover.js +0 -5
- data/lib/generators/geoblacklight/templates/ol.js +0 -6
- data/lib/generators/geoblacklight/templates/package-test.json +0 -10
- data/lib/generators/geoblacklight/templates/settings.gbl_v1.yml +0 -195
- data/lib/geoblacklight/download/hgl_download.rb +0 -20
- data/lib/geoblacklight/view_helper_override.rb +0 -16
- data/setupJest.js +0 -14
- data/spec/helpers/arcgis_helper_spec.rb +0 -16
- data/spec/helpers/carto_helper_spec.rb +0 -13
- data/spec/helpers/geoblacklight/geoblacklight_helper_behavior_spec.rb +0 -27
- data/spec/javascripts/util_spec.js +0 -10
- data/spec/lib/geoblacklight/download/hgl_download_spec.rb +0 -62
- data/spec/lib/geoblacklight/view_helper_override_spec.rb +0 -29
- data/spec/models/concerns/geoblacklight/solr_document/carto_spec.rb +0 -43
- data/spec/test_app_templates/Gemfile.extra +0 -2
- data/spec/views/catalog/_document_split.html.erb_spec.rb +0 -7
- data/spec/views/catalog/_index_split.html.erb_spec.rb +0 -7
- data/spec/views/catalog/_results_pagination.html.erb_spec.rb +0 -11
- data/spec/views/catalog/_show_downloads.html.erb_spec.rb +0 -43
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +0 -38
- data/vendor/assets/images/fullscreen.png +0 -0
- data/vendor/assets/images/fullscreen@2x.png +0 -0
- data/vendor/assets/images/layers-2x.png +0 -0
- data/vendor/assets/images/layers.png +0 -0
- data/vendor/assets/images/marker-icon-2x.png +0 -0
- data/vendor/assets/images/marker-icon.png +0 -0
- data/vendor/assets/images/marker-shadow.png +0 -0
- data/vendor/assets/javascripts/Leaflet.fullscreen.js +0 -152
- data/vendor/assets/javascripts/esri-leaflet.js +0 -12
- data/vendor/assets/javascripts/esri-leaflet.js.map +0 -1
- data/vendor/assets/javascripts/leaflet-iiif.js +0 -323
- data/vendor/assets/javascripts/leaflet-src.js.erb +0 -14126
- data/vendor/assets/javascripts/leaflet-src.js.map +0 -1
- data/vendor/assets/javascripts/native.history.js +0 -1
- data/vendor/assets/stylesheets/leaflet.css +0 -640
- data/vendor/assets/stylesheets/leaflet.fullscreen.css +0 -40
- /data/app/{views/catalog/_show_default_viewer_information.html.erb → components/geoblacklight/index_map_inspect_component.html.erb} +0 -0
@@ -1,70 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module GeoblacklightHelper
|
4
|
-
def document_available?
|
5
|
-
|
6
|
-
end
|
7
|
-
|
8
|
-
def document_downloadable?
|
9
|
-
document_available? && @document.downloadable?
|
4
|
+
def document_available?(document = @document)
|
5
|
+
document.public? || (document.same_institution? && user_signed_in?)
|
10
6
|
end
|
11
7
|
|
12
8
|
def iiif_jpg_url
|
13
9
|
@document.references.iiif.endpoint.sub! "info.json", "full/full/0/default.jpg"
|
14
10
|
end
|
15
11
|
|
16
|
-
def download_link_file(label, id, url)
|
17
|
-
link_to(
|
18
|
-
label,
|
19
|
-
url,
|
20
|
-
"contentUrl" => url,
|
21
|
-
:data => {
|
22
|
-
download: "trigger",
|
23
|
-
download_type: "direct",
|
24
|
-
download_id: id
|
25
|
-
}
|
26
|
-
)
|
27
|
-
end
|
28
|
-
|
29
|
-
def download_link_hgl(text, document)
|
30
|
-
link_to(
|
31
|
-
text,
|
32
|
-
download_hgl_path(id: document),
|
33
|
-
data: {
|
34
|
-
blacklight_modal: "trigger",
|
35
|
-
download: "trigger",
|
36
|
-
download_type: "harvard-hgl",
|
37
|
-
download_id: document.id
|
38
|
-
}
|
39
|
-
)
|
40
|
-
end
|
41
|
-
|
42
|
-
# Generates the link markup for the IIIF JPEG download
|
43
|
-
# @return [String]
|
44
|
-
def download_link_iiif
|
45
|
-
link_to(
|
46
|
-
download_text("JPG"),
|
47
|
-
iiif_jpg_url,
|
48
|
-
"contentUrl" => iiif_jpg_url,
|
49
|
-
:data => {
|
50
|
-
download: "trigger"
|
51
|
-
}
|
52
|
-
)
|
53
|
-
end
|
54
|
-
|
55
|
-
def download_link_generated(download_type, document)
|
56
|
-
link_to(
|
57
|
-
t("geoblacklight.download.export_link", download_format: export_format_label(download_type)),
|
58
|
-
"",
|
59
|
-
data: {
|
60
|
-
download_path: download_path(document.id, type: download_type),
|
61
|
-
download: "trigger",
|
62
|
-
download_type: download_type,
|
63
|
-
download_id: document.id
|
64
|
-
}
|
65
|
-
)
|
66
|
-
end
|
67
|
-
|
68
12
|
##
|
69
13
|
# Blacklight catalog controller helper method to truncate field value to 150 chars
|
70
14
|
# @param [SolrDocument] args
|
@@ -76,29 +20,16 @@ module GeoblacklightHelper
|
|
76
20
|
##
|
77
21
|
# Returns an SVG icon or empty HTML span element
|
78
22
|
# @return [SVG or HTML tag]
|
79
|
-
# standard:disable Style/ArgumentsForwarding
|
80
|
-
# TODO: Remove linter disable after lowest supported Ruby version >= 3.2
|
81
23
|
def geoblacklight_icon(name, **args)
|
82
24
|
icon_name = name ? name.to_s.parameterize : "none"
|
25
|
+
icon_name = Settings.ICON_MAPPING && Settings.ICON_MAPPING[icon_name] || icon_name
|
26
|
+
camel_icon = icon_name.tr("-", "_").camelize.delete(" ")
|
83
27
|
begin
|
84
|
-
|
85
|
-
rescue
|
28
|
+
render "Blacklight::Icons::#{camel_icon}Component".constantize.new(name: icon_name, **args)
|
29
|
+
rescue NameError
|
86
30
|
tag.span class: "icon-missing geoblacklight-none"
|
87
31
|
end
|
88
32
|
end
|
89
|
-
# standard:enable Style/ArgumentsForwarding
|
90
|
-
|
91
|
-
##
|
92
|
-
# Looks up properly formatted names for formats
|
93
|
-
#
|
94
|
-
def proper_case_format(format)
|
95
|
-
t("geoblacklight.formats.#{format.to_s.parameterize(separator: "_")}")
|
96
|
-
end
|
97
|
-
|
98
|
-
# Format labels are customized for exports - look up the appropriate key.
|
99
|
-
def export_format_label(format)
|
100
|
-
t("geoblacklight.download.export_#{format.to_s.parameterize(separator: "_")}_link")
|
101
|
-
end
|
102
33
|
|
103
34
|
##
|
104
35
|
# Looks up formatted names for references
|
@@ -108,52 +39,6 @@ module GeoblacklightHelper
|
|
108
39
|
t "geoblacklight.references.#{reference}"
|
109
40
|
end
|
110
41
|
|
111
|
-
##
|
112
|
-
# Wraps download text with proper_case_format
|
113
|
-
#
|
114
|
-
def download_text(format)
|
115
|
-
download_format = proper_case_format(format)
|
116
|
-
value = t("geoblacklight.download.download_link", download_format: download_format)
|
117
|
-
value.html_safe
|
118
|
-
end
|
119
|
-
|
120
|
-
##
|
121
|
-
# Deteremines if a feature should include help text popover
|
122
|
-
# @return [Boolean]
|
123
|
-
def show_help_text?(feature, key)
|
124
|
-
Settings&.HELP_TEXT&.send(feature)&.include?(key)
|
125
|
-
end
|
126
|
-
|
127
|
-
##
|
128
|
-
# Render help text popover for a given feature and translation key
|
129
|
-
# @return [HTML tag]
|
130
|
-
def render_help_text_entry(feature, key)
|
131
|
-
if I18n.exists?("geoblacklight.help_text.#{feature}.#{key}", locale)
|
132
|
-
help_text = I18n.t("geoblacklight.help_text.#{feature}.#{key}")
|
133
|
-
tag.h3 class: "help-text viewer_protocol h6" do
|
134
|
-
tag.a data: {toggle: "popover", title: help_text[:title], content: help_text[:content]} do
|
135
|
-
help_text[:title]
|
136
|
-
end
|
137
|
-
end
|
138
|
-
else
|
139
|
-
tag.span class: "help-text translation-missing"
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
##
|
144
|
-
# Determines if item view should render the sidebar static map
|
145
|
-
# @return [Boolean]
|
146
|
-
def render_sidebar_map?(document)
|
147
|
-
Settings.SIDEBAR_STATIC_MAP&.any? { |vp| document.viewer_protocol == vp }
|
148
|
-
end
|
149
|
-
|
150
|
-
##
|
151
|
-
# Deteremines if item view should include attribute table
|
152
|
-
# @return [Boolean]
|
153
|
-
def show_attribute_table?
|
154
|
-
document_available? && @document.inspectable?
|
155
|
-
end
|
156
|
-
|
157
42
|
##
|
158
43
|
# Render value for a document's field as a truncate abstract
|
159
44
|
# div. Arguments come from Blacklight::DocumentPresenter's
|
@@ -172,19 +57,6 @@ module GeoblacklightHelper
|
|
172
57
|
blacklight_config.basemap_provider || "positron"
|
173
58
|
end
|
174
59
|
|
175
|
-
##
|
176
|
-
# Renders the partials for a Geoblacklight::Reference in the web services
|
177
|
-
# modal
|
178
|
-
# @param [Geoblacklight::Reference]
|
179
|
-
def render_web_services(reference)
|
180
|
-
render(
|
181
|
-
partial: "web_services_#{reference.type}",
|
182
|
-
locals: {reference: reference}
|
183
|
-
)
|
184
|
-
rescue ActionView::MissingTemplate
|
185
|
-
render partial: "web_services_default", locals: {reference: reference}
|
186
|
-
end
|
187
|
-
|
188
60
|
##
|
189
61
|
# Returns a hash of the leaflet plugin settings to pass to the viewer.
|
190
62
|
# @return[Hash]
|
@@ -229,14 +101,12 @@ module GeoblacklightHelper
|
|
229
101
|
|
230
102
|
## Returns the icon used based off a Settings strategy
|
231
103
|
def relations_icon(document, icon)
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
icon_options = {classes: "svg_tooltip"} if Settings.USE_GEOM_FOR_RELATIONS_ICON
|
236
|
-
geoblacklight_icon(icon_name, **icon_options)
|
104
|
+
icon_html = render Geoblacklight::HeaderIconsComponent.new(document: document, fields: [Settings.FIELDS.GEOM_TYPE]) if Settings.USE_GEOM_FOR_RELATIONS_ICON
|
105
|
+
return icon_html unless !Settings.USE_GEOM_FOR_RELATIONS_ICON || icon_html.include?("icon-missing")
|
106
|
+
geoblacklight_icon(icon, **{})
|
237
107
|
end
|
238
108
|
|
239
|
-
## Returns the data-
|
109
|
+
## Returns the data-page attribute value used as the JS map selector
|
240
110
|
def results_js_map_selector(controller_name)
|
241
111
|
case controller_name
|
242
112
|
when "bookmarks"
|
@@ -245,58 +115,4 @@ module GeoblacklightHelper
|
|
245
115
|
"index"
|
246
116
|
end
|
247
117
|
end
|
248
|
-
|
249
|
-
def viewer_container
|
250
|
-
if openlayers_container?
|
251
|
-
ol_viewer
|
252
|
-
elsif iiif_manifest_container?
|
253
|
-
iiif_manifest_viewer
|
254
|
-
else
|
255
|
-
leaflet_viewer
|
256
|
-
end
|
257
|
-
end
|
258
|
-
|
259
|
-
def openlayers_container?
|
260
|
-
return false unless @document
|
261
|
-
@document.item_viewer.pmtiles || @document.item_viewer.cog
|
262
|
-
end
|
263
|
-
|
264
|
-
def leaflet_viewer
|
265
|
-
tag.div(nil,
|
266
|
-
id: "map",
|
267
|
-
data: {
|
268
|
-
:map => "item", :protocol => @document.viewer_protocol.camelize,
|
269
|
-
:url => @document.viewer_endpoint,
|
270
|
-
"layer-id" => @document.wxs_identifier,
|
271
|
-
"map-geom" => @document.geometry.geojson,
|
272
|
-
"catalog-path" => search_catalog_path,
|
273
|
-
:available => document_available?,
|
274
|
-
:basemap => geoblacklight_basemap,
|
275
|
-
:leaflet_options => leaflet_options
|
276
|
-
})
|
277
|
-
end
|
278
|
-
|
279
|
-
def ol_viewer
|
280
|
-
tag.div(nil,
|
281
|
-
id: "ol-map",
|
282
|
-
data: {
|
283
|
-
:map => "item", :protocol => @document.viewer_protocol.camelize,
|
284
|
-
:url => @document.viewer_endpoint,
|
285
|
-
"layer-id" => @document.wxs_identifier,
|
286
|
-
"map-geom" => @document.geometry.geojson,
|
287
|
-
"catalog-path" => search_catalog_path,
|
288
|
-
:available => document_available?,
|
289
|
-
:basemap => geoblacklight_basemap,
|
290
|
-
:leaflet_options => leaflet_options
|
291
|
-
})
|
292
|
-
end
|
293
|
-
|
294
|
-
def iiif_manifest_container?
|
295
|
-
return false unless @document
|
296
|
-
@document&.item_viewer&.viewer_preference&.key?(:iiif_manifest)
|
297
|
-
end
|
298
|
-
|
299
|
-
def iiif_manifest_viewer
|
300
|
-
tag.div(nil, id: "clover-viewer", iiif_content: @document.viewer_endpoint)
|
301
|
-
end
|
302
118
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { Controller } from "@hotwired/stimulus"
|
2
|
+
|
3
|
+
export default class extends Controller {
|
4
|
+
static targets = ["alert"];
|
5
|
+
|
6
|
+
async copyToClipboard(event) {
|
7
|
+
let text = event.params.value;
|
8
|
+
await navigator.clipboard.writeText(text)
|
9
|
+
this.alertTarget.classList.remove('d-none');
|
10
|
+
}
|
11
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
import { createElement } from "react";
|
2
|
+
import { createRoot } from "react-dom/client";
|
3
|
+
import Viewer from "@samvera/clover-iiif/viewer";
|
4
|
+
import Image from "@samvera/clover-iiif/image";
|
5
|
+
import { Controller } from "@hotwired/stimulus";
|
6
|
+
|
7
|
+
const viewerOptions = {
|
8
|
+
showTitle: false,
|
9
|
+
showIIIFBadge: false,
|
10
|
+
informationPanel: {
|
11
|
+
renderToggle: false,
|
12
|
+
renderAbout: false,
|
13
|
+
},
|
14
|
+
};
|
15
|
+
|
16
|
+
export default class CloverViewerController extends Controller {
|
17
|
+
static values = {
|
18
|
+
url: String,
|
19
|
+
protocol: String,
|
20
|
+
};
|
21
|
+
|
22
|
+
connect() {
|
23
|
+
const root = createRoot(this.element);
|
24
|
+
root.render(this.getViewer(this.protocolValue, this.urlValue));
|
25
|
+
}
|
26
|
+
|
27
|
+
getViewer(protocol, url) {
|
28
|
+
if (protocol == "Iiif") {
|
29
|
+
// Create a wrapper div with inline style, as recommended in the docs:
|
30
|
+
// https://samvera-labs.github.io/clover-iiif/docs/image#react
|
31
|
+
return createElement(
|
32
|
+
"div",
|
33
|
+
{ style: { height: 400 } },
|
34
|
+
createElement(Image, {
|
35
|
+
src: url.replace(/\/info\.json$/, ""),
|
36
|
+
isTiledImage: true,
|
37
|
+
})
|
38
|
+
);
|
39
|
+
}
|
40
|
+
if (protocol == "IiifManifest")
|
41
|
+
return createElement(Viewer, {
|
42
|
+
iiifContent: url,
|
43
|
+
options: viewerOptions,
|
44
|
+
});
|
45
|
+
console.error(`Unsupported protocol name: "${protocol}"`);
|
46
|
+
}
|
47
|
+
}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import { Controller } from "@hotwired/stimulus"
|
2
|
+
|
3
|
+
export default class extends Controller {
|
4
|
+
download(ev) {
|
5
|
+
ev.preventDefault();
|
6
|
+
if (this.downloading) {
|
7
|
+
return;
|
8
|
+
}
|
9
|
+
this.downloading = true;
|
10
|
+
ev.target.classList.add('download-in-progress');
|
11
|
+
const url = ev.target.dataset.downloadPath;
|
12
|
+
ev.target.removeAttribute('href');
|
13
|
+
ev.target.innerHTML = '<div class="spinner-border spinner-border-sm float-end"></div> Preparing download...';
|
14
|
+
|
15
|
+
fetch(url)
|
16
|
+
.then((response) => {
|
17
|
+
if (!response.ok) {
|
18
|
+
return response.json().then((errorData) => {
|
19
|
+
const exception = new Error("Network response was not ok");
|
20
|
+
exception.data = errorData; // Attach the parsed JSON data to the error object
|
21
|
+
throw exception;
|
22
|
+
});
|
23
|
+
}
|
24
|
+
return response.json();
|
25
|
+
})
|
26
|
+
.then((data) => this.complete(data, ev.target))
|
27
|
+
.catch((error) => this.error(error, ev.target));
|
28
|
+
}
|
29
|
+
|
30
|
+
complete(data, target) {
|
31
|
+
this.downloading = false;
|
32
|
+
target.classList.remove('download-in-progress');
|
33
|
+
target.classList.add('download-complete');
|
34
|
+
target.innerHTML = `Download ready (${target.dataset.downloadType})`;
|
35
|
+
target.href = data[1];
|
36
|
+
this.renderMessage(data[0]);
|
37
|
+
//target.click();
|
38
|
+
}
|
39
|
+
|
40
|
+
error(exception, target) {
|
41
|
+
this.downloading = false;
|
42
|
+
target.classList.remove('download-in-progress');
|
43
|
+
target.classList.add('download-complete');
|
44
|
+
target.innerHTML = `Download failed (${target.dataset.downloadType})`;
|
45
|
+
this.renderMessage(exception.data[0]);
|
46
|
+
}
|
47
|
+
|
48
|
+
renderMessage(message) {
|
49
|
+
Object.entries(message).forEach(([idx, msg]) => {
|
50
|
+
const flash = document.createElement("div");
|
51
|
+
flash.className = `alert alert-${msg[0]}`;
|
52
|
+
flash.innerHTML = `<button type="button" class="close" data-bs-dismiss="alert" aria-hidden="true">×</button>${msg[1]}`;
|
53
|
+
document.querySelector("div.flash_messages").appendChild(flash);
|
54
|
+
});
|
55
|
+
}
|
56
|
+
}
|
@@ -0,0 +1,217 @@
|
|
1
|
+
import { Icon, Control } from "leaflet";
|
2
|
+
import "leaflet-fullscreen";
|
3
|
+
import { layerGroup, polygon, map, tileLayer } from "leaflet";
|
4
|
+
import { imageMapLayer } from "esri-leaflet";
|
5
|
+
import { Controller } from "@hotwired/stimulus";
|
6
|
+
import basemaps from "geoblacklight/leaflet/basemaps";
|
7
|
+
import LayerOpacityControl from "geoblacklight/leaflet/controls/layer_opacity";
|
8
|
+
import GeoSearchControl from "geoblacklight/leaflet/controls/geosearch";
|
9
|
+
import { wmsInspection,
|
10
|
+
tiledMapLayerInspection,
|
11
|
+
featureLayerInspection,
|
12
|
+
dynamicMapLayerInspection
|
13
|
+
} from "geoblacklight/leaflet/inspection";
|
14
|
+
import {
|
15
|
+
esriDynamicMapLayer,
|
16
|
+
esriFeatureLayer,
|
17
|
+
esriTiledMapLayer,
|
18
|
+
tileJsonLayer,
|
19
|
+
wmsLayer,
|
20
|
+
wmtsLayer,
|
21
|
+
indexMapLayer,
|
22
|
+
} from "geoblacklight/leaflet/layers";
|
23
|
+
import { geoJSONToBounds } from "geoblacklight/leaflet/utils";
|
24
|
+
import { DEFAULT_BOUNDS, DEFAULT_OPACITY, DEFAULT_GEOM_OVERLAY_OPTIONS } from "geoblacklight/leaflet/constants";
|
25
|
+
|
26
|
+
export default class LeafletViewerController extends Controller {
|
27
|
+
static values = {
|
28
|
+
url: String,
|
29
|
+
catalogBaseUrl: String,
|
30
|
+
protocol: String,
|
31
|
+
available: Boolean,
|
32
|
+
options: Object,
|
33
|
+
basemap: String,
|
34
|
+
mapGeom: Object,
|
35
|
+
page: String,
|
36
|
+
layerId: String,
|
37
|
+
drawInitialBounds: Boolean,
|
38
|
+
};
|
39
|
+
|
40
|
+
connect() {
|
41
|
+
// Sets leaflet icon paths to ex. /assets/marker-icon-2x-rails-fingerprint
|
42
|
+
// TODO: figure out why vite @leaftlet_images alias is not working.
|
43
|
+
Icon.Default.imagePath = "https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/images/";
|
44
|
+
|
45
|
+
// Set up layers
|
46
|
+
this.basemap = this.getBasemap();
|
47
|
+
this.overlay = layerGroup();
|
48
|
+
|
49
|
+
// Calculate bounds
|
50
|
+
this.bounds = DEFAULT_BOUNDS;
|
51
|
+
if (this.hasMapGeomValue) this.bounds = geoJSONToBounds(this.mapGeomValue);
|
52
|
+
|
53
|
+
// Load the map
|
54
|
+
this.loadMap();
|
55
|
+
}
|
56
|
+
|
57
|
+
get config() {
|
58
|
+
|
59
|
+
if (!this.optionsValue.VIEWERS || !this.hasProtocolValue) return {};
|
60
|
+
return this.optionsValue.VIEWERS[this.protocolValue.toUpperCase()];
|
61
|
+
}
|
62
|
+
|
63
|
+
// Create the map, add layers, fit the bounds
|
64
|
+
async loadMap() {
|
65
|
+
if (this.map) return;
|
66
|
+
|
67
|
+
// Set up the map and fit to bounds
|
68
|
+
this.map = map(this.element);
|
69
|
+
this.map.addLayer(this.basemap);
|
70
|
+
this.map.addLayer(this.overlay);
|
71
|
+
this.fitBounds(this.bounds);
|
72
|
+
this.map.options.selected_color = this.optionsValue.SELECTED_COLOR || 'blue';
|
73
|
+
|
74
|
+
// If the data is available, add the preview and set up inspection
|
75
|
+
// Otherwise just draw the bounds, if configured to do so
|
76
|
+
if (this.availableValue && this.protocolValue) {
|
77
|
+
await this.addPreviewOverlay();
|
78
|
+
this.addInspection();
|
79
|
+
} else if (this.drawInitialBoundsValue && this.bounds) {
|
80
|
+
this.addBoundsOverlay(this.bounds);
|
81
|
+
}
|
82
|
+
|
83
|
+
// Add configured controls
|
84
|
+
this.addControls();
|
85
|
+
|
86
|
+
if (this.protocolValue == "IndexMap"){
|
87
|
+
this.fitBounds(this.previewOverlay.getBounds())
|
88
|
+
}
|
89
|
+
|
90
|
+
// Enable geosearch handler, if available
|
91
|
+
if (this.map.geosearch) this.map.geosearch.enable();
|
92
|
+
|
93
|
+
// Emit an event for other controllers to listen to
|
94
|
+
this.dispatch("loaded");
|
95
|
+
}
|
96
|
+
|
97
|
+
// Set the bounds of the map to an L.LatLngBounds object
|
98
|
+
fitBounds(bounds) {
|
99
|
+
// prevent map from moving when setting bounds, if relevant
|
100
|
+
if (this.map.geosearch) this.map.geosearch.disable();
|
101
|
+
this.map.fitBounds(bounds, { animate: false, noMoveStart: true });
|
102
|
+
this.bounds = bounds;
|
103
|
+
if (this.map.geosearch) this.map.geosearch.enable();
|
104
|
+
this.element.dataset.bounds = this.bounds.toBBoxString();
|
105
|
+
}
|
106
|
+
|
107
|
+
// Select the configured basemap to use
|
108
|
+
getBasemap() {
|
109
|
+
const basemapName = this.basemapValue || "positron";
|
110
|
+
return tileLayer(basemaps[basemapName].url, {
|
111
|
+
...basemaps[basemapName],
|
112
|
+
detectRetina: this.optionsValue.LAYERS.DETECT_RETINA || false,
|
113
|
+
});
|
114
|
+
}
|
115
|
+
|
116
|
+
// Add the configured controls to the map
|
117
|
+
addControls() {
|
118
|
+
// Add any top-level controls (e.g. geosearch) first
|
119
|
+
const globalControls = this.optionsValue.CONTROLS || {};
|
120
|
+
Object.entries(globalControls).forEach(([controlName, controlOptions]) => {
|
121
|
+
const control = this.getControl(controlName, controlOptions);
|
122
|
+
if (control) this.addControl(control);
|
123
|
+
});
|
124
|
+
|
125
|
+
// Add opacity and fullscreen controls for all layers
|
126
|
+
if (this.hasProtocolValue) {
|
127
|
+
if (this.availableValue){
|
128
|
+
const opacityControl = this.getControl("Opacity");
|
129
|
+
this.addControl(opacityControl);
|
130
|
+
}
|
131
|
+
const fullscreenControl = this.getControl("Fullscreen");
|
132
|
+
this.addControl(fullscreenControl);
|
133
|
+
}
|
134
|
+
}
|
135
|
+
|
136
|
+
// Add a pre-configured L.Control instance to the map
|
137
|
+
addControl(control) {
|
138
|
+
this.map.addControl(control);
|
139
|
+
}
|
140
|
+
|
141
|
+
// Look up the control name and return the corresponding L.Control instance
|
142
|
+
getControl(controlName, controlOptions) {
|
143
|
+
if (controlName == "Opacity")
|
144
|
+
return new LayerOpacityControl(this.previewOverlay);
|
145
|
+
if (controlName == "Fullscreen")
|
146
|
+
return new Control.Fullscreen({ position: "topright", ...controlOptions });
|
147
|
+
if (controlName == "Geosearch")
|
148
|
+
return new GeoSearchControl({ baseUrl: this.catalogBaseUrlValue, ...controlOptions });
|
149
|
+
console.error(`Unsupported control name: "${controlName}"`);
|
150
|
+
}
|
151
|
+
|
152
|
+
// Add the bounding box to the map
|
153
|
+
addBoundsOverlay(bounds) {
|
154
|
+
const hasMapGeomValue = Object.keys(this.mapGeomValue).length > 0 && !this.map.geosearch;
|
155
|
+
var defaultOptions = hasMapGeomValue ? DEFAULT_GEOM_OVERLAY_OPTIONS : {};
|
156
|
+
const overlayOptions = this.optionsValue.BOUNDSOVERLAY || {};
|
157
|
+
const options = {...defaultOptions, ...overlayOptions[this.pageValue]}
|
158
|
+
const boundsOverlay = polygon([
|
159
|
+
bounds.getSouthWest(),
|
160
|
+
bounds.getSouthEast(),
|
161
|
+
bounds.getNorthEast(),
|
162
|
+
bounds.getNorthWest(),
|
163
|
+
], options
|
164
|
+
);
|
165
|
+
|
166
|
+
// Render geometry layer if available
|
167
|
+
if (hasMapGeomValue) this.map.addLayer(L.geoJSON(this.mapGeomValue, overlayOptions[this.pageValue]));
|
168
|
+
|
169
|
+
// Render the bounds overlay
|
170
|
+
this.boundsOverlay = boundsOverlay;
|
171
|
+
this.overlay.addLayer(boundsOverlay);
|
172
|
+
}
|
173
|
+
|
174
|
+
// Remove the bounding box overlay
|
175
|
+
removeBoundsOverlay() {
|
176
|
+
if (this.boundsOverlay) this.overlay.removeLayer(this.boundsOverlay);
|
177
|
+
}
|
178
|
+
|
179
|
+
addInspection() {
|
180
|
+
if (this.protocolValue == "Wms") return wmsInspection(this.map, this.urlValue, this.layerIdValue, this.previewOverlay);
|
181
|
+
if (this.protocolValue == "FeatureLayer") return featureLayerInspection(this.map, this.previewOverlay);
|
182
|
+
if (this.protocolValue == "DynamicMapLayer") return dynamicMapLayerInspection(this.map, this.previewOverlay, this.layerIdValue)
|
183
|
+
// TODO: TiledMapLayer is converted but seems busted -- see layers.js. Don't know what to test it with, need a fixture.
|
184
|
+
// if (this.protocolValue == "TiledMapLayer") return tiledMapLayerInspection(this.map, this.previewOverlay);
|
185
|
+
}
|
186
|
+
|
187
|
+
// Add the actual data to the map as a layer
|
188
|
+
async addPreviewOverlay() {
|
189
|
+
this.previewOverlay = await this.getPreviewOverlay(
|
190
|
+
this.protocolValue,
|
191
|
+
this.urlValue,
|
192
|
+
{
|
193
|
+
layerId: this.layerIdValue,
|
194
|
+
opacity: this.optionsValue.opacity || DEFAULT_OPACITY,
|
195
|
+
detectRetina: this.optionsValue.LAYERS.DETECT_RETINA || false,
|
196
|
+
}
|
197
|
+
);
|
198
|
+
if (this.previewOverlay) this.overlay.addLayer(this.previewOverlay);
|
199
|
+
}
|
200
|
+
|
201
|
+
// Generate a layer based on the protocol
|
202
|
+
async getPreviewOverlay(protocol, url, options) {
|
203
|
+
if (protocol == "DynamicMapLayer") return esriDynamicMapLayer(url, options);
|
204
|
+
if (protocol == "FeatureLayer") return esriFeatureLayer(url, options);
|
205
|
+
// imageMapLayer is a built-in method from esri-leaflet
|
206
|
+
if (protocol == "ImageMapLayer") return imageMapLayer({url, ...options});
|
207
|
+
if (protocol == "IndexMap") return await indexMapLayer(url, this.optionsValue);
|
208
|
+
if (protocol == "TiledMapLayer") return await esriTiledMapLayer(url, options);
|
209
|
+
if (protocol == "Tilejson") return await tileJsonLayer(url, options);
|
210
|
+
// tileLayer is a built-in method from leaflet
|
211
|
+
if (protocol == "Tms") return tileLayer(url, { tms: true, ...options });
|
212
|
+
if (protocol == "Wms") return wmsLayer(url, options);
|
213
|
+
if (protocol == "Wmts") return await wmtsLayer(url, options);
|
214
|
+
if (protocol == "Xyz") return tileLayer(url, options);
|
215
|
+
console.error(`Unsupported protocol name: "${protocol}"`);
|
216
|
+
}
|
217
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { Controller } from "@hotwired/stimulus";
|
2
|
+
|
3
|
+
export default class OembedViewerController extends Controller {
|
4
|
+
static values = {
|
5
|
+
url: String,
|
6
|
+
};
|
7
|
+
|
8
|
+
connect() {
|
9
|
+
fetch(this.urlValue)
|
10
|
+
.then((response) => response.json())
|
11
|
+
.then((data) => {
|
12
|
+
if (data) this.element.innerHTML = data.html;
|
13
|
+
})
|
14
|
+
.catch((error) => {
|
15
|
+
console.error("Error loading oEmbed data:", error);
|
16
|
+
});
|
17
|
+
}
|
18
|
+
}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
import { Map } from "ol";
|
2
|
+
import TileLayer from "ol/layer/Tile";
|
3
|
+
import XYZ from "ol/source/XYZ";
|
4
|
+
import GeoJSON from "ol/format/GeoJSON";
|
5
|
+
import { FullScreen, defaults as defaultControls } from "ol/control";
|
6
|
+
import { pmTilesLayer, cogLayer } from "geoblacklight/openlayers/layers";
|
7
|
+
import basemaps from "geoblacklight/openlayers/basemaps";
|
8
|
+
import { Controller } from "@hotwired/stimulus";
|
9
|
+
|
10
|
+
export default class OpenlayersViewerController extends Controller {
|
11
|
+
static values = {
|
12
|
+
url: String,
|
13
|
+
protocol: String,
|
14
|
+
basemap: String,
|
15
|
+
mapGeom: String,
|
16
|
+
};
|
17
|
+
|
18
|
+
async connect() {
|
19
|
+
// Set up layers
|
20
|
+
this.basemap = this.getBasemap();
|
21
|
+
this.overlay = this.getPreviewOverlay(this.protocolValue, this.urlValue);
|
22
|
+
|
23
|
+
await this.getBounds();
|
24
|
+
// Load the map
|
25
|
+
this.loadMap();
|
26
|
+
}
|
27
|
+
|
28
|
+
// Create the map, add layers, and fit the bounds
|
29
|
+
loadMap() {
|
30
|
+
this.map = new Map({
|
31
|
+
target: this.element,
|
32
|
+
controls: defaultControls().extend([new FullScreen()]),
|
33
|
+
layers: [this.basemap, this.overlay],
|
34
|
+
});
|
35
|
+
this.map.getView().fit(this.extent, this.map.getSize());
|
36
|
+
}
|
37
|
+
|
38
|
+
async getBounds() {
|
39
|
+
if (this.protocolValue == 'Cog') {
|
40
|
+
const view = await this.overlay.getSource().getView();
|
41
|
+
this.extent = view.extent;
|
42
|
+
} else {
|
43
|
+
this.extent = new GeoJSON()
|
44
|
+
.readFeatures(this.mapGeomValue)[0]
|
45
|
+
.getGeometry()
|
46
|
+
.getExtent();
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
// Select the configured basemap to use
|
51
|
+
getBasemap() {
|
52
|
+
const basemap = basemaps[this.basemapValue || "positron"];
|
53
|
+
const layer = new TileLayer({ source: new XYZ(basemap) });
|
54
|
+
return layer;
|
55
|
+
}
|
56
|
+
|
57
|
+
// Generate a layer based on the protocol
|
58
|
+
getPreviewOverlay(protocol, url) {
|
59
|
+
if (protocol === "Pmtiles") return pmTilesLayer(url);
|
60
|
+
if (protocol === "Cog") return cogLayer(url);
|
61
|
+
console.error(`Unsupported protocol name: "${protocol}"`);
|
62
|
+
}
|
63
|
+
}
|