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.
Files changed (461) hide show
  1. checksums.yaml +4 -4
  2. data/.engine_cart.yml +14 -0
  3. data/.github/workflows/ruby.yml +24 -25
  4. data/.gitignore +0 -9
  5. data/.prettierignore +4 -0
  6. data/.prettierrc +5 -0
  7. data/CONTRIBUTING.md +2 -4
  8. data/Gemfile +4 -2
  9. data/README.md +4 -4
  10. data/Rakefile +0 -22
  11. data/app/assets/stylesheets/geoblacklight/global.css +7 -0
  12. data/app/assets/stylesheets/geoblacklight/home.css +22 -0
  13. data/app/assets/stylesheets/geoblacklight/index_maps.css +36 -0
  14. data/app/assets/stylesheets/geoblacklight/record.css +39 -0
  15. data/app/assets/stylesheets/geoblacklight/search.css +56 -0
  16. data/app/assets/stylesheets/geoblacklight/viewers.css +50 -0
  17. data/app/assets/stylesheets/geoblacklight.css +14 -0
  18. data/app/components/blacklight/icons/web_services_component.rb +3 -3
  19. data/app/components/geoblacklight/accordion_component.html.erb +3 -3
  20. data/app/components/geoblacklight/accordion_component.rb +4 -0
  21. data/app/components/geoblacklight/arcgis_component.html.erb +1 -1
  22. data/app/components/geoblacklight/arcgis_component.rb +1 -1
  23. data/app/components/geoblacklight/attribute_table_component.html.erb +3 -3
  24. data/app/components/geoblacklight/data_dictionary_download_component.html.erb +1 -1
  25. data/app/components/geoblacklight/display_note_component.html.erb +1 -1
  26. data/app/components/geoblacklight/display_note_component.rb +2 -1
  27. data/app/components/geoblacklight/document/citation_component.html.erb +1 -1
  28. data/app/components/geoblacklight/document/sidebar_component.html.erb +1 -4
  29. data/app/components/geoblacklight/document/sidebar_component.rb +0 -8
  30. data/app/components/geoblacklight/document_component.html.erb +1 -2
  31. data/app/components/geoblacklight/download_links_component.html.erb +0 -3
  32. data/app/components/geoblacklight/download_links_component.rb +1 -1
  33. data/app/components/geoblacklight/header_component.html.erb +4 -4
  34. data/app/components/geoblacklight/header_icons_component.rb +4 -2
  35. data/app/components/geoblacklight/homepage_feature_facet_component.html.erb +3 -7
  36. data/app/components/geoblacklight/homepage_feature_facet_component.rb +12 -3
  37. data/app/components/geoblacklight/iiif_drag_drop_component.html.erb +2 -2
  38. data/app/components/geoblacklight/iiif_drag_drop_component.rb +2 -2
  39. data/app/components/geoblacklight/index_map_inspect_component.html.erb +3 -3
  40. data/app/components/geoblacklight/index_map_legend_component.html.erb +7 -7
  41. data/app/components/geoblacklight/index_map_legend_component.rb +7 -0
  42. data/app/components/geoblacklight/item_map_viewer_component.rb +9 -5
  43. data/app/components/geoblacklight/location_leaflet_map_component.rb +28 -15
  44. data/app/components/geoblacklight/relations_component.html.erb +2 -2
  45. data/app/components/geoblacklight/search_result_component.html.erb +28 -26
  46. data/app/components/geoblacklight/search_result_component.rb +2 -2
  47. data/app/components/geoblacklight/static_map_component.rb +6 -5
  48. data/app/components/geoblacklight/viewer_help_text_component.html.erb +1 -1
  49. data/app/components/geoblacklight/viewer_help_text_component.rb +1 -1
  50. data/app/components/geoblacklight/web_services_component.html.erb +1 -1
  51. data/app/components/geoblacklight/web_services_component.rb +1 -1
  52. data/app/components/geoblacklight/web_services_default_component.html.erb +6 -6
  53. data/app/components/geoblacklight/web_services_link_component.rb +12 -9
  54. data/app/components/geoblacklight/web_services_wfs_component.html.erb +4 -4
  55. data/app/components/geoblacklight/web_services_wms_component.html.erb +4 -4
  56. data/app/controllers/download_controller.rb +0 -7
  57. data/app/controllers/relation_controller.rb +1 -1
  58. data/app/controllers/wms_controller.rb +1 -1
  59. data/app/helpers/geoblacklight_helper.rb +0 -43
  60. data/app/javascript/geoblacklight/controllers/clipboard_controller.js +6 -6
  61. data/app/javascript/geoblacklight/controllers/downloads_controller.js +37 -29
  62. data/app/javascript/geoblacklight/controllers/leaflet_viewer_controller.js +110 -134
  63. data/app/javascript/geoblacklight/controllers/oembed_viewer_controller.js +5 -5
  64. data/app/javascript/geoblacklight/controllers/openlayers_viewer_controller.js +27 -61
  65. data/app/javascript/geoblacklight/controllers/search_results_controller.js +18 -18
  66. data/app/javascript/geoblacklight/core.js +35 -36
  67. data/app/javascript/geoblacklight/index.js +10 -10
  68. data/app/javascript/geoblacklight/initializers/metadata_download.js +23 -25
  69. data/app/javascript/geoblacklight/initializers/popovers.js +4 -4
  70. data/app/javascript/geoblacklight/initializers/relations.js +20 -20
  71. data/app/javascript/geoblacklight/initializers/tooltips.js +19 -23
  72. data/app/javascript/geoblacklight/initializers/truncation.js +18 -18
  73. data/app/javascript/geoblacklight/leaflet/basemaps.js +34 -3
  74. data/app/javascript/geoblacklight/leaflet/constants.js +7 -7
  75. data/app/javascript/geoblacklight/leaflet/controls/geosearch.js +80 -74
  76. data/app/javascript/geoblacklight/leaflet/controls/layer_opacity.js +74 -73
  77. data/app/javascript/geoblacklight/leaflet/controls/sidebar.js +31 -29
  78. data/app/javascript/geoblacklight/leaflet/controls/sleep.js +54 -51
  79. data/app/javascript/geoblacklight/leaflet/inspection.js +79 -71
  80. data/app/javascript/geoblacklight/leaflet/layer_index_map.js +74 -69
  81. data/app/javascript/geoblacklight/leaflet/layer_wmts.js +14 -16
  82. data/app/javascript/geoblacklight/leaflet/layers.js +59 -66
  83. data/app/javascript/geoblacklight/leaflet/utils.js +37 -43
  84. data/app/javascript/geoblacklight/openlayers/basemaps.js +43 -15
  85. data/app/javascript/geoblacklight/openlayers/inspection.js +23 -23
  86. data/app/javascript/geoblacklight/openlayers/layers.js +12 -12
  87. data/app/models/concerns/geoblacklight/bbox_filter_query.rb +7 -9
  88. data/app/models/concerns/geoblacklight/solr_document.rb +17 -57
  89. data/app/models/concerns/geoblacklight/suppressed_records_search_behavior.rb +3 -3
  90. data/app/views/catalog/_document_split.html.erb +3 -3
  91. data/app/views/catalog/_home_text.html.erb +22 -14
  92. data/app/views/catalog/_metadata.html.erb +1 -4
  93. data/app/views/catalog/_relations_container.html.erb +1 -1
  94. data/app/views/catalog/index.html.erb +0 -1
  95. data/app/views/catalog/metadata/_markup.html.erb +1 -2
  96. data/app/views/catalog/metadata/_missing.html.erb +2 -2
  97. data/app/views/catalog/web_services.html.erb +1 -1
  98. data/app/views/relation/index.html.erb +1 -1
  99. data/app/views/relation/index.json.jbuilder +1 -1
  100. data/config/initializers/rails_config.rb +0 -3
  101. data/config/locales/geoblacklight.en.yml +79 -78
  102. data/geoblacklight.gemspec +3 -4
  103. data/lib/generators/geoblacklight/assets_generator.rb +35 -26
  104. data/lib/generators/geoblacklight/install_generator.rb +6 -11
  105. data/lib/generators/geoblacklight/templates/assets/customizations.css +6 -0
  106. data/lib/generators/geoblacklight/templates/catalog_controller.rb +102 -77
  107. data/lib/generators/geoblacklight/templates/settings.yml +97 -132
  108. data/lib/geoblacklight/configuration/default_settings_builder.rb +18 -0
  109. data/lib/geoblacklight/configuration/display_note_shown_config.rb +13 -0
  110. data/lib/geoblacklight/configuration/fields_config.rb +51 -0
  111. data/lib/geoblacklight/configuration/leaflet_config.rb +73 -0
  112. data/lib/geoblacklight/configuration/leaflet_layers_config.rb +21 -0
  113. data/lib/geoblacklight/configuration/leaflet_sleep_config.rb +20 -0
  114. data/lib/geoblacklight/configuration/legacy_settings_builder.rb +94 -0
  115. data/lib/geoblacklight/configuration.rb +148 -0
  116. data/lib/geoblacklight/download.rb +2 -5
  117. data/lib/geoblacklight/engine.rb +7 -18
  118. data/lib/geoblacklight/metadata/base.rb +0 -2
  119. data/lib/geoblacklight/metadata_transformer.rb +0 -2
  120. data/lib/geoblacklight/references.rb +6 -10
  121. data/lib/geoblacklight/relation/ancestors.rb +3 -5
  122. data/lib/geoblacklight/relation/descendants.rb +2 -4
  123. data/lib/geoblacklight/relation/relation_response.rb +5 -8
  124. data/lib/geoblacklight/version.rb +1 -1
  125. data/lib/geoblacklight/wms_layer.rb +3 -3
  126. data/lib/geoblacklight.rb +5 -15
  127. data/lib/tasks/geoblacklight.rake +0 -9
  128. data/package.json +10 -31
  129. data/schema/geoblacklight-schema-aardvark.json +1 -9
  130. data/schema/readme.md +3 -4
  131. data/solr/conf/_rest_managed.json +3 -2
  132. data/solr/conf/schema.xml +1 -1
  133. data/solr/conf/solrconfig.xml +10 -10
  134. data/spec/components/geoblacklight/arcgis_component_spec.rb +6 -6
  135. data/spec/components/geoblacklight/attribute_table_component_spec.rb +6 -7
  136. data/spec/components/geoblacklight/citation_component_spec.rb +7 -4
  137. data/spec/components/geoblacklight/display_note_component_spec.rb +8 -8
  138. data/spec/components/geoblacklight/document_component_spec.rb +13 -13
  139. data/spec/components/geoblacklight/download_links_component_spec.rb +17 -14
  140. data/spec/components/geoblacklight/header_icons_component_spec.rb +6 -11
  141. data/spec/components/geoblacklight/homepage_feature_facet_component_spec.rb +22 -30
  142. data/spec/components/geoblacklight/iiif_drag_drop_component_spec.rb +3 -3
  143. data/spec/components/geoblacklight/index_map_legend_component_spec.rb +5 -18
  144. data/spec/components/geoblacklight/item_map_viewer_component_spec.rb +5 -5
  145. data/spec/components/geoblacklight/login_link_component_spec.rb +4 -5
  146. data/spec/components/geoblacklight/search_result_component_spec.rb +2 -6
  147. data/spec/components/geoblacklight/static_map_component_spec.rb +2 -2
  148. data/spec/components/geoblacklight/viewer_help_text_component_spec.rb +4 -6
  149. data/spec/components/geoblacklight/web_services_component_spec.rb +11 -10
  150. data/spec/controllers/catalog_controller_spec.rb +7 -7
  151. data/spec/controllers/download_controller_spec.rb +1 -1
  152. data/spec/controllers/relation_controller_spec.rb +1 -1
  153. data/spec/controllers/wms_controller_spec.rb +1 -1
  154. data/spec/features/axe_spec.rb +4 -4
  155. data/spec/features/bookmarks_spec.rb +1 -1
  156. data/spec/features/citations_spec.rb +1 -1
  157. data/spec/features/configurable_basemap_spec.rb +1 -69
  158. data/spec/features/data_dictionary_download_spec.rb +1 -1
  159. data/spec/features/download_layer_spec.rb +1 -1
  160. data/spec/features/empty_search_spec.rb +1 -1
  161. data/spec/features/esri_viewer_spec.rb +1 -1
  162. data/spec/features/exports_spec.rb +1 -1
  163. data/spec/features/full_screen_control_spec.rb +3 -10
  164. data/spec/features/help_text_spec.rb +1 -1
  165. data/spec/features/home_page_spec.rb +1 -1
  166. data/spec/features/index_map_spec.rb +3 -3
  167. data/spec/features/index_view_spec.rb +7 -7
  168. data/spec/features/layer_inspection_spec.rb +1 -1
  169. data/spec/features/layer_opacity_spec.rb +1 -1
  170. data/spec/features/layer_preview_spec.rb +1 -1
  171. data/spec/features/layer_with_no_references_spec.rb +1 -1
  172. data/spec/features/linkified_attribute_table_spec.rb +1 -1
  173. data/spec/features/metadata_panel_spec.rb +1 -1
  174. data/spec/features/missing_metadata_spec.rb +1 -1
  175. data/spec/features/multiple_downloads_spec.rb +1 -1
  176. data/spec/features/oembed_spec.rb +1 -1
  177. data/spec/features/relations_spec.rb +5 -4
  178. data/spec/features/saved_searches_spec.rb +1 -1
  179. data/spec/features/search_bar_spec.rb +1 -1
  180. data/spec/features/search_results_complex_geometry_spec.rb +1 -1
  181. data/spec/features/search_results_icons_spec.rb +3 -4
  182. data/spec/features/search_results_map_spec.rb +1 -1
  183. data/spec/features/search_results_overlap_ratio_spec.rb +3 -3
  184. data/spec/features/search_spec.rb +1 -1
  185. data/spec/features/show_page_download_spec.rb +1 -1
  186. data/spec/features/show_page_metadata_spec.rb +2 -2
  187. data/spec/features/show_page_sidebar_static_map_spec.rb +1 -1
  188. data/spec/features/sms_spec.rb +1 -1
  189. data/spec/features/suppressed_records_spec.rb +1 -1
  190. data/spec/features/tilejson_spec.rb +1 -1
  191. data/spec/features/tms_spec.rb +1 -1
  192. data/spec/features/web_services_modal_spec.rb +1 -1
  193. data/spec/features/wmts_spec.rb +1 -1
  194. data/spec/features/xyz_spec.rb +1 -1
  195. data/spec/fixtures/manifests/tilejson.json +10 -19
  196. data/spec/fixtures/metadata/fgdc.html +1 -1
  197. data/spec/fixtures/metadata/iso.html +1 -1
  198. data/spec/fixtures/solr_documents/README.md +0 -1
  199. data/spec/fixtures/solr_documents/actual-papermap1.json +9 -28
  200. data/spec/fixtures/solr_documents/actual-point1.json +12 -39
  201. data/spec/fixtures/solr_documents/actual-polygon1.json +10 -30
  202. data/spec/fixtures/solr_documents/actual-raster1.json +14 -46
  203. data/spec/fixtures/solr_documents/all-relationships.json +12 -36
  204. data/spec/fixtures/solr_documents/b1g_iiif_manifest.json +33 -62
  205. data/spec/fixtures/solr_documents/b1g_wabash_child_15.json +13 -40
  206. data/spec/fixtures/solr_documents/b1g_wabash_child_16.json +13 -40
  207. data/spec/fixtures/solr_documents/b1g_wabash_child_17.json +13 -40
  208. data/spec/fixtures/solr_documents/b1g_wabash_child_18.json +13 -40
  209. data/spec/fixtures/solr_documents/b1g_wabash_parent.json +13 -40
  210. data/spec/fixtures/solr_documents/baruch_ancestor1.json +13 -40
  211. data/spec/fixtures/solr_documents/baruch_ancestor2.json +13 -40
  212. data/spec/fixtures/solr_documents/baruch_documentation_download.json +14 -46
  213. data/spec/fixtures/solr_documents/bbox-spans-180.json +7 -21
  214. data/spec/fixtures/solr_documents/complex-geom.json +11 -37
  215. data/spec/fixtures/solr_documents/cornell_html_metadata.json +12 -37
  216. data/spec/fixtures/solr_documents/display-note.json +11 -33
  217. data/spec/fixtures/solr_documents/esri-dynamic-layer-all-layers.json +13 -39
  218. data/spec/fixtures/solr_documents/esri-dynamic-layer-single-layer.json +13 -40
  219. data/spec/fixtures/solr_documents/esri-feature-layer.json +13 -39
  220. data/spec/fixtures/solr_documents/esri-image-map-layer.json +13 -40
  221. data/spec/fixtures/solr_documents/esri-tiled_map_layer.json +16 -54
  222. data/spec/fixtures/solr_documents/esri-wms-layer.json +12 -36
  223. data/spec/fixtures/solr_documents/harvard_raster.json +12 -37
  224. data/spec/fixtures/solr_documents/iiif-eastern-hemisphere.json +9 -27
  225. data/spec/fixtures/solr_documents/index-map-polygon-no-downloadurl.json +12 -41
  226. data/spec/fixtures/solr_documents/index-map-polygon.json +12 -41
  227. data/spec/fixtures/solr_documents/index-map-stanford.json +14 -45
  228. data/spec/fixtures/solr_documents/index-map-v1-complex.json +13 -38
  229. data/spec/fixtures/solr_documents/index_map_point.json +13 -42
  230. data/spec/fixtures/solr_documents/metadata_no_geom.json +4 -14
  231. data/spec/fixtures/solr_documents/metadata_no_provider.json +8 -25
  232. data/spec/fixtures/solr_documents/multiple-downloads.json +6 -18
  233. data/spec/fixtures/solr_documents/no_locn_geometry.json +4 -12
  234. data/spec/fixtures/solr_documents/no_spatial.json +4 -12
  235. data/spec/fixtures/solr_documents/oembed.json +8 -25
  236. data/spec/fixtures/solr_documents/princeton-child1.json +9 -29
  237. data/spec/fixtures/solr_documents/princeton-child2.json +9 -29
  238. data/spec/fixtures/solr_documents/princeton-child3.json +9 -29
  239. data/spec/fixtures/solr_documents/princeton-child4.json +9 -29
  240. data/spec/fixtures/solr_documents/princeton-parent.json +10 -33
  241. data/spec/fixtures/solr_documents/public_cog_princeton.json +9 -27
  242. data/spec/fixtures/solr_documents/public_iiif_princeton.json +13 -43
  243. data/spec/fixtures/solr_documents/public_pmtiles_princeton.json +29 -39
  244. data/spec/fixtures/solr_documents/public_polygon_mit.json +9 -30
  245. data/spec/fixtures/solr_documents/restricted-line.json +14 -47
  246. data/spec/fixtures/solr_documents/the-related-record.json +4 -12
  247. data/spec/fixtures/solr_documents/tilejson.json +23 -46
  248. data/spec/fixtures/solr_documents/tms.json +7 -21
  249. data/spec/fixtures/solr_documents/umn_metro_result1.json +13 -41
  250. data/spec/fixtures/solr_documents/umn_state_result1.json +13 -39
  251. data/spec/fixtures/solr_documents/umn_state_result2.json +13 -39
  252. data/spec/fixtures/solr_documents/uva_slug_colon.json +10 -30
  253. data/spec/fixtures/solr_documents/wmts-multiple.json +23 -39
  254. data/spec/fixtures/solr_documents/wmts-single-layer.json +23 -46
  255. data/spec/fixtures/solr_documents/xyz.json +10 -33
  256. data/spec/helpers/geoblacklight_helper_spec.rb +5 -50
  257. data/spec/javascripts/geoblacklight_spec.js +10 -10
  258. data/spec/javascripts/metadata_download_button_spec.js +14 -13
  259. data/spec/lib/geoblacklight/bounding_box_spec.rb +1 -1
  260. data/spec/lib/geoblacklight/configuration/default_settings_builder_spec.rb +9 -0
  261. data/spec/lib/geoblacklight/configuration_spec.rb +13 -0
  262. data/spec/lib/geoblacklight/download/csv_download_spec.rb +2 -2
  263. data/spec/lib/geoblacklight/download/geojson_download_spec.rb +2 -2
  264. data/spec/lib/geoblacklight/download/geotiff_download_spec.rb +5 -2
  265. data/spec/lib/geoblacklight/download/kmz_download_spec.rb +2 -2
  266. data/spec/lib/geoblacklight/download/shapefile_download_spec.rb +2 -2
  267. data/spec/lib/geoblacklight/download_spec.rb +15 -6
  268. data/spec/lib/geoblacklight/geometry_spec.rb +1 -1
  269. data/spec/lib/geoblacklight/item_viewer_spec.rb +2 -2
  270. data/spec/lib/geoblacklight/metadata/base_spec.rb +1 -1
  271. data/spec/lib/geoblacklight/metadata/html_spec.rb +1 -1
  272. data/spec/lib/geoblacklight/metadata_spec.rb +1 -1
  273. data/spec/lib/geoblacklight/metadata_transformer/base_spec.rb +1 -1
  274. data/spec/lib/geoblacklight/metadata_transformer/fgdc_spec.rb +1 -1
  275. data/spec/lib/geoblacklight/metadata_transformer/iso19139_spec.rb +1 -1
  276. data/spec/lib/geoblacklight/metadata_transformer_spec.rb +1 -1
  277. data/spec/lib/geoblacklight/reference_spec.rb +1 -1
  278. data/spec/lib/geoblacklight/references_spec.rb +6 -4
  279. data/spec/lib/geoblacklight/relation/ancestors_spec.rb +10 -4
  280. data/spec/lib/geoblacklight/relation/descendants_spec.rb +9 -4
  281. data/spec/lib/geoblacklight/relation/relation_response_spec.rb +12 -15
  282. data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +1 -1
  283. data/spec/lib/geoblacklight/wms_layer_spec.rb +1 -1
  284. data/spec/models/concerns/geoblacklight/bbox_filter_query_spec.rb +20 -11
  285. data/spec/models/concerns/geoblacklight/solr_document/citation_spec.rb +1 -1
  286. data/spec/models/concerns/geoblacklight/solr_document/finder_spec.rb +1 -1
  287. data/spec/models/concerns/geoblacklight/solr_document/inspection_spec.rb +1 -1
  288. data/spec/models/concerns/geoblacklight/solr_document_spec.rb +4 -39
  289. data/spec/models/concerns/geoblacklight/suppressed_records_search_behavior_spec.rb +2 -2
  290. data/spec/routing/catalog_routing_spec.rb +1 -1
  291. data/spec/spec_helper.rb +4 -16
  292. data/spec/tasks/geoblacklight_spec.rb +1 -1
  293. data/spec/test_app_templates/lib/generators/test_app_generator.rb +4 -3
  294. metadata +40 -194
  295. data/Procfile.dev +0 -3
  296. data/app/assets/stylesheets/geoblacklight/geoblacklight.scss +0 -2
  297. data/app/assets/stylesheets/geoblacklight/modules/_base.scss +0 -31
  298. data/app/assets/stylesheets/geoblacklight/modules/_blacklight_overrides.scss +0 -40
  299. data/app/assets/stylesheets/geoblacklight/modules/_styles.scss +0 -9
  300. data/app/assets/stylesheets/geoblacklight/modules/downloads.scss +0 -62
  301. data/app/assets/stylesheets/geoblacklight/modules/geosearch.scss +0 -23
  302. data/app/assets/stylesheets/geoblacklight/modules/home.scss +0 -13
  303. data/app/assets/stylesheets/geoblacklight/modules/icon-customization.scss +0 -116
  304. data/app/assets/stylesheets/geoblacklight/modules/index_maps.scss +0 -61
  305. data/app/assets/stylesheets/geoblacklight/modules/item.scss +0 -78
  306. data/app/assets/stylesheets/geoblacklight/modules/layer_opacity.scss +0 -87
  307. data/app/assets/stylesheets/geoblacklight/modules/leaflet.scss +0 -4
  308. data/app/assets/stylesheets/geoblacklight/modules/metadata.scss +0 -31
  309. data/app/assets/stylesheets/geoblacklight/modules/metadata_content.scss +0 -43
  310. data/app/assets/stylesheets/geoblacklight/modules/metadata_markup.scss +0 -9
  311. data/app/assets/stylesheets/geoblacklight/modules/metadata_missing.scss +0 -7
  312. data/app/assets/stylesheets/geoblacklight/modules/modal.scss +0 -5
  313. data/app/assets/stylesheets/geoblacklight/modules/results.scss +0 -60
  314. data/app/assets/stylesheets/geoblacklight/modules/search_widgets.scss +0 -5
  315. data/app/assets/stylesheets/geoblacklight/modules/sidebar.scss +0 -42
  316. data/app/assets/stylesheets/geoblacklight/modules/toolbar.scss +0 -34
  317. data/app/assets/stylesheets/geoblacklight/modules/web_services.scss +0 -5
  318. data/app/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component.rb +0 -46
  319. data/app/components/blacklight/icons/arizona_component.rb +0 -24
  320. data/app/components/blacklight/icons/baruch_cuny_component.rb +0 -23
  321. data/app/components/blacklight/icons/bookmark_component.rb +0 -23
  322. data/app/components/blacklight/icons/circle_info_solid_component.rb +0 -23
  323. data/app/components/blacklight/icons/columbia_component.rb +0 -23
  324. data/app/components/blacklight/icons/cornell_component.rb +0 -25
  325. data/app/components/blacklight/icons/george_mason_component.rb +0 -24
  326. data/app/components/blacklight/icons/harvard_component.rb +0 -23
  327. data/app/components/blacklight/icons/indiana_component.rb +0 -23
  328. data/app/components/blacklight/icons/lewis_clark_component.rb +0 -25
  329. data/app/components/blacklight/icons/massgis_component.rb +0 -23
  330. data/app/components/blacklight/icons/michigan_state_university_component.rb +0 -25
  331. data/app/components/blacklight/icons/mit_component.rb +0 -23
  332. data/app/components/blacklight/icons/northwestern_university_component.rb +0 -24
  333. data/app/components/blacklight/icons/nyu_component.rb +0 -26
  334. data/app/components/blacklight/icons/pennsylvania_state_university_component.rb +0 -25
  335. data/app/components/blacklight/icons/princeton_component.rb +0 -23
  336. data/app/components/blacklight/icons/purdue_university_component.rb +0 -25
  337. data/app/components/blacklight/icons/rutgers_component.rb +0 -25
  338. data/app/components/blacklight/icons/sms_component.rb +0 -23
  339. data/app/components/blacklight/icons/stanford_component.rb +0 -23
  340. data/app/components/blacklight/icons/texas_component.rb +0 -23
  341. data/app/components/blacklight/icons/the_ohio_state_university_component.rb +0 -26
  342. data/app/components/blacklight/icons/tufts_component.rb +0 -23
  343. data/app/components/blacklight/icons/ucla_component.rb +0 -23
  344. data/app/components/blacklight/icons/university_of_california_berkeley_component.rb +0 -24
  345. data/app/components/blacklight/icons/university_of_chicago_component.rb +0 -25
  346. data/app/components/blacklight/icons/university_of_colorado_boulder_component.rb +0 -26
  347. data/app/components/blacklight/icons/university_of_illinois_urbana_champaign_component.rb +0 -25
  348. data/app/components/blacklight/icons/university_of_iowa_component.rb +0 -24
  349. data/app/components/blacklight/icons/university_of_maryland_component.rb +0 -24
  350. data/app/components/blacklight/icons/university_of_michigan_component.rb +0 -24
  351. data/app/components/blacklight/icons/university_of_minnesota_component.rb +0 -24
  352. data/app/components/blacklight/icons/university_of_nebraska_lincoln_component.rb +0 -27
  353. data/app/components/blacklight/icons/university_of_wisconsin_madison_component.rb +0 -24
  354. data/app/components/blacklight/icons/uva_component.rb +0 -23
  355. data/app/components/geoblacklight/icon_facet_item_component.rb +0 -33
  356. data/app/components/geoblacklight/web_services_link_component.html.erb +0 -3
  357. data/bin/vite +0 -29
  358. data/config/initializers/new_gbl_settings_defaults_4.1.yml +0 -104
  359. data/lib/generators/geoblacklight/assets/importmap_generator.rb +0 -73
  360. data/lib/generators/geoblacklight/assets/vite_generator.rb +0 -89
  361. data/lib/generators/geoblacklight/templates/assets/_customizations.scss +0 -23
  362. data/lib/generators/geoblacklight/templates/assets/application.js +0 -17
  363. data/lib/generators/geoblacklight/templates/assets/application.scss +0 -9
  364. data/lib/generators/geoblacklight/templates/assets/geoblacklight.scss +0 -11
  365. data/lib/generators/geoblacklight/templates/base.html.erb +0 -46
  366. data/lib/generators/geoblacklight/templates/vite.config.ts +0 -23
  367. data/lib/generators/geoblacklight/templates/vite.json +0 -16
  368. data/lib/geoblacklight/deprecated_configuration.rb +0 -665
  369. data/schema/geoblacklight-schema-1.0.json +0 -214
  370. data/solr/conf/xslt/example.xsl +0 -132
  371. data/solr/conf/xslt/example_atom.xsl +0 -67
  372. data/solr/conf/xslt/example_rss.xsl +0 -66
  373. data/solr/conf/xslt/luke.xsl +0 -337
  374. data/spec/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component_spec.rb +0 -15
  375. data/spec/components/blacklight/icons/arizona_component_spec.rb +0 -15
  376. data/spec/components/blacklight/icons/arrow_circle_down_component_spec.rb +0 -15
  377. data/spec/components/blacklight/icons/baruch_cuny_component_spec.rb +0 -15
  378. data/spec/components/blacklight/icons/book_component_spec.rb +0 -15
  379. data/spec/components/blacklight/icons/bookmark_component_spec.rb +0 -15
  380. data/spec/components/blacklight/icons/cd_rom_component_spec.rb +0 -15
  381. data/spec/components/blacklight/icons/child_item_component_spec.rb +0 -15
  382. data/spec/components/blacklight/icons/circle_info_solid_component_spec.rb +0 -15
  383. data/spec/components/blacklight/icons/citation_component_spec.rb +0 -15
  384. data/spec/components/blacklight/icons/collection_component_spec.rb +0 -15
  385. data/spec/components/blacklight/icons/collections_component_spec.rb +0 -15
  386. data/spec/components/blacklight/icons/columbia_component_spec.rb +0 -15
  387. data/spec/components/blacklight/icons/cornell_component_spec.rb +0 -15
  388. data/spec/components/blacklight/icons/datasets_component_spec.rb +0 -15
  389. data/spec/components/blacklight/icons/dvd_rom_component_spec.rb +0 -15
  390. data/spec/components/blacklight/icons/email_component_spec.rb +0 -15
  391. data/spec/components/blacklight/icons/esri_globe_component_spec.rb +0 -15
  392. data/spec/components/blacklight/icons/fire_solid_component_spec.rb +0 -15
  393. data/spec/components/blacklight/icons/george_mason_component_spec.rb +0 -15
  394. data/spec/components/blacklight/icons/globe_component_spec.rb +0 -15
  395. data/spec/components/blacklight/icons/harvard_component_spec.rb +0 -15
  396. data/spec/components/blacklight/icons/home_component_spec.rb +0 -15
  397. data/spec/components/blacklight/icons/iiif_drag_drop_component_spec.rb +0 -15
  398. data/spec/components/blacklight/icons/image_component_spec.rb +0 -15
  399. data/spec/components/blacklight/icons/imagery_component_spec.rb +0 -15
  400. data/spec/components/blacklight/icons/indiana_component_spec.rb +0 -15
  401. data/spec/components/blacklight/icons/leaf_component_spec.rb +0 -15
  402. data/spec/components/blacklight/icons/lewis_clark_component_spec.rb +0 -15
  403. data/spec/components/blacklight/icons/lightbulb_solid_component_spec.rb +0 -15
  404. data/spec/components/blacklight/icons/line_component_spec.rb +0 -15
  405. data/spec/components/blacklight/icons/map_component_spec.rb +0 -15
  406. data/spec/components/blacklight/icons/map_marker_component_spec.rb +0 -15
  407. data/spec/components/blacklight/icons/maps_component_spec.rb +0 -15
  408. data/spec/components/blacklight/icons/massgis_component_spec.rb +0 -15
  409. data/spec/components/blacklight/icons/metadata_component_spec.rb +0 -15
  410. data/spec/components/blacklight/icons/michigan_state_university_component_spec.rb +0 -15
  411. data/spec/components/blacklight/icons/mit_component_spec.rb +0 -15
  412. data/spec/components/blacklight/icons/mixed_component_spec.rb +0 -15
  413. data/spec/components/blacklight/icons/multilinestring_component_spec.rb +0 -15
  414. data/spec/components/blacklight/icons/multipoint_component_spec.rb +0 -15
  415. data/spec/components/blacklight/icons/multipolygon_component_spec.rb +0 -15
  416. data/spec/components/blacklight/icons/northwestern_university_component_spec.rb +0 -15
  417. data/spec/components/blacklight/icons/nyu_component_spec.rb +0 -15
  418. data/spec/components/blacklight/icons/pagelines_brands_component_spec.rb +0 -15
  419. data/spec/components/blacklight/icons/paper_map_component_spec.rb +0 -15
  420. data/spec/components/blacklight/icons/parent_item_component_spec.rb +0 -15
  421. data/spec/components/blacklight/icons/pennsylvania_state_university_component_spec.rb +0 -15
  422. data/spec/components/blacklight/icons/point_component_spec.rb +0 -15
  423. data/spec/components/blacklight/icons/polygon_component_spec.rb +0 -15
  424. data/spec/components/blacklight/icons/polyline_component_spec.rb +0 -15
  425. data/spec/components/blacklight/icons/princeton_component_spec.rb +0 -15
  426. data/spec/components/blacklight/icons/public_component_spec.rb +0 -15
  427. data/spec/components/blacklight/icons/purdue_university_component_spec.rb +0 -15
  428. data/spec/components/blacklight/icons/raster_component_spec.rb +0 -15
  429. data/spec/components/blacklight/icons/restricted_component_spec.rb +0 -15
  430. data/spec/components/blacklight/icons/rutgers_component_spec.rb +0 -15
  431. data/spec/components/blacklight/icons/sms_component_spec.rb +0 -15
  432. data/spec/components/blacklight/icons/stanford_component_spec.rb +0 -15
  433. data/spec/components/blacklight/icons/table_component_spec.rb +0 -15
  434. data/spec/components/blacklight/icons/tags_component_spec.rb +0 -15
  435. data/spec/components/blacklight/icons/texas_component_spec.rb +0 -15
  436. data/spec/components/blacklight/icons/the_ohio_state_university_component_spec.rb +0 -15
  437. data/spec/components/blacklight/icons/triangle_exclamation_solid_component_spec.rb +0 -15
  438. data/spec/components/blacklight/icons/tufts_component_spec.rb +0 -15
  439. data/spec/components/blacklight/icons/ucla_component_spec.rb +0 -15
  440. data/spec/components/blacklight/icons/university_of_california_berkeley_component_spec.rb +0 -15
  441. data/spec/components/blacklight/icons/university_of_chicago_component_spec.rb +0 -15
  442. data/spec/components/blacklight/icons/university_of_colorado_boulder_component_spec.rb +0 -15
  443. data/spec/components/blacklight/icons/university_of_illinois_urbana_champaign_component_spec.rb +0 -15
  444. data/spec/components/blacklight/icons/university_of_iowa_component_spec.rb +0 -15
  445. data/spec/components/blacklight/icons/university_of_maryland_component_spec.rb +0 -15
  446. data/spec/components/blacklight/icons/university_of_michigan_component_spec.rb +0 -15
  447. data/spec/components/blacklight/icons/university_of_minnesota_component_spec.rb +0 -15
  448. data/spec/components/blacklight/icons/university_of_nebraska_lincoln_component_spec.rb +0 -15
  449. data/spec/components/blacklight/icons/university_of_wisconsin_madison_component_spec.rb +0 -15
  450. data/spec/components/blacklight/icons/uva_component_spec.rb +0 -15
  451. data/spec/components/blacklight/icons/web_services_component_spec.rb +0 -15
  452. data/spec/components/blacklight/icons/websites_component_spec.rb +0 -15
  453. data/spec/components/geoblacklight/icon_facet_item_component_spec.rb +0 -18
  454. data/spec/config/initializers/rails_config_spec.rb +0 -16
  455. data/spec/fixtures/solr_documents/public_direct_download.json +0 -62
  456. data/spec/lib/geoblacklight/deprecated_configuration_spec.rb +0 -680
  457. data/spec/solr_config_spec.rb +0 -41
  458. data/spec/support/backport_test_helpers.rb +0 -47
  459. data/spec/support/view_component_capybara_test_helpers.rb +0 -8
  460. data/vite.config.ts +0 -32
  461. /data/app/assets/images/{blacklight → geoblacklight}/logo.svg +0 -0
