geoblacklight 5.4.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 -4
- data/app/components/geoblacklight/document/sidebar_component.rb +0 -8
- data/app/components/geoblacklight/document_component.html.erb +1 -2
- data/app/components/geoblacklight/download_links_component.html.erb +0 -3
- data/app/components/geoblacklight/download_links_component.rb +1 -1
- data/app/components/geoblacklight/header_component.html.erb +4 -4
- data/app/components/geoblacklight/header_icons_component.rb +4 -2
- data/app/components/geoblacklight/homepage_feature_facet_component.html.erb +3 -7
- data/app/components/geoblacklight/homepage_feature_facet_component.rb +12 -3
- data/app/components/geoblacklight/iiif_drag_drop_component.html.erb +2 -2
- data/app/components/geoblacklight/iiif_drag_drop_component.rb +2 -2
- data/app/components/geoblacklight/index_map_inspect_component.html.erb +3 -3
- data/app/components/geoblacklight/index_map_legend_component.html.erb +7 -7
- data/app/components/geoblacklight/index_map_legend_component.rb +7 -0
- data/app/components/geoblacklight/item_map_viewer_component.rb +9 -5
- 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 +6 -5
- 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 -7
- data/app/controllers/relation_controller.rb +1 -1
- data/app/controllers/wms_controller.rb +1 -1
- data/app/helpers/geoblacklight_helper.rb +0 -43
- 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 +110 -134
- data/app/javascript/geoblacklight/controllers/oembed_viewer_controller.js +5 -5
- data/app/javascript/geoblacklight/controllers/openlayers_viewer_controller.js +27 -61
- 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 +34 -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 +79 -71
- 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 +43 -15
- data/app/javascript/geoblacklight/openlayers/inspection.js +23 -23
- data/app/javascript/geoblacklight/openlayers/layers.js +12 -12
- data/app/models/concerns/geoblacklight/bbox_filter_query.rb +7 -9
- data/app/models/concerns/geoblacklight/solr_document.rb +17 -57
- 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 -4
- 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 +3 -4
- 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 +102 -77
- data/lib/generators/geoblacklight/templates/settings.yml +97 -132
- 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 -5
- data/lib/geoblacklight/engine.rb +7 -18
- data/lib/geoblacklight/metadata/base.rb +0 -2
- data/lib/geoblacklight/metadata_transformer.rb +0 -2
- data/lib/geoblacklight/references.rb +6 -10
- data/lib/geoblacklight/relation/ancestors.rb +3 -5
- data/lib/geoblacklight/relation/descendants.rb +2 -4
- data/lib/geoblacklight/relation/relation_response.rb +5 -8
- data/lib/geoblacklight/version.rb +1 -1
- data/lib/geoblacklight/wms_layer.rb +3 -3
- data/lib/geoblacklight.rb +5 -15
- data/lib/tasks/geoblacklight.rake +0 -9
- 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/solr/conf/solrconfig.xml +10 -10
- 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 -69
- 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 +5 -4
- 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 +4 -16
- data/spec/tasks/geoblacklight_spec.rb +1 -1
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +4 -3
- metadata +40 -194
- 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/lib/geoblacklight/deprecated_configuration.rb +0 -665
- 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/lib/geoblacklight/deprecated_configuration_spec.rb +0 -680
- data/spec/solr_config_spec.rb +0 -41
- 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
|
@@ -9,7 +9,6 @@ module GeoblacklightHelper
|
|
|
9
9
|
# Blacklight catalog controller helper method to truncate field value to 150 chars
|
|
10
10
|
# @param [SolrDocument] args
|
|
11
11
|
# @return [String]
|
|
12
|
-
# @deprecated
|
|
13
12
|
def snippit(args)
|
|
14
13
|
truncate(Array(args[:value]).flatten.join(" "), length: 150)
|
|
15
14
|
end
|
|
@@ -19,7 +18,6 @@ module GeoblacklightHelper
|
|
|
19
18
|
# @return [SVG or HTML tag]
|
|
20
19
|
def geoblacklight_icon(name, **args)
|
|
21
20
|
icon_name = name ? name.to_s.parameterize : "none"
|
|
22
|
-
icon_name = Settings.ICON_MAPPING && Settings.ICON_MAPPING[icon_name] || icon_name
|
|
23
21
|
camel_icon = icon_name.tr("-", "_").camelize.delete(" ")
|
|
24
22
|
begin
|
|
25
23
|
render "Blacklight::Icons::#{camel_icon}Component".constantize.new(name: icon_name, **args)
|
|
@@ -41,7 +39,6 @@ module GeoblacklightHelper
|
|
|
41
39
|
# div. Arguments come from Blacklight::DocumentPresenter's
|
|
42
40
|
# get_field_values method
|
|
43
41
|
# @param [Hash] args from get_field_values
|
|
44
|
-
# @deprecated
|
|
45
42
|
def render_value_as_truncate_abstract(args)
|
|
46
43
|
tag.div class: "truncate-abstract" do
|
|
47
44
|
Array(args[:value]).flatten.join(" ")
|
|
@@ -51,25 +48,15 @@ module GeoblacklightHelper
|
|
|
51
48
|
##
|
|
52
49
|
# Selects the basemap used for map displays
|
|
53
50
|
# @return [String]
|
|
54
|
-
# @deprecated
|
|
55
51
|
def geoblacklight_basemap
|
|
56
52
|
blacklight_config.basemap_provider || "positron"
|
|
57
53
|
end
|
|
58
54
|
|
|
59
|
-
##
|
|
60
|
-
# Returns a hash of the leaflet plugin settings to pass to the viewer.
|
|
61
|
-
# @return[Hash]
|
|
62
|
-
# @deprecated
|
|
63
|
-
def leaflet_options
|
|
64
|
-
Settings.LEAFLET
|
|
65
|
-
end
|
|
66
|
-
|
|
67
55
|
##
|
|
68
56
|
# Renders the transformed metadata
|
|
69
57
|
# (Renders a partial when the metadata isn't available)
|
|
70
58
|
# @param [Geoblacklight::Metadata::Base] metadata the metadata object
|
|
71
59
|
# @return [String]
|
|
72
|
-
# @deprecated
|
|
73
60
|
def render_transformed_metadata(metadata)
|
|
74
61
|
render partial: "catalog/metadata/content", locals: {content: metadata.transform.html_safe}
|
|
75
62
|
rescue Geoblacklight::MetadataTransformer::TransformError => transform_err
|
|
@@ -85,7 +72,6 @@ module GeoblacklightHelper
|
|
|
85
72
|
# @param [SolrDocument] document the Solr Document for the item
|
|
86
73
|
# @param [Geoblacklight::Metadata::Base] metadata the object for the metadata resource
|
|
87
74
|
# @return [Boolean]
|
|
88
|
-
# @deprecated
|
|
89
75
|
def first_metadata?(document, metadata)
|
|
90
76
|
document.references.shown_metadata.first.type == metadata.type
|
|
91
77
|
end
|
|
@@ -101,25 +87,6 @@ module GeoblacklightHelper
|
|
|
101
87
|
)
|
|
102
88
|
end
|
|
103
89
|
|
|
104
|
-
## Returns the icon used based off a Settings strategy
|
|
105
|
-
# @deprecated
|
|
106
|
-
def relations_icon(document, icon)
|
|
107
|
-
# If configured to use geometry type for relations icon
|
|
108
|
-
if Settings.USE_GEOM_FOR_RELATIONS_ICON
|
|
109
|
-
Geoblacklight.deprecation.warn("USE_GEOM_FOR_RELATIONS_ICON is deprecated and will be removed in GeoBlacklight 6")
|
|
110
|
-
icon_html = render Geoblacklight::HeaderIconsComponent.new(
|
|
111
|
-
document: document,
|
|
112
|
-
fields: [Settings.FIELDS.GEOM_TYPE]
|
|
113
|
-
)
|
|
114
|
-
|
|
115
|
-
# Use geometry-based icon if it's valid (not missing)
|
|
116
|
-
return icon_html unless icon_html.include?("icon-missing")
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
# Fall back to the default icon
|
|
120
|
-
geoblacklight_icon(icon)
|
|
121
|
-
end
|
|
122
|
-
|
|
123
90
|
## Returns the data-page attribute value used as the JS map selector
|
|
124
91
|
def results_js_map_selector(controller_name)
|
|
125
92
|
case controller_name
|
|
@@ -129,14 +96,4 @@ module GeoblacklightHelper
|
|
|
129
96
|
"index"
|
|
130
97
|
end
|
|
131
98
|
end
|
|
132
|
-
|
|
133
|
-
Geoblacklight.deprecation.deprecate_methods(GeoblacklightHelper,
|
|
134
|
-
snippit: "GeoBlacklight 6 removes it; its catalog_controller template no longer configures a " \
|
|
135
|
-
"truncated description index field",
|
|
136
|
-
render_value_as_truncate_abstract: "use Geoblacklight::MetadataDescriptionMarkdownComponent instead",
|
|
137
|
-
geoblacklight_basemap: "GeoBlacklight 6 reads the basemap from the viewer components themselves",
|
|
138
|
-
leaflet_options: "GeoBlacklight 6 reads the Leaflet options from the viewer components themselves",
|
|
139
|
-
render_transformed_metadata: "use Geoblacklight::MetadataComponent instead",
|
|
140
|
-
first_metadata?: "use Geoblacklight::MetadataComponent instead",
|
|
141
|
-
relations_icon: "use Geoblacklight::Relations::RelationComponent instead")
|
|
142
99
|
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Controller } from "@hotwired/stimulus"
|
|
2
2
|
|
|
3
3
|
export default class extends Controller {
|
|
4
|
-
|
|
4
|
+
static targets = ["alert"]
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
11
|
}
|
|
@@ -2,55 +2,63 @@ import { Controller } from "@hotwired/stimulus"
|
|
|
2
2
|
|
|
3
3
|
export default class extends Controller {
|
|
4
4
|
download(ev) {
|
|
5
|
-
ev.preventDefault()
|
|
5
|
+
ev.preventDefault()
|
|
6
6
|
if (this.downloading) {
|
|
7
|
-
return
|
|
7
|
+
return
|
|
8
8
|
}
|
|
9
|
-
this.downloading = true
|
|
10
|
-
ev.target.classList.add(
|
|
11
|
-
const url = ev.target.dataset.downloadPath
|
|
12
|
-
ev.target.removeAttribute(
|
|
13
|
-
ev.target.innerHTML = '<div class="spinner-border spinner-border-sm float-end"></div> Preparing download...'
|
|
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
14
|
|
|
15
15
|
fetch(url)
|
|
16
16
|
.then((response) => {
|
|
17
17
|
if (!response.ok) {
|
|
18
18
|
return response.json().then((errorData) => {
|
|
19
|
-
const exception = new Error("Network response was not ok")
|
|
20
|
-
exception.data = errorData
|
|
21
|
-
throw exception
|
|
22
|
-
})
|
|
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
23
|
}
|
|
24
|
-
return response.json()
|
|
24
|
+
return response.json()
|
|
25
25
|
})
|
|
26
26
|
.then((data) => this.complete(data, ev.target))
|
|
27
|
-
.catch((error) => this.error(error, ev.target))
|
|
27
|
+
.catch((error) => this.error(error, ev.target))
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
complete(data, target) {
|
|
31
|
-
this.downloading = false
|
|
32
|
-
target.classList.remove(
|
|
33
|
-
target.classList.add(
|
|
34
|
-
target.innerHTML = `Download ready (${target.dataset.downloadType})
|
|
35
|
-
target.href = data[1]
|
|
36
|
-
this.renderMessage(data[0])
|
|
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
37
|
//target.click();
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
error(exception, target) {
|
|
41
|
-
this.downloading = false
|
|
42
|
-
target.classList.remove(
|
|
43
|
-
target.classList.add(
|
|
44
|
-
target.innerHTML = `Download failed (${target.dataset.downloadType})
|
|
45
|
-
|
|
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
|
+
console.log(exception)
|
|
46
|
+
|
|
47
|
+
this.renderMessage(exception.data[0])
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
renderMessage(message) {
|
|
51
|
+
let flashContainer = document.querySelector("div.flash_messages")
|
|
52
|
+
if (!flashContainer) {
|
|
53
|
+
flashContainer = document.createElement("div")
|
|
54
|
+
flashContainer.className = "flash_messages"
|
|
55
|
+
document.getElementById("document").prepend(flashContainer)
|
|
56
|
+
}
|
|
49
57
|
Object.entries(message).forEach(([idx, msg]) => {
|
|
50
|
-
const flash = document.createElement("div")
|
|
51
|
-
flash.className = `alert alert-${msg[0]} alert-dismissible fade show
|
|
52
|
-
flash.innerHTML = `${msg[1]}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button
|
|
53
|
-
|
|
54
|
-
})
|
|
58
|
+
const flash = document.createElement("div")
|
|
59
|
+
flash.className = `alert alert-${msg[0]} alert-dismissible fade show`
|
|
60
|
+
flash.innerHTML = `${msg[1]}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>`
|
|
61
|
+
flashContainer.appendChild(flash)
|
|
62
|
+
})
|
|
55
63
|
}
|
|
56
64
|
}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { Icon, Control } from "leaflet"
|
|
2
|
-
import { FullScreen } from "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 Sleep from "geoblacklight/leaflet/controls/sleep"
|
|
10
|
-
import {
|
|
1
|
+
import { Icon, Control } from "leaflet"
|
|
2
|
+
import { FullScreen } from "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 Sleep from "geoblacklight/leaflet/controls/sleep"
|
|
10
|
+
import {
|
|
11
|
+
wmsInspection,
|
|
11
12
|
tiledMapLayerInspection,
|
|
12
13
|
featureLayerInspection,
|
|
13
|
-
dynamicMapLayerInspection
|
|
14
|
-
} from "geoblacklight/leaflet/inspection"
|
|
14
|
+
dynamicMapLayerInspection,
|
|
15
|
+
} from "geoblacklight/leaflet/inspection"
|
|
15
16
|
import {
|
|
16
17
|
esriDynamicMapLayer,
|
|
17
18
|
esriFeatureLayer,
|
|
@@ -20,10 +21,10 @@ import {
|
|
|
20
21
|
wmsLayer,
|
|
21
22
|
wmtsLayer,
|
|
22
23
|
indexMapLayer,
|
|
23
|
-
} from "geoblacklight/leaflet/layers"
|
|
24
|
-
import { geoJSONToBounds } from "geoblacklight/leaflet/utils"
|
|
25
|
-
import { DEFAULT_BOUNDS, DEFAULT_OPACITY, DEFAULT_GEOM_OVERLAY_OPTIONS } from "geoblacklight/leaflet/constants"
|
|
26
|
-
import sidebarControl from "geoblacklight/leaflet/controls/sidebar"
|
|
24
|
+
} from "geoblacklight/leaflet/layers"
|
|
25
|
+
import { geoJSONToBounds } from "geoblacklight/leaflet/utils"
|
|
26
|
+
import { DEFAULT_BOUNDS, DEFAULT_OPACITY, DEFAULT_GEOM_OVERLAY_OPTIONS } from "geoblacklight/leaflet/constants"
|
|
27
|
+
import sidebarControl from "geoblacklight/leaflet/controls/sidebar"
|
|
27
28
|
|
|
28
29
|
export default class LeafletViewerController extends Controller {
|
|
29
30
|
static values = {
|
|
@@ -37,213 +38,188 @@ export default class LeafletViewerController extends Controller {
|
|
|
37
38
|
page: String,
|
|
38
39
|
layerId: String,
|
|
39
40
|
drawInitialBounds: Boolean,
|
|
40
|
-
}
|
|
41
|
+
}
|
|
41
42
|
|
|
42
43
|
connect() {
|
|
43
44
|
// Use leaflet icon images from CDN
|
|
44
|
-
Icon.Default.imagePath = "https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/images/"
|
|
45
|
+
Icon.Default.imagePath = "https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/images/"
|
|
45
46
|
|
|
46
47
|
// Set up layers
|
|
47
|
-
this.basemap = this.getBasemap()
|
|
48
|
-
this.overlay = layerGroup()
|
|
48
|
+
this.basemap = this.getBasemap()
|
|
49
|
+
this.overlay = layerGroup()
|
|
49
50
|
|
|
50
51
|
// Calculate bounds
|
|
51
|
-
this.bounds = DEFAULT_BOUNDS
|
|
52
|
-
if (this.hasMapGeomValue) this.bounds = geoJSONToBounds(this.mapGeomValue)
|
|
52
|
+
this.bounds = DEFAULT_BOUNDS
|
|
53
|
+
if (this.hasMapGeomValue) this.bounds = geoJSONToBounds(this.mapGeomValue)
|
|
53
54
|
|
|
54
55
|
// Load the map
|
|
55
|
-
this.loadMap()
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
get config() {
|
|
59
|
-
|
|
60
|
-
if (!this.optionsValue.VIEWERS || !this.hasProtocolValue) return {};
|
|
61
|
-
return this.optionsValue.VIEWERS[this.protocolValue.toUpperCase()];
|
|
56
|
+
this.loadMap()
|
|
62
57
|
}
|
|
63
58
|
|
|
64
59
|
// Create the map, add layers, fit the bounds
|
|
65
60
|
async loadMap() {
|
|
66
|
-
if (this.map) return
|
|
61
|
+
if (this.map) return
|
|
67
62
|
|
|
68
63
|
// Set up the map and fit to bounds
|
|
69
|
-
const sleepSettings = this.optionsValue.
|
|
70
|
-
this.map = map(this.element, sleepSettings)
|
|
71
|
-
if (sleepSettings.
|
|
64
|
+
const sleepSettings = this.optionsValue.sleep || { sleep: false }
|
|
65
|
+
this.map = map(this.element, sleepSettings)
|
|
66
|
+
if (sleepSettings.sleep) this.map.addHandler("SLEEP", Sleep)
|
|
72
67
|
|
|
73
|
-
this.map.addLayer(this.basemap)
|
|
74
|
-
this.map.addLayer(this.overlay)
|
|
75
|
-
this.fitBounds(this.bounds)
|
|
76
|
-
this.map.options.selected_color = this.optionsValue.
|
|
68
|
+
this.map.addLayer(this.basemap)
|
|
69
|
+
this.map.addLayer(this.overlay)
|
|
70
|
+
this.fitBounds(this.bounds)
|
|
71
|
+
this.map.options.selected_color = this.optionsValue.selected_color || "blue"
|
|
77
72
|
|
|
78
73
|
// If the data is available, add the preview and set up inspection
|
|
79
74
|
// Otherwise just draw the bounds, if configured to do so
|
|
80
75
|
if (this.availableValue && this.protocolValue) {
|
|
81
|
-
await this.addPreviewOverlay()
|
|
82
|
-
this.addInspection()
|
|
76
|
+
await this.addPreviewOverlay()
|
|
77
|
+
this.addInspection()
|
|
83
78
|
} else if (this.drawInitialBoundsValue && this.bounds) {
|
|
84
|
-
this.addBoundsOverlay(this.bounds)
|
|
79
|
+
this.addBoundsOverlay(this.bounds)
|
|
85
80
|
}
|
|
86
81
|
|
|
87
82
|
// Add configured controls
|
|
88
|
-
this.addControls()
|
|
83
|
+
this.addControls()
|
|
89
84
|
|
|
90
|
-
if (this.protocolValue == "IndexMap"){
|
|
85
|
+
if (this.protocolValue == "IndexMap") {
|
|
91
86
|
this.fitBounds(this.previewOverlay.getBounds())
|
|
92
87
|
}
|
|
93
88
|
|
|
94
89
|
// Enable geosearch handler, if available
|
|
95
|
-
if (this.map.geosearch) this.map.geosearch.enable()
|
|
90
|
+
if (this.map.geosearch) this.map.geosearch.enable()
|
|
96
91
|
|
|
97
92
|
// Emit an event for other controllers to listen to
|
|
98
|
-
this.dispatch("loaded")
|
|
93
|
+
this.dispatch("loaded")
|
|
99
94
|
}
|
|
100
95
|
|
|
101
96
|
// Set the bounds of the map to an L.LatLngBounds object
|
|
102
97
|
fitBounds(bounds) {
|
|
103
98
|
// prevent map from moving when setting bounds, if relevant
|
|
104
|
-
if (this.map.geosearch) this.map.geosearch.disable()
|
|
105
|
-
this.map.fitBounds(bounds, { animate: false, noMoveStart: true })
|
|
106
|
-
this.bounds = bounds
|
|
107
|
-
if (this.map.geosearch) this.map.geosearch.enable()
|
|
108
|
-
this.element.dataset.bounds = this.bounds.toBBoxString()
|
|
99
|
+
if (this.map.geosearch) this.map.geosearch.disable()
|
|
100
|
+
this.map.fitBounds(bounds, { animate: false, noMoveStart: true })
|
|
101
|
+
this.bounds = bounds
|
|
102
|
+
if (this.map.geosearch) this.map.geosearch.enable()
|
|
103
|
+
this.element.dataset.bounds = this.bounds.toBBoxString()
|
|
109
104
|
}
|
|
110
105
|
|
|
111
106
|
// Select the configured basemap to use
|
|
112
107
|
getBasemap() {
|
|
113
|
-
const
|
|
114
|
-
return tileLayer(
|
|
115
|
-
...
|
|
116
|
-
detectRetina: this.optionsValue.
|
|
117
|
-
})
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// The basemap to draw, with any BASEMAPS values from settings.yml merged over
|
|
121
|
-
// the shipped definition. This lets an application change a basemap's URL --
|
|
122
|
-
// to add a CARTO API key, for example -- without restating the rest of the
|
|
123
|
-
// definition, and lets it define basemaps of its own. Falls back to positron
|
|
124
|
-
// for a name that resolves to nothing rather than drawing no basemap.
|
|
125
|
-
basemapDefinition() {
|
|
126
|
-
const name = this.basemapValue || "positron";
|
|
127
|
-
const definition = { ...basemaps[name], ...this.basemapOverrides()[name] };
|
|
128
|
-
return definition.url ? definition : basemaps.positron;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
basemapOverrides() {
|
|
132
|
-
return this.optionsValue.BASEMAPS || {};
|
|
108
|
+
const basemapName = this.basemapValue || "positron"
|
|
109
|
+
return tileLayer(basemaps[basemapName].url, {
|
|
110
|
+
...basemaps[basemapName],
|
|
111
|
+
detectRetina: this.optionsValue.layers.detect_retina || false,
|
|
112
|
+
})
|
|
133
113
|
}
|
|
134
114
|
|
|
135
115
|
// Add the configured controls to the map
|
|
136
116
|
addControls() {
|
|
137
117
|
// Add any top-level controls (e.g. geosearch) first
|
|
138
|
-
const globalControls = this.optionsValue.
|
|
118
|
+
const globalControls = this.optionsValue.controls || {}
|
|
139
119
|
Object.entries(globalControls).forEach(([controlName, controlOptions]) => {
|
|
140
|
-
const control = this.getControl(controlName, controlOptions)
|
|
141
|
-
if (control) this.addControl(control)
|
|
142
|
-
})
|
|
120
|
+
const control = this.getControl(controlName, controlOptions)
|
|
121
|
+
if (control) this.addControl(control)
|
|
122
|
+
})
|
|
143
123
|
|
|
144
124
|
// Add opacity and fullscreen controls for all layers
|
|
145
125
|
if (this.hasProtocolValue) {
|
|
146
|
-
if (this.availableValue){
|
|
147
|
-
const opacityControl = this.getControl("Opacity")
|
|
148
|
-
this.addControl(opacityControl)
|
|
126
|
+
if (this.availableValue) {
|
|
127
|
+
const opacityControl = this.getControl("Opacity")
|
|
128
|
+
this.addControl(opacityControl)
|
|
149
129
|
}
|
|
150
|
-
const fullscreenControl = this.getControl("Fullscreen")
|
|
151
|
-
this.addControl(fullscreenControl)
|
|
130
|
+
const fullscreenControl = this.getControl("Fullscreen")
|
|
131
|
+
this.addControl(fullscreenControl)
|
|
152
132
|
}
|
|
153
133
|
}
|
|
154
134
|
|
|
155
135
|
// Add a pre-configured L.Control instance to the map
|
|
156
136
|
addControl(control) {
|
|
157
|
-
this.map.addControl(control)
|
|
137
|
+
this.map.addControl(control)
|
|
158
138
|
}
|
|
159
139
|
|
|
160
140
|
// Look up the control name and return the corresponding L.Control instance
|
|
161
141
|
getControl(controlName, controlOptions) {
|
|
162
|
-
if (controlName == "Opacity")
|
|
163
|
-
|
|
164
|
-
if (controlName == "Fullscreen")
|
|
165
|
-
return new FullScreen({ position: "bottomleft", ...controlOptions });
|
|
142
|
+
if (controlName == "Opacity") return new LayerOpacityControl(this.previewOverlay)
|
|
143
|
+
if (controlName == "Fullscreen") return new FullScreen({ position: "bottomleft", ...controlOptions })
|
|
166
144
|
if (controlName == "Geosearch")
|
|
167
|
-
return new GeoSearchControl({
|
|
168
|
-
|
|
145
|
+
return new GeoSearchControl({
|
|
146
|
+
baseUrl: this.catalogBaseUrlValue,
|
|
147
|
+
...controlOptions,
|
|
148
|
+
})
|
|
149
|
+
console.error(`Unsupported control name: "${controlName}"`)
|
|
169
150
|
}
|
|
170
151
|
|
|
171
152
|
// Add the bounding box to the map
|
|
172
153
|
addBoundsOverlay(bounds) {
|
|
173
|
-
const hasMapGeomValue = Object.keys(this.mapGeomValue).length > 0 && !this.map.geosearch
|
|
174
|
-
var defaultOptions = hasMapGeomValue ? DEFAULT_GEOM_OVERLAY_OPTIONS : {}
|
|
175
|
-
const overlayOptions = this.optionsValue.
|
|
176
|
-
const options = {...defaultOptions, ...overlayOptions[this.pageValue]}
|
|
177
|
-
const boundsOverlay = polygon(
|
|
178
|
-
bounds.getSouthWest(),
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
], options
|
|
183
|
-
);
|
|
184
|
-
|
|
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.bounds_overlay || {}
|
|
157
|
+
const options = { ...defaultOptions, ...overlayOptions[this.pageValue] }
|
|
158
|
+
const boundsOverlay = polygon(
|
|
159
|
+
[bounds.getSouthWest(), bounds.getSouthEast(), bounds.getNorthEast(), bounds.getNorthWest()],
|
|
160
|
+
options,
|
|
161
|
+
)
|
|
162
|
+
|
|
185
163
|
// Render geometry layer if available
|
|
186
|
-
if (hasMapGeomValue) this.map.addLayer(L.geoJSON(this.mapGeomValue, overlayOptions[this.pageValue]))
|
|
164
|
+
if (hasMapGeomValue) this.map.addLayer(L.geoJSON(this.mapGeomValue, overlayOptions[this.pageValue]))
|
|
187
165
|
|
|
188
166
|
// Render the bounds overlay
|
|
189
|
-
this.boundsOverlay = boundsOverlay
|
|
190
|
-
this.overlay.addLayer(boundsOverlay)
|
|
167
|
+
this.boundsOverlay = boundsOverlay
|
|
168
|
+
this.overlay.addLayer(boundsOverlay)
|
|
191
169
|
}
|
|
192
170
|
|
|
193
171
|
// Remove the bounding box overlay
|
|
194
172
|
removeBoundsOverlay() {
|
|
195
|
-
if (this.boundsOverlay) this.overlay.removeLayer(this.boundsOverlay)
|
|
173
|
+
if (this.boundsOverlay) this.overlay.removeLayer(this.boundsOverlay)
|
|
196
174
|
}
|
|
197
175
|
|
|
198
176
|
setUpSidebar() {
|
|
199
|
-
const sidebar = document.querySelector(
|
|
200
|
-
if (!sidebar || sidebar.dataset.sidebar !=
|
|
177
|
+
const sidebar = document.querySelector("[data-sidebar]")
|
|
178
|
+
if (!sidebar || sidebar.dataset.sidebar != "true") return
|
|
201
179
|
const control = new sidebarControl({
|
|
202
|
-
position:
|
|
203
|
-
sidebar
|
|
204
|
-
})
|
|
205
|
-
this.map.addControl(control)
|
|
180
|
+
position: "topright",
|
|
181
|
+
sidebar,
|
|
182
|
+
})
|
|
183
|
+
this.map.addControl(control)
|
|
206
184
|
}
|
|
207
185
|
|
|
208
186
|
addInspection() {
|
|
209
|
-
const inspectionProtocols = [
|
|
210
|
-
if (!inspectionProtocols.includes(this.protocolValue)) return
|
|
211
|
-
this.setUpSidebar()
|
|
212
|
-
if (this.protocolValue == "Wms")
|
|
213
|
-
|
|
214
|
-
if (this.protocolValue
|
|
187
|
+
const inspectionProtocols = ["Wms", "FeatureLayer", "DynamicMapLayer", "IndexMap"]
|
|
188
|
+
if (!inspectionProtocols.includes(this.protocolValue)) return
|
|
189
|
+
this.setUpSidebar()
|
|
190
|
+
if (this.protocolValue == "Wms")
|
|
191
|
+
return wmsInspection(this.map, this.urlValue, this.layerIdValue, this.previewOverlay)
|
|
192
|
+
if (this.protocolValue == "FeatureLayer") return featureLayerInspection(this.map, this.previewOverlay)
|
|
193
|
+
if (this.protocolValue == "DynamicMapLayer")
|
|
194
|
+
return dynamicMapLayerInspection(this.map, this.previewOverlay, this.layerIdValue)
|
|
215
195
|
// TODO: TiledMapLayer is converted but seems busted -- see layers.js. Don't know what to test it with, need a fixture.
|
|
216
196
|
// if (this.protocolValue == "TiledMapLayer") return tiledMapLayerInspection(this.map, this.previewOverlay);
|
|
217
197
|
}
|
|
218
198
|
|
|
219
199
|
// Add the actual data to the map as a layer
|
|
220
200
|
async addPreviewOverlay() {
|
|
221
|
-
this.previewOverlay = await this.getPreviewOverlay(
|
|
222
|
-
this.
|
|
223
|
-
this.
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
detectRetina: this.optionsValue.LAYERS.DETECT_RETINA || false,
|
|
228
|
-
}
|
|
229
|
-
);
|
|
230
|
-
if (this.previewOverlay) this.overlay.addLayer(this.previewOverlay);
|
|
201
|
+
this.previewOverlay = await this.getPreviewOverlay(this.protocolValue, this.urlValue, {
|
|
202
|
+
layerId: this.layerIdValue,
|
|
203
|
+
opacity: this.optionsValue.opacity || DEFAULT_OPACITY,
|
|
204
|
+
detectRetina: this.optionsValue.layers.detect_retina || false,
|
|
205
|
+
})
|
|
206
|
+
if (this.previewOverlay) this.overlay.addLayer(this.previewOverlay)
|
|
231
207
|
}
|
|
232
208
|
|
|
233
209
|
// Generate a layer based on the protocol
|
|
234
210
|
async getPreviewOverlay(protocol, url, options) {
|
|
235
|
-
if (protocol == "DynamicMapLayer") return esriDynamicMapLayer(url, options)
|
|
236
|
-
if (protocol == "FeatureLayer") return esriFeatureLayer(url, options)
|
|
211
|
+
if (protocol == "DynamicMapLayer") return esriDynamicMapLayer(url, options)
|
|
212
|
+
if (protocol == "FeatureLayer") return esriFeatureLayer(url, options)
|
|
237
213
|
// imageMapLayer is a built-in method from esri-leaflet
|
|
238
|
-
if (protocol == "ImageMapLayer") return imageMapLayer({url, ...options})
|
|
239
|
-
if (protocol == "IndexMap") return await indexMapLayer(url, this.optionsValue)
|
|
240
|
-
if (protocol == "TiledMapLayer") return await esriTiledMapLayer(url, options)
|
|
241
|
-
if (protocol == "Tilejson") return await tileJsonLayer(url, options)
|
|
214
|
+
if (protocol == "ImageMapLayer") return imageMapLayer({ url, ...options })
|
|
215
|
+
if (protocol == "IndexMap") return await indexMapLayer(url, this.optionsValue)
|
|
216
|
+
if (protocol == "TiledMapLayer") return await esriTiledMapLayer(url, options)
|
|
217
|
+
if (protocol == "Tilejson") return await tileJsonLayer(url, options)
|
|
242
218
|
// tileLayer is a built-in method from leaflet
|
|
243
|
-
if (protocol == "Tms") return tileLayer(url, { tms: true, ...options })
|
|
244
|
-
if (protocol == "Wms") return wmsLayer(url, options)
|
|
245
|
-
if (protocol == "Wmts") return await wmtsLayer(url, options)
|
|
246
|
-
if (protocol == "Xyz") return tileLayer(url, options)
|
|
247
|
-
console.error(`Unsupported protocol name: "${protocol}"`)
|
|
219
|
+
if (protocol == "Tms") return tileLayer(url, { tms: true, ...options })
|
|
220
|
+
if (protocol == "Wms") return wmsLayer(url, options)
|
|
221
|
+
if (protocol == "Wmts") return await wmtsLayer(url, options)
|
|
222
|
+
if (protocol == "Xyz") return tileLayer(url, options)
|
|
223
|
+
console.error(`Unsupported protocol name: "${protocol}"`)
|
|
248
224
|
}
|
|
249
225
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { Controller } from "@hotwired/stimulus"
|
|
1
|
+
import { Controller } from "@hotwired/stimulus"
|
|
2
2
|
|
|
3
3
|
export default class OembedViewerController extends Controller {
|
|
4
4
|
static values = {
|
|
5
5
|
url: String,
|
|
6
|
-
}
|
|
6
|
+
}
|
|
7
7
|
|
|
8
8
|
connect() {
|
|
9
9
|
fetch(this.urlValue)
|
|
10
10
|
.then((response) => response.json())
|
|
11
11
|
.then((data) => {
|
|
12
|
-
if (data) this.element.innerHTML = data.html
|
|
12
|
+
if (data) this.element.innerHTML = data.html
|
|
13
13
|
})
|
|
14
14
|
.catch((error) => {
|
|
15
|
-
console.error("Error loading oEmbed data:", error)
|
|
16
|
-
})
|
|
15
|
+
console.error("Error loading oEmbed data:", error)
|
|
16
|
+
})
|
|
17
17
|
}
|
|
18
18
|
}
|