@@ -1,11 +1,11 @@
1
- import { latLng, latLngBounds } from "leaflet";
1
+ import { latLng, latLngBounds } from "leaflet"
2
2
 
3
3
  export const parseWmtsCapabilities = (wmtsCapabilities, layerId) => {
4
4
  const parser = new DOMParser(),
5
5
  doc = parser.parseFromString(wmtsCapabilities, "application/xml"),
6
6
  layers = doc.getElementsByTagName("Layer"),
7
7
  selectedLayer = findLayer(layers, layerId),
8
- resourceElement = selectedLayer.getElementsByTagName("ResourceURL")[0];
8
+ resourceElement = selectedLayer.getElementsByTagName("ResourceURL")[0]
9
9
 
10
10
  // Generate URL with Leaflet.TileLayer URL template formatting
11
11
  const tileURL = resourceElement
@@ -14,20 +14,20 @@ export const parseWmtsCapabilities = (wmtsCapabilities, layerId) => {
14
14
  .replace("{TileMatrixSet}", getTileMatrixSet(selectedLayer))
15
15
  .replace("TileMatrix", "z")
16
16
  .replace("TileCol", "x")
17
- .replace("TileRow", "y");
17
+ .replace("TileRow", "y")
18
18
 
19
- return { url: tileURL, bounds: getBounds(selectedLayer) };
19
+ return { url: tileURL, bounds: getBounds(selectedLayer) }
20
20
  }
21
21
 
22
22
  const findLayer = (layers, layerId) => {
23
23
  if (layers.length === 1) {
24
- return layers[0];
24
+ return layers[0]
25
25
  } else {
26
26
  for (let i = 0; i < layers.length; i++) {
27
- const ids = layers[i].getElementsByTagName("ows:Identifier");
27
+ const ids = layers[i].getElementsByTagName("ows:Identifier")
28
28
  for (let x = 0; x < ids.length; x++) {
29
29
  if (ids[x].textContent === layerId) {
30
- return layers[i];
30
+ return layers[i]
31
31
  }
32
32
  }
33
33
  }
@@ -35,25 +35,23 @@ const findLayer = (layers, layerId) => {
35
35
  }
36
36
 
37
37
  const getStyle = (layer) => {
38
- const styleElement = layer.getElementsByTagName("Style")[0];
39
- return styleElement
40
- ? styleElement.getElementsByTagName("ows:Identifier")[0].textContent
41
- : undefined;
38
+ const styleElement = layer.getElementsByTagName("Style")[0]
39
+ return styleElement ? styleElement.getElementsByTagName("ows:Identifier")[0].textContent : undefined
42
40
  }
43
41
 
44
42
  const getTileMatrixSet = (layer) => {
45
- const tileMatrixElement = layer.getElementsByTagName("TileMatrixSet")[0];
46
- return tileMatrixElement ? tileMatrixElement.textContent : undefined;
43
+ const tileMatrixElement = layer.getElementsByTagName("TileMatrixSet")[0]
44
+ return tileMatrixElement ? tileMatrixElement.textContent : undefined
47
45
  }
48
46
 
49
47
  const getBounds = (layer) => {
50
48
  const lcElement = layer.getElementsByTagName("ows:LowerCorner")[0],
51
- ucElement = layer.getElementsByTagName("ows:UpperCorner")[0];
49
+ ucElement = layer.getElementsByTagName("ows:UpperCorner")[0]
52
50
  if (lcElement && ucElement) {
53
51
  const lc = lcElement.textContent.split(" "),
54
52
  uc = ucElement.textContent.split(" "),
55
53
  corner1 = latLng(lc[1], lc[0]),
56
- corner2 = latLng(uc[1], uc[0]);
57
- return latLngBounds(corner1, corner2);
54
+ corner2 = latLng(uc[1], uc[0])
55
+ return latLngBounds(corner1, corner2)
58
56
  }
59
57
  }
@@ -2,11 +2,11 @@
2
2
  * If complex logic is needed for a certain layer type, it is broken out into its own file,
3
3
  * such as layer_wmts.js for WMTS layers and layer_index_map.js for index map layers, at the same directory level as this file.
4
4
  */
5
- import { tileLayer, geoJson, circleMarker } from "leaflet";
6
- import { dynamicMapLayer, featureLayer, tiledMapLayer } from "esri-leaflet";
7
- import { parseWmtsCapabilities } from "geoblacklight/leaflet/layer_wmts";
8
- import { availabilityStyle, updateInformation } from "geoblacklight/leaflet/layer_index_map";
9
- import { getTileJsonBounds } from "geoblacklight/leaflet/utils";
5
+ import { tileLayer, geoJson, circleMarker } from "leaflet"
6
+ import { dynamicMapLayer, featureLayer, tiledMapLayer } from "esri-leaflet"
7
+ import { parseWmtsCapabilities } from "geoblacklight/leaflet/layer_wmts"
8
+ import { availabilityStyle, updateInformation } from "geoblacklight/leaflet/layer_index_map"
9
+ import { getTileJsonBounds } from "geoblacklight/leaflet/utils"
10
10
 
11
11
  // Create a leaflet tile layer for WMS
12
12
  export const wmsLayer = (url, { layerId, opacity, detectRetina }) => {
@@ -18,50 +18,48 @@ export const wmsLayer = (url, { layerId, opacity, detectRetina }) => {
18
18
  CRS: "EPSG:3857",
19
19
  opacity,
20
20
  detectRetina,
21
- });
22
- };
21
+ })
22
+ }
23
23
 
24
24
  // Fetch a WMTSCapabilities document and create a leaflet tileLayer using it
25
25
  export const wmtsLayer = async (url, { opacity, detectRetina, layerId }) => {
26
- const response = await fetch(url);
27
- if (!response.ok)
28
- throw new Error("Unable to fetch WMTSCapabilities document", url);
26
+ const response = await fetch(url)
27
+ if (!response.ok) throw new Error("Unable to fetch WMTSCapabilities document", url)
29
28
 
30
- const wmtsCapabilities = await response.text();
31
- if (!wmtsCapabilities)
32
- throw new Error("Unable to parse WMTSCapabilities document", url);
29
+ const wmtsCapabilities = await response.text()
30
+ if (!wmtsCapabilities) throw new Error("Unable to parse WMTSCapabilities document", url)
33
31
 
34
- const tileInfo = parseWmtsCapabilities(wmtsCapabilities, layerId);
35
- const options = tileInfo.bounds ? { bounds: tileInfo.bounds } : {};
32
+ const tileInfo = parseWmtsCapabilities(wmtsCapabilities, layerId)
33
+ const options = tileInfo.bounds ? { bounds: tileInfo.bounds } : {}
36
34
  return tileLayer(tileInfo.url, {
37
35
  opacity,
38
36
  detectRetina,
39
37
  ...options,
40
- });
41
- };
38
+ })
39
+ }
42
40
 
43
41
  // Create an ESRI-leaflet dynamic map layer
44
42
  export const esriDynamicMapLayer = (url, { opacity, detectRetina }) => {
45
43
  // Remove any trailing slash and get the last segment from the URL
46
- url = url.replace(/\/$/, "");
47
- const pathArray = url.split("/");
48
- const lastSegment = pathArray[pathArray.length - 1];
44
+ url = url.replace(/\/$/, "")
45
+ const pathArray = url.split("/")
46
+ const lastSegment = pathArray[pathArray.length - 1]
49
47
 
50
48
  // If the last segment is an integer it's the layer ID
51
- let layerId;
49
+ let layerId
52
50
  if (Number(lastSegment) === parseInt(lastSegment, 10)) {
53
- layerId = lastSegment;
54
- url = url.slice(0, -(lastSegment.length + 1));
51
+ layerId = lastSegment
52
+ url = url.slice(0, -(lastSegment.length + 1))
55
53
  }
56
54
 
57
- const options = layerId ? { layers: [layerId] } : {};
55
+ const options = layerId ? { layers: [layerId] } : {}
58
56
  return dynamicMapLayer({
59
57
  url,
60
58
  opacity,
61
59
  detectRetina,
62
60
  ...options,
63
- });
64
- };
61
+ })
62
+ }
65
63
 
66
64
  // Create an ESRI-leaflet feature layer
67
65
  export const esriFeatureLayer = (url, { opacity, detectRetina }) => {
@@ -69,85 +67,80 @@ export const esriFeatureLayer = (url, { opacity, detectRetina }) => {
69
67
  url,
70
68
  opacity,
71
69
  detectRetina,
72
- });
73
- };
70
+ })
71
+ }
74
72
 
75
73
  // Create an ESRI tiled map layer
76
74
  export const esriTiledMapLayer = async (url, options) => {
77
- const response = await fetch(url);
75
+ const response = await fetch(url)
78
76
 
79
- if (!response.ok)
80
- throw new Error("Unable to fetch EsriTiledMapLayer document", url);
77
+ if (!response.ok) throw new Error("Unable to fetch EsriTiledMapLayer document", url)
81
78
 
82
- let layerInfo;
79
+ let layerInfo
83
80
  try {
84
- layerInfo = await response.json();
81
+ layerInfo = await response.json()
85
82
  } catch (error) {
86
- throw new Error("Unable to parse TiledMapLayer document", response);
83
+ throw new Error("Unable to parse TiledMapLayer document", response)
87
84
  }
88
85
 
89
86
  // For an example of tiledMapLayer data see nyu-test-soil-survey-map
90
87
  // We aren't sure what the json structure looks like
91
88
  // This is not rendering anything (and wasn't before we made changes) and the keys are not even present
92
- // Check out this json: https://dnrmaps.wi.gov/arcgis2/rest/services/TS_AGOL_STAGING_SERVICES/EN_AGOL_STAGING_SurfaceWater_WTM/MapServer/2?f=pjson -- wrong protocol, now a feature map??
93
- if (
94
- layerInfo.singleFusedMapCache === true &&
95
- layerInfo.spatialReference.wkid === 102100
96
- ) {
97
- return tiledMapLayer({ url, ...options });
89
+ // Check out this json: https://dnrmaps.wi.gov/arcgis2/rest/services/TS_AGOL_STAGING_SERVICES/EN_AGOL_STAGING_SurfaceWater_WTM/MapServer/2?f=pjson -- wrong protocol, now a feature map??
90
+ if (layerInfo.singleFusedMapCache === true && layerInfo.spatialReference.wkid === 102100) {
91
+ return tiledMapLayer({ url, ...options })
98
92
  }
99
- };
93
+ }
100
94
 
101
- // Create a leaflet tile layer
95
+ // Create a leaflet tile layer
102
96
  export const tileJsonLayer = async (url, options) => {
103
- const response = await fetch(url);
97
+ const response = await fetch(url)
104
98
 
105
99
  if (!response.ok) {
106
- throw new Error("Unable to fetch TiledJson document", url);
100
+ throw new Error("Unable to fetch TiledJson document", url)
107
101
  }
108
102
 
109
- const layerInfo = await response.json();
103
+ const layerInfo = await response.json()
110
104
 
111
- const bounds = getTileJsonBounds(layerInfo);
112
- if (bounds) options.bounds = bounds;
113
- const tileUrl = layerInfo.tiles[0];
114
- return tileLayer(tileUrl, options);
115
- };
105
+ const bounds = getTileJsonBounds(layerInfo)
106
+ if (bounds) options.bounds = bounds
107
+ const tileUrl = layerInfo.tiles[0]
108
+ return tileLayer(tileUrl, options)
109
+ }
116
110
 
117
111
  // Fetch an indexMapLayer document and create a leaflet geoJSON layer
118
112
  export const indexMapLayer = async (url, leafletOptions) => {
119
- let prevLayer = null;
113
+ let prevLayer = null
120
114
 
121
- const response = await fetch(url);
115
+ const response = await fetch(url)
122
116
 
123
117
  if (!response.ok) {
124
- throw new Error("Unable to fetch indexMapLayer document", url);
118
+ throw new Error("Unable to fetch indexMapLayer document", url)
125
119
  }
126
120
 
127
- const data = await response.json();
121
+ const data = await response.json()
128
122
 
129
123
  // name the const geoJSONLayer; we access it self-referentially within the method
130
124
  const geoJSONLayer = geoJson(data, {
131
- style: (feature) =>
132
- availabilityStyle(feature.properties.available, leafletOptions),
125
+ style: (feature) => availabilityStyle(feature.properties.available, leafletOptions),
133
126
  onEachFeature: (feature, layer) => {
134
127
  if (feature.properties.label !== null) {
135
- layer.bindTooltip(feature.properties.label);
128
+ layer.bindTooltip(feature.properties.label)
136
129
  }
137
130
  if (feature.properties.available !== null) {
138
131
  layer.on("click", (e) => {
139
- layer.setStyle(leafletOptions.LAYERS.INDEX.SELECTED);
132
+ layer.setStyle(leafletOptions.layers.index.SELECTED)
140
133
  if (prevLayer !== null) {
141
- leafletOptions.opacity = layer.options.fillOpacity;
142
- geoJSONLayer.resetStyle(prevLayer);
134
+ leafletOptions.opacity = layer.options.fillOpacity
135
+ geoJSONLayer.resetStyle(prevLayer)
143
136
  }
144
- prevLayer = layer;
145
- updateInformation(feature.properties);
146
- });
137
+ prevLayer = layer
138
+ updateInformation(feature.properties)
139
+ })
147
140
  }
148
141
  },
149
142
  pointToLayer: (feature, latlng) => circleMarker(latlng),
150
- });
143
+ })
151
144
 
152
- return geoJSONLayer;
153
- };
145
+ return geoJSONLayer
146
+ }
@@ -1,83 +1,77 @@
1
- import { latLngBounds, Util, geoJSON, latLng } from "leaflet";
1
+ import { latLngBounds, Util, geoJSON, latLng } from "leaflet"
2
2
 
3
3
  export const bboxToBounds = (bbox) => {
4
- bbox = bbox.split(" ");
4
+ bbox = bbox.split(" ")
5
5
  if (bbox.length === 4) {
6
6
  return latLngBounds([
7
7
  [parseFloat(bbox[1]), parseFloat(bbox[0])],
8
8
  [parseFloat(bbox[3]), parseFloat(bbox[2])],
9
- ]);
9
+ ])
10
10
  } else {
11
- throw new Error("Invalid bounding box string");
11
+ throw new Error("Invalid bounding box string")
12
12
  }
13
- };
13
+ }
14
14
 
15
15
  export const boundsToBbox = (bounds) => {
16
16
  let sw = bounds.getSouthWest(),
17
- ne = bounds.getNorthEast();
17
+ ne = bounds.getNorthEast()
18
18
 
19
19
  if (ne.lng - sw.lng >= 360) {
20
- sw.lng = -180;
21
- ne.lng = 180;
20
+ sw.lng = -180
21
+ ne.lng = 180
22
22
  }
23
- sw = sw.wrap();
24
- ne = ne.wrap();
25
- return [
26
- Util.formatNum(sw.lng, 6),
27
- Util.formatNum(sw.lat, 6),
28
- Util.formatNum(ne.lng, 6),
29
- Util.formatNum(ne.lat, 6),
30
- ];
31
- };
23
+ sw = sw.wrap()
24
+ ne = ne.wrap()
25
+ return [Util.formatNum(sw.lng, 6), Util.formatNum(sw.lat, 6), Util.formatNum(ne.lng, 6), Util.formatNum(ne.lat, 6)]
26
+ }
32
27
 
33
28
  export const geoJSONToBounds = (geojson) => {
34
- const layer = geoJSON(geojson);
35
- return layer.getBounds();
36
- };
29
+ const layer = geoJSON(geojson)
30
+ return layer.getBounds()
31
+ }
37
32
 
38
33
  export const debounce = (fn, delay) => {
39
- let timeout = null;
34
+ let timeout = null
40
35
  return function (...args) {
41
- clearTimeout(timeout);
36
+ clearTimeout(timeout)
42
37
  timeout = setTimeout(() => {
43
- fn.apply(this, args);
44
- }, delay);
45
- };
46
- };
38
+ fn.apply(this, args)
39
+ }, delay)
40
+ }
41
+ }
47
42
 
48
43
  export const getTileJsonBounds = (doc) => {
49
- const bounds = doc.bounds;
44
+ const bounds = doc.bounds
50
45
  if (bounds) {
51
46
  const corner1 = latLng(bounds[1], bounds[0]),
52
- corner2 = latLng(bounds[3], bounds[2]);
53
- return latLngBounds(corner1, corner2);
47
+ corner2 = latLng(bounds[3], bounds[2])
48
+ return latLngBounds(corner1, corner2)
54
49
  }
55
- };
50
+ }
56
51
 
57
52
  export const appendLoadingMessage = () => {
58
53
  const spinner = `<tbody class="attribute-table-body"><tr><td colspan="2">
59
54
  <span id="attribute-table">
60
55
  <div class="spinner-border" role="status"><span class="visually-hidden">Inspecting</span></div>
61
56
  </span>
62
- </td></tr></tbody>`;
57
+ </td></tr></tbody>`
63
58
 
64
- document.querySelector(".attribute-table-body").innerHTML = spinner;
65
- };
59
+ document.querySelector(".attribute-table-body").innerHTML = spinner
60
+ }
66
61
 
67
62
  export const appendErrorMessage = () => {
68
- document.querySelector(
69
- ".attribute-table-body"
70
- ).innerHTML = `<tbody class="attribute-table-body">
71
- <tr><td colspan="2">Could not find that feature</td></tr></tbody>`;
72
- };
63
+ document.querySelector(".attribute-table-body").innerHTML = `<tbody class="attribute-table-body">
64
+ <tr><td colspan="2">Could not find that feature</td></tr></tbody>`
65
+ }
73
66
 
74
67
  // Looks for strings that could be URLs and wraps them in <a> tags
75
68
  export const linkify = (str) => {
76
- if (!str) return '';
77
- const urlRegEx = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+~%\/\.\w\-]*)?\??(?:[\-\+=&;%@\.\w]*)#?(?:[\.\!\/\\\w]*))?)/g;
78
- return str.toString().replace(urlRegEx, '<a href=\'$1\'>$1</a>');
69
+ if (!str) return ""
70
+ const urlRegEx =
71
+ /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+~%\/\.\w\-]*)?\??(?:[\-\+=&;%@\.\w]*)#?(?:[\.\!\/\\\w]*))?)/g
72
+ return str.toString().replace(urlRegEx, "<a href='$1'>$1</a>")
79
73
  }
80
74
 
81
75
  export const getLayerOpacity = (layer) => {
82
- return layer.options.fillOpacity ? layer.options.fillOpacity : layer.options.opacity;
83
- }
76
+ return layer.options.fillOpacity ? layer.options.fillOpacity : layer.options.opacity
77
+ }
@@ -1,27 +1,55 @@
1
1
  export default {
2
2
  darkMatter: {
3
- url:'https://{a-d}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png',
4
- attributions: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://carto.com/attributionss">Carto</a>',
5
- maxZoom: 18
3
+ url: "https://{a-d}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png",
4
+ attributions:
5
+ '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://carto.com/attributionss">Carto</a>',
6
+ maxZoom: 18,
6
7
  },
7
8
  positron: {
8
- url: 'https://{a-d}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',
9
- attributions: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://carto.com/attributionss">Carto</a>',
10
- maxZoom: 18
9
+ url: "https://{a-d}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",
10
+ attributions:
11
+ '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://carto.com/attributionss">Carto</a>',
12
+ maxZoom: 18,
11
13
  },
12
14
  positronLite: {
13
- url: 'https://{a-d}.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}.png',
14
- attributions: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://carto.com/attributionss">Carto</a>',
15
- maxZoom: 18
15
+ url: "https://{a-d}.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}.png",
16
+ attributions:
17
+ '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://carto.com/attributionss">Carto</a>',
18
+ maxZoom: 18,
19
+ },
20
+ worldAntique: {
21
+ url: "https://cartocdn_{a-d}.global.ssl.fastly.net/base-antique/{z}/{x}/{y}.png",
22
+ attributions:
23
+ '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://carto.com/attributionss">Carto</a>',
24
+ maxZoom: 18,
25
+ },
26
+ worldEco: {
27
+ url: "https://cartocdn_{a-d}.global.ssl.fastly.net/base-eco/{z}/{x}/{y}.png",
28
+ attributions:
29
+ '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://carto.com/attributionss">Carto</a>',
30
+ maxZoom: 18,
31
+ },
32
+ flatBlue: {
33
+ url: "https://cartocdn_{a-d}.global.ssl.fastly.net/base-flatblue/{z}/{x}/{y}.png",
34
+ attributions:
35
+ '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://carto.com/attributionss">Carto</a>',
36
+ maxZoom: 18,
37
+ },
38
+ midnightCommander: {
39
+ url: "https://cartocdn_{a-d}.global.ssl.fastly.net/base-midnight/{z}/{x}/{y}.png",
40
+ attributions:
41
+ '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://carto.com/attributionss">Carto</a>',
42
+ maxZoom: 18,
16
43
  },
17
44
  openstreetmapHot: {
18
- url: 'https://{a-c}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',
19
- attributions: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>, Tiles courtesy of <a href="http://hot.openstreetmap.org/" target="_blank">Humanitarian OpenStreetMap Team</a>',
20
- maxZoom: 19
45
+ url: "https://{a-c}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png",
46
+ attributions:
47
+ '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>, Tiles courtesy of <a href="http://hot.openstreetmap.org/" target="_blank">Humanitarian OpenStreetMap Team</a>',
48
+ maxZoom: 19,
21
49
  },
22
50
  openstreetmapStandard: {
23
- url: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
51
+ url: "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
24
52
  attributions: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
25
- maxZoom: 19
26
- }
53
+ maxZoom: 19,
54
+ },
27
55
  }
@@ -1,44 +1,44 @@
1
- import { linkify } from "geoblacklight/leaflet/utils";
1
+ import { linkify } from "geoblacklight/leaflet/utils"
2
2
 
3
3
  export const pmTilesInspection = (map) => {
4
4
  // add crosshair class for map items
5
- map.on('pointermove', function(e){
6
- var pixel = map.getEventPixel(e.originalEvent);
7
- var hit = map.hasFeatureAtPixel(pixel);
8
- map.getViewport().style.cursor = hit ? 'crosshair' : '';
9
- });
5
+ map.on("pointermove", function (e) {
6
+ var pixel = map.getEventPixel(e.originalEvent)
7
+ var hit = map.hasFeatureAtPixel(pixel)
8
+ map.getViewport().style.cursor = hit ? "crosshair" : ""
9
+ })
10
10
 
11
- map.on('click', (event) => {
12
- const spinner = document.createElement("tbody");
13
- spinner.className = "attribute-table-body";
11
+ map.on("click", (event) => {
12
+ const spinner = document.createElement("tbody")
13
+ spinner.className = "attribute-table-body"
14
14
  spinner.innerHTML =
15
- '<tr><td colspan="2"><div class="spinner-border" role="status"><span class="visually-hidden">Inspecting</span></div></td></tr>';
16
- document.querySelector(".attribute-table-body").replaceWith(spinner);
15
+ '<tr><td colspan="2"><div class="spinner-border" role="status"><span class="visually-hidden">Inspecting</span></div></td></tr>'
16
+ document.querySelector(".attribute-table-body").replaceWith(spinner)
17
17
 
18
- const features = map.getFeaturesAtPixel(event.pixel);
18
+ const features = map.getFeaturesAtPixel(event.pixel)
19
19
  if (features.length == 0) {
20
20
  document.querySelector(".attribute-table-body").innerHTML =
21
- '<tr><td colspan="2">Could not find that feature</td></tr>';
22
- return;
21
+ '<tr><td colspan="2">Could not find that feature</td></tr>'
22
+ return
23
23
  }
24
24
 
25
- const properties = features[0].getProperties();
26
- populateAttributeTable(properties);
27
- });
25
+ const properties = features[0].getProperties()
26
+ populateAttributeTable(properties)
27
+ })
28
28
  }
29
29
 
30
30
  const populateAttributeTable = (properties) => {
31
- let html = '<tbody class="attribute-table-body">';
31
+ let html = '<tbody class="attribute-table-body">'
32
32
 
33
33
  // Step through properties and append to table
34
34
  Object.keys(properties).forEach((property) => {
35
35
  html += `<tr><td>${property}</td>
36
- <td>${linkify(properties[property])}</td></tr>`;
37
- });
38
- html += "</tbody>";
36
+ <td>${linkify(properties[property])}</td></tr>`
37
+ })
38
+ html += "</tbody>"
39
39
 
40
- const tableBody = document.querySelector(".attribute-table-body");
40
+ const tableBody = document.querySelector(".attribute-table-body")
41
41
  if (tableBody) {
42
- tableBody.outerHTML = html; // Replace existing table body with new content
42
+ tableBody.outerHTML = html // Replace existing table body with new content
43
43
  }
44
44
  }
@@ -1,13 +1,13 @@
1
- import VectorTile from "ol/layer/VectorTile";
2
- import { Style, Stroke, Fill, Circle } from "ol/style";
3
- import { PMTilesVectorSource } from "ol-pmtiles";
4
- import { useGeographic } from "ol/proj";
5
- import GeoTIFF from "ol/source/GeoTIFF";
6
- import WebGLTileLayer from "ol/layer/WebGLTile";
1
+ import VectorTile from "ol/layer/VectorTile"
2
+ import { Style, Stroke, Fill, Circle } from "ol/style"
3
+ import { PMTilesVectorSource } from "ol-pmtiles"
4
+ import { useGeographic } from "ol/proj"
5
+ import GeoTIFF from "ol/source/GeoTIFF"
6
+ import WebGLTileLayer from "ol/layer/WebGLTile"
7
7
 
8
8
  // Create a new PMTiles layer
9
9
  export const pmTilesLayer = (url) => {
10
- useGeographic();
10
+ useGeographic()
11
11
  return new VectorTile({
12
12
  declutter: true,
13
13
  source: new PMTilesVectorSource({ url }),
@@ -30,15 +30,15 @@ export const pmTilesLayer = (url) => {
30
30
  }),
31
31
  }),
32
32
  }),
33
- });
34
- };
33
+ })
34
+ }
35
35
 
36
36
  // Create a new cloud-optimized GeoTIFF (COG) layer
37
37
  export const cogLayer = (url) => {
38
38
  return new WebGLTileLayer({
39
39
  source: new GeoTIFF({
40
40
  sources: [{ url }],
41
- convertToRGB: "auto",
41
+ convertToRGB: true,
42
42
  }),
43
- });
44
- };
43
+ })
44
+ }
@@ -2,23 +2,21 @@
2
2
 
3
3
  module Geoblacklight
4
4
  class BboxFilterQuery
5
- def self.call(_search_builder, filter, solr_params)
6
- bbox_filter_query = Geoblacklight::BboxFilterQuery.new(filter, solr_params)
7
-
8
- [bbox_filter_query.intersects_filter, bbox_filter_query.relevancy_boost]
5
+ def call(filter, solr_params)
6
+ @filter = filter
7
+ [intersects_filter, relevancy_boost(solr_params)]
9
8
  end
10
9
 
11
- def initialize(filter, solr_params)
12
- @filter = filter
13
- @solr_params = solr_params
10
+ def initialize(blacklight_config:)
11
+ @blacklight_config = blacklight_config
14
12
  end
15
13
 
16
14
  def intersects_filter
17
15
  "#{@filter.key}:\"Intersects(#{envelope_bounds})\""
18
16
  end
19
17
 
20
- def relevancy_boost
21
- boosted_params = @solr_params.slice(:bq, :bf)
18
+ def relevancy_boost(solr_params)
19
+ boosted_params = solr_params.slice(:bq, :bf)
22
20
 
23
21
  boosted_params[:bq] ||= []
24
22
  boosted_params[:bq] << "#{@filter.key}:\"IsWithin(#{envelope_bounds})\"#{boost}"