geoblacklight 5.3.0 → 6.0.0.pre.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (453) 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 -1
  29. data/app/components/geoblacklight/document/sidebar_component.rb +0 -1
  30. data/app/components/geoblacklight/document_component.html.erb +1 -2
  31. data/app/components/geoblacklight/header_component.html.erb +4 -4
  32. data/app/components/geoblacklight/header_icons_component.rb +4 -2
  33. data/app/components/geoblacklight/homepage_feature_facet_component.html.erb +3 -7
  34. data/app/components/geoblacklight/homepage_feature_facet_component.rb +12 -3
  35. data/app/components/geoblacklight/iiif_drag_drop_component.html.erb +2 -2
  36. data/app/components/geoblacklight/iiif_drag_drop_component.rb +2 -2
  37. data/app/components/geoblacklight/index_map_inspect_component.html.erb +3 -3
  38. data/app/components/geoblacklight/index_map_legend_component.html.erb +7 -7
  39. data/app/components/geoblacklight/index_map_legend_component.rb +7 -0
  40. data/app/components/geoblacklight/item_map_viewer_component.rb +8 -4
  41. data/app/components/geoblacklight/location_leaflet_map_component.rb +28 -15
  42. data/app/components/geoblacklight/relations_component.html.erb +2 -2
  43. data/app/components/geoblacklight/search_result_component.html.erb +28 -26
  44. data/app/components/geoblacklight/search_result_component.rb +2 -2
  45. data/app/components/geoblacklight/static_map_component.rb +5 -4
  46. data/app/components/geoblacklight/viewer_help_text_component.html.erb +1 -1
  47. data/app/components/geoblacklight/viewer_help_text_component.rb +1 -1
  48. data/app/components/geoblacklight/web_services_component.html.erb +1 -1
  49. data/app/components/geoblacklight/web_services_component.rb +1 -1
  50. data/app/components/geoblacklight/web_services_default_component.html.erb +6 -6
  51. data/app/components/geoblacklight/web_services_link_component.rb +12 -9
  52. data/app/components/geoblacklight/web_services_wfs_component.html.erb +4 -4
  53. data/app/components/geoblacklight/web_services_wms_component.html.erb +4 -4
  54. data/app/controllers/download_controller.rb +0 -1
  55. data/app/controllers/wms_controller.rb +1 -1
  56. data/app/helpers/geoblacklight_helper.rb +0 -15
  57. data/app/javascript/geoblacklight/controllers/clipboard_controller.js +6 -6
  58. data/app/javascript/geoblacklight/controllers/downloads_controller.js +37 -29
  59. data/app/javascript/geoblacklight/controllers/leaflet_viewer_controller.js +108 -117
  60. data/app/javascript/geoblacklight/controllers/oembed_viewer_controller.js +5 -5
  61. data/app/javascript/geoblacklight/controllers/openlayers_viewer_controller.js +27 -30
  62. data/app/javascript/geoblacklight/controllers/search_results_controller.js +18 -18
  63. data/app/javascript/geoblacklight/core.js +35 -36
  64. data/app/javascript/geoblacklight/index.js +10 -10
  65. data/app/javascript/geoblacklight/initializers/metadata_download.js +23 -25
  66. data/app/javascript/geoblacklight/initializers/popovers.js +4 -4
  67. data/app/javascript/geoblacklight/initializers/relations.js +20 -20
  68. data/app/javascript/geoblacklight/initializers/tooltips.js +19 -23
  69. data/app/javascript/geoblacklight/initializers/truncation.js +18 -18
  70. data/app/javascript/geoblacklight/leaflet/basemaps.js +2 -3
  71. data/app/javascript/geoblacklight/leaflet/constants.js +7 -7
  72. data/app/javascript/geoblacklight/leaflet/controls/geosearch.js +80 -74
  73. data/app/javascript/geoblacklight/leaflet/controls/layer_opacity.js +74 -73
  74. data/app/javascript/geoblacklight/leaflet/controls/sidebar.js +31 -29
  75. data/app/javascript/geoblacklight/leaflet/controls/sleep.js +54 -51
  76. data/app/javascript/geoblacklight/leaflet/inspection.js +77 -68
  77. data/app/javascript/geoblacklight/leaflet/layer_index_map.js +74 -69
  78. data/app/javascript/geoblacklight/leaflet/layer_wmts.js +14 -16
  79. data/app/javascript/geoblacklight/leaflet/layers.js +59 -66
  80. data/app/javascript/geoblacklight/leaflet/utils.js +37 -43
  81. data/app/javascript/geoblacklight/openlayers/basemaps.js +35 -27
  82. data/app/javascript/geoblacklight/openlayers/inspection.js +23 -23
  83. data/app/javascript/geoblacklight/openlayers/layers.js +11 -11
  84. data/app/models/concerns/geoblacklight/bbox_filter_query.rb +7 -9
  85. data/app/models/concerns/geoblacklight/solr_document.rb +16 -39
  86. data/app/models/concerns/geoblacklight/suppressed_records_search_behavior.rb +3 -3
  87. data/app/views/catalog/_document_split.html.erb +3 -3
  88. data/app/views/catalog/_home_text.html.erb +22 -14
  89. data/app/views/catalog/_metadata.html.erb +1 -1
  90. data/app/views/catalog/_relations_container.html.erb +1 -1
  91. data/app/views/catalog/index.html.erb +0 -1
  92. data/app/views/catalog/metadata/_markup.html.erb +1 -2
  93. data/app/views/catalog/metadata/_missing.html.erb +2 -2
  94. data/app/views/catalog/web_services.html.erb +1 -1
  95. data/app/views/relation/index.html.erb +1 -1
  96. data/app/views/relation/index.json.jbuilder +1 -1
  97. data/config/initializers/rails_config.rb +0 -3
  98. data/config/locales/geoblacklight.en.yml +79 -78
  99. data/geoblacklight.gemspec +1 -2
  100. data/lib/generators/geoblacklight/assets_generator.rb +35 -26
  101. data/lib/generators/geoblacklight/install_generator.rb +6 -11
  102. data/lib/generators/geoblacklight/templates/assets/customizations.css +6 -0
  103. data/lib/generators/geoblacklight/templates/catalog_controller.rb +97 -73
  104. data/lib/generators/geoblacklight/templates/settings.yml +97 -113
  105. data/lib/geoblacklight/configuration/default_settings_builder.rb +18 -0
  106. data/lib/geoblacklight/configuration/display_note_shown_config.rb +13 -0
  107. data/lib/geoblacklight/configuration/fields_config.rb +51 -0
  108. data/lib/geoblacklight/configuration/leaflet_config.rb +73 -0
  109. data/lib/geoblacklight/configuration/leaflet_layers_config.rb +21 -0
  110. data/lib/geoblacklight/configuration/leaflet_sleep_config.rb +20 -0
  111. data/lib/geoblacklight/configuration/legacy_settings_builder.rb +94 -0
  112. data/lib/geoblacklight/configuration.rb +148 -0
  113. data/lib/geoblacklight/download.rb +2 -2
  114. data/lib/geoblacklight/engine.rb +7 -5
  115. data/lib/geoblacklight/metadata/base.rb +0 -2
  116. data/lib/geoblacklight/metadata_transformer.rb +0 -2
  117. data/lib/geoblacklight/references.rb +5 -4
  118. data/lib/geoblacklight/relation/ancestors.rb +3 -2
  119. data/lib/geoblacklight/relation/descendants.rb +2 -1
  120. data/lib/geoblacklight/relation/relation_response.rb +4 -4
  121. data/lib/geoblacklight/version.rb +1 -1
  122. data/lib/geoblacklight/wms_layer.rb +3 -3
  123. data/lib/geoblacklight.rb +7 -1
  124. data/package.json +10 -31
  125. data/schema/geoblacklight-schema-aardvark.json +1 -9
  126. data/schema/readme.md +3 -4
  127. data/solr/conf/_rest_managed.json +3 -2
  128. data/solr/conf/schema.xml +1 -1
  129. data/spec/components/geoblacklight/arcgis_component_spec.rb +6 -6
  130. data/spec/components/geoblacklight/attribute_table_component_spec.rb +6 -7
  131. data/spec/components/geoblacklight/citation_component_spec.rb +7 -4
  132. data/spec/components/geoblacklight/display_note_component_spec.rb +8 -8
  133. data/spec/components/geoblacklight/document_component_spec.rb +13 -13
  134. data/spec/components/geoblacklight/download_links_component_spec.rb +17 -14
  135. data/spec/components/geoblacklight/header_icons_component_spec.rb +6 -11
  136. data/spec/components/geoblacklight/homepage_feature_facet_component_spec.rb +22 -30
  137. data/spec/components/geoblacklight/iiif_drag_drop_component_spec.rb +3 -3
  138. data/spec/components/geoblacklight/index_map_legend_component_spec.rb +5 -18
  139. data/spec/components/geoblacklight/item_map_viewer_component_spec.rb +5 -5
  140. data/spec/components/geoblacklight/login_link_component_spec.rb +4 -5
  141. data/spec/components/geoblacklight/search_result_component_spec.rb +2 -6
  142. data/spec/components/geoblacklight/static_map_component_spec.rb +2 -2
  143. data/spec/components/geoblacklight/viewer_help_text_component_spec.rb +4 -6
  144. data/spec/components/geoblacklight/web_services_component_spec.rb +11 -10
  145. data/spec/controllers/catalog_controller_spec.rb +7 -7
  146. data/spec/controllers/download_controller_spec.rb +1 -1
  147. data/spec/controllers/relation_controller_spec.rb +1 -1
  148. data/spec/controllers/wms_controller_spec.rb +1 -1
  149. data/spec/features/axe_spec.rb +4 -4
  150. data/spec/features/bookmarks_spec.rb +1 -1
  151. data/spec/features/citations_spec.rb +1 -1
  152. data/spec/features/configurable_basemap_spec.rb +1 -1
  153. data/spec/features/data_dictionary_download_spec.rb +1 -1
  154. data/spec/features/download_layer_spec.rb +1 -1
  155. data/spec/features/empty_search_spec.rb +1 -1
  156. data/spec/features/esri_viewer_spec.rb +1 -1
  157. data/spec/features/exports_spec.rb +1 -1
  158. data/spec/features/full_screen_control_spec.rb +3 -10
  159. data/spec/features/help_text_spec.rb +1 -1
  160. data/spec/features/home_page_spec.rb +1 -1
  161. data/spec/features/index_map_spec.rb +3 -3
  162. data/spec/features/index_view_spec.rb +7 -7
  163. data/spec/features/layer_inspection_spec.rb +1 -1
  164. data/spec/features/layer_opacity_spec.rb +1 -1
  165. data/spec/features/layer_preview_spec.rb +1 -1
  166. data/spec/features/layer_with_no_references_spec.rb +1 -1
  167. data/spec/features/linkified_attribute_table_spec.rb +1 -1
  168. data/spec/features/metadata_panel_spec.rb +1 -1
  169. data/spec/features/missing_metadata_spec.rb +1 -1
  170. data/spec/features/multiple_downloads_spec.rb +1 -1
  171. data/spec/features/oembed_spec.rb +1 -1
  172. data/spec/features/relations_spec.rb +2 -2
  173. data/spec/features/saved_searches_spec.rb +1 -1
  174. data/spec/features/search_bar_spec.rb +1 -1
  175. data/spec/features/search_results_complex_geometry_spec.rb +1 -1
  176. data/spec/features/search_results_icons_spec.rb +3 -4
  177. data/spec/features/search_results_map_spec.rb +1 -1
  178. data/spec/features/search_results_overlap_ratio_spec.rb +3 -3
  179. data/spec/features/search_spec.rb +1 -1
  180. data/spec/features/show_page_download_spec.rb +1 -1
  181. data/spec/features/show_page_metadata_spec.rb +2 -2
  182. data/spec/features/show_page_sidebar_static_map_spec.rb +1 -1
  183. data/spec/features/sms_spec.rb +1 -1
  184. data/spec/features/suppressed_records_spec.rb +1 -1
  185. data/spec/features/tilejson_spec.rb +1 -1
  186. data/spec/features/tms_spec.rb +1 -1
  187. data/spec/features/web_services_modal_spec.rb +1 -1
  188. data/spec/features/wmts_spec.rb +1 -1
  189. data/spec/features/xyz_spec.rb +1 -1
  190. data/spec/fixtures/manifests/tilejson.json +10 -19
  191. data/spec/fixtures/metadata/fgdc.html +1 -1
  192. data/spec/fixtures/metadata/iso.html +1 -1
  193. data/spec/fixtures/solr_documents/README.md +0 -1
  194. data/spec/fixtures/solr_documents/actual-papermap1.json +9 -28
  195. data/spec/fixtures/solr_documents/actual-point1.json +12 -39
  196. data/spec/fixtures/solr_documents/actual-polygon1.json +10 -30
  197. data/spec/fixtures/solr_documents/actual-raster1.json +14 -46
  198. data/spec/fixtures/solr_documents/all-relationships.json +12 -36
  199. data/spec/fixtures/solr_documents/b1g_iiif_manifest.json +33 -62
  200. data/spec/fixtures/solr_documents/b1g_wabash_child_15.json +13 -40
  201. data/spec/fixtures/solr_documents/b1g_wabash_child_16.json +13 -40
  202. data/spec/fixtures/solr_documents/b1g_wabash_child_17.json +13 -40
  203. data/spec/fixtures/solr_documents/b1g_wabash_child_18.json +13 -40
  204. data/spec/fixtures/solr_documents/b1g_wabash_parent.json +13 -40
  205. data/spec/fixtures/solr_documents/baruch_ancestor1.json +13 -40
  206. data/spec/fixtures/solr_documents/baruch_ancestor2.json +13 -40
  207. data/spec/fixtures/solr_documents/baruch_documentation_download.json +14 -46
  208. data/spec/fixtures/solr_documents/bbox-spans-180.json +7 -21
  209. data/spec/fixtures/solr_documents/complex-geom.json +11 -37
  210. data/spec/fixtures/solr_documents/cornell_html_metadata.json +12 -37
  211. data/spec/fixtures/solr_documents/display-note.json +11 -33
  212. data/spec/fixtures/solr_documents/esri-dynamic-layer-all-layers.json +13 -39
  213. data/spec/fixtures/solr_documents/esri-dynamic-layer-single-layer.json +13 -40
  214. data/spec/fixtures/solr_documents/esri-feature-layer.json +13 -39
  215. data/spec/fixtures/solr_documents/esri-image-map-layer.json +13 -40
  216. data/spec/fixtures/solr_documents/esri-tiled_map_layer.json +16 -54
  217. data/spec/fixtures/solr_documents/esri-wms-layer.json +12 -36
  218. data/spec/fixtures/solr_documents/harvard_raster.json +12 -37
  219. data/spec/fixtures/solr_documents/iiif-eastern-hemisphere.json +9 -27
  220. data/spec/fixtures/solr_documents/index-map-polygon-no-downloadurl.json +12 -41
  221. data/spec/fixtures/solr_documents/index-map-polygon.json +12 -41
  222. data/spec/fixtures/solr_documents/index-map-stanford.json +14 -45
  223. data/spec/fixtures/solr_documents/index-map-v1-complex.json +13 -38
  224. data/spec/fixtures/solr_documents/index_map_point.json +13 -42
  225. data/spec/fixtures/solr_documents/metadata_no_geom.json +4 -14
  226. data/spec/fixtures/solr_documents/metadata_no_provider.json +8 -25
  227. data/spec/fixtures/solr_documents/multiple-downloads.json +6 -18
  228. data/spec/fixtures/solr_documents/no_locn_geometry.json +4 -12
  229. data/spec/fixtures/solr_documents/no_spatial.json +4 -12
  230. data/spec/fixtures/solr_documents/oembed.json +8 -25
  231. data/spec/fixtures/solr_documents/princeton-child1.json +9 -29
  232. data/spec/fixtures/solr_documents/princeton-child2.json +9 -29
  233. data/spec/fixtures/solr_documents/princeton-child3.json +9 -29
  234. data/spec/fixtures/solr_documents/princeton-child4.json +9 -29
  235. data/spec/fixtures/solr_documents/princeton-parent.json +10 -33
  236. data/spec/fixtures/solr_documents/public_cog_princeton.json +9 -27
  237. data/spec/fixtures/solr_documents/public_iiif_princeton.json +13 -43
  238. data/spec/fixtures/solr_documents/public_pmtiles_princeton.json +29 -39
  239. data/spec/fixtures/solr_documents/public_polygon_mit.json +9 -30
  240. data/spec/fixtures/solr_documents/restricted-line.json +14 -47
  241. data/spec/fixtures/solr_documents/the-related-record.json +4 -12
  242. data/spec/fixtures/solr_documents/tilejson.json +23 -46
  243. data/spec/fixtures/solr_documents/tms.json +7 -21
  244. data/spec/fixtures/solr_documents/umn_metro_result1.json +13 -41
  245. data/spec/fixtures/solr_documents/umn_state_result1.json +13 -39
  246. data/spec/fixtures/solr_documents/umn_state_result2.json +13 -39
  247. data/spec/fixtures/solr_documents/uva_slug_colon.json +10 -30
  248. data/spec/fixtures/solr_documents/wmts-multiple.json +23 -39
  249. data/spec/fixtures/solr_documents/wmts-single-layer.json +23 -46
  250. data/spec/fixtures/solr_documents/xyz.json +10 -33
  251. data/spec/helpers/geoblacklight_helper_spec.rb +5 -50
  252. data/spec/javascripts/geoblacklight_spec.js +10 -10
  253. data/spec/javascripts/metadata_download_button_spec.js +14 -13
  254. data/spec/lib/geoblacklight/bounding_box_spec.rb +1 -1
  255. data/spec/lib/geoblacklight/configuration/default_settings_builder_spec.rb +9 -0
  256. data/spec/lib/geoblacklight/configuration_spec.rb +13 -0
  257. data/spec/lib/geoblacklight/download/csv_download_spec.rb +2 -2
  258. data/spec/lib/geoblacklight/download/geojson_download_spec.rb +2 -2
  259. data/spec/lib/geoblacklight/download/geotiff_download_spec.rb +5 -2
  260. data/spec/lib/geoblacklight/download/kmz_download_spec.rb +2 -2
  261. data/spec/lib/geoblacklight/download/shapefile_download_spec.rb +2 -2
  262. data/spec/lib/geoblacklight/download_spec.rb +15 -6
  263. data/spec/lib/geoblacklight/geometry_spec.rb +1 -1
  264. data/spec/lib/geoblacklight/item_viewer_spec.rb +2 -2
  265. data/spec/lib/geoblacklight/metadata/base_spec.rb +1 -1
  266. data/spec/lib/geoblacklight/metadata/html_spec.rb +1 -1
  267. data/spec/lib/geoblacklight/metadata_spec.rb +1 -1
  268. data/spec/lib/geoblacklight/metadata_transformer/base_spec.rb +1 -1
  269. data/spec/lib/geoblacklight/metadata_transformer/fgdc_spec.rb +1 -1
  270. data/spec/lib/geoblacklight/metadata_transformer/iso19139_spec.rb +1 -1
  271. data/spec/lib/geoblacklight/metadata_transformer_spec.rb +1 -1
  272. data/spec/lib/geoblacklight/reference_spec.rb +1 -1
  273. data/spec/lib/geoblacklight/references_spec.rb +6 -4
  274. data/spec/lib/geoblacklight/relation/ancestors_spec.rb +10 -4
  275. data/spec/lib/geoblacklight/relation/descendants_spec.rb +9 -4
  276. data/spec/lib/geoblacklight/relation/relation_response_spec.rb +12 -15
  277. data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +1 -1
  278. data/spec/lib/geoblacklight/wms_layer_spec.rb +1 -1
  279. data/spec/models/concerns/geoblacklight/bbox_filter_query_spec.rb +20 -11
  280. data/spec/models/concerns/geoblacklight/solr_document/citation_spec.rb +1 -1
  281. data/spec/models/concerns/geoblacklight/solr_document/finder_spec.rb +1 -1
  282. data/spec/models/concerns/geoblacklight/solr_document/inspection_spec.rb +1 -1
  283. data/spec/models/concerns/geoblacklight/solr_document_spec.rb +4 -39
  284. data/spec/models/concerns/geoblacklight/suppressed_records_search_behavior_spec.rb +2 -2
  285. data/spec/routing/catalog_routing_spec.rb +1 -1
  286. data/spec/spec_helper.rb +21 -10
  287. data/spec/tasks/geoblacklight_spec.rb +1 -1
  288. data/spec/test_app_templates/lib/generators/test_app_generator.rb +4 -3
  289. metadata +33 -184
  290. data/Procfile.dev +0 -3
  291. data/app/assets/stylesheets/geoblacklight/geoblacklight.scss +0 -2
  292. data/app/assets/stylesheets/geoblacklight/modules/_base.scss +0 -31
  293. data/app/assets/stylesheets/geoblacklight/modules/_blacklight_overrides.scss +0 -40
  294. data/app/assets/stylesheets/geoblacklight/modules/_styles.scss +0 -9
  295. data/app/assets/stylesheets/geoblacklight/modules/downloads.scss +0 -62
  296. data/app/assets/stylesheets/geoblacklight/modules/geosearch.scss +0 -23
  297. data/app/assets/stylesheets/geoblacklight/modules/home.scss +0 -13
  298. data/app/assets/stylesheets/geoblacklight/modules/icon-customization.scss +0 -116
  299. data/app/assets/stylesheets/geoblacklight/modules/index_maps.scss +0 -61
  300. data/app/assets/stylesheets/geoblacklight/modules/item.scss +0 -78
  301. data/app/assets/stylesheets/geoblacklight/modules/layer_opacity.scss +0 -87
  302. data/app/assets/stylesheets/geoblacklight/modules/leaflet.scss +0 -4
  303. data/app/assets/stylesheets/geoblacklight/modules/metadata.scss +0 -31
  304. data/app/assets/stylesheets/geoblacklight/modules/metadata_content.scss +0 -43
  305. data/app/assets/stylesheets/geoblacklight/modules/metadata_markup.scss +0 -9
  306. data/app/assets/stylesheets/geoblacklight/modules/metadata_missing.scss +0 -7
  307. data/app/assets/stylesheets/geoblacklight/modules/modal.scss +0 -5
  308. data/app/assets/stylesheets/geoblacklight/modules/results.scss +0 -60
  309. data/app/assets/stylesheets/geoblacklight/modules/search_widgets.scss +0 -5
  310. data/app/assets/stylesheets/geoblacklight/modules/sidebar.scss +0 -42
  311. data/app/assets/stylesheets/geoblacklight/modules/toolbar.scss +0 -34
  312. data/app/assets/stylesheets/geoblacklight/modules/web_services.scss +0 -5
  313. data/app/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component.rb +0 -46
  314. data/app/components/blacklight/icons/arizona_component.rb +0 -24
  315. data/app/components/blacklight/icons/baruch_cuny_component.rb +0 -23
  316. data/app/components/blacklight/icons/bookmark_component.rb +0 -23
  317. data/app/components/blacklight/icons/circle_info_solid_component.rb +0 -23
  318. data/app/components/blacklight/icons/columbia_component.rb +0 -23
  319. data/app/components/blacklight/icons/cornell_component.rb +0 -25
  320. data/app/components/blacklight/icons/george_mason_component.rb +0 -24
  321. data/app/components/blacklight/icons/harvard_component.rb +0 -23
  322. data/app/components/blacklight/icons/indiana_component.rb +0 -23
  323. data/app/components/blacklight/icons/lewis_clark_component.rb +0 -25
  324. data/app/components/blacklight/icons/massgis_component.rb +0 -23
  325. data/app/components/blacklight/icons/michigan_state_university_component.rb +0 -25
  326. data/app/components/blacklight/icons/mit_component.rb +0 -23
  327. data/app/components/blacklight/icons/northwestern_university_component.rb +0 -24
  328. data/app/components/blacklight/icons/nyu_component.rb +0 -26
  329. data/app/components/blacklight/icons/pennsylvania_state_university_component.rb +0 -25
  330. data/app/components/blacklight/icons/princeton_component.rb +0 -23
  331. data/app/components/blacklight/icons/purdue_university_component.rb +0 -25
  332. data/app/components/blacklight/icons/rutgers_component.rb +0 -25
  333. data/app/components/blacklight/icons/sms_component.rb +0 -23
  334. data/app/components/blacklight/icons/stanford_component.rb +0 -23
  335. data/app/components/blacklight/icons/texas_component.rb +0 -23
  336. data/app/components/blacklight/icons/the_ohio_state_university_component.rb +0 -26
  337. data/app/components/blacklight/icons/tufts_component.rb +0 -23
  338. data/app/components/blacklight/icons/ucla_component.rb +0 -23
  339. data/app/components/blacklight/icons/university_of_california_berkeley_component.rb +0 -24
  340. data/app/components/blacklight/icons/university_of_chicago_component.rb +0 -25
  341. data/app/components/blacklight/icons/university_of_colorado_boulder_component.rb +0 -26
  342. data/app/components/blacklight/icons/university_of_illinois_urbana_champaign_component.rb +0 -25
  343. data/app/components/blacklight/icons/university_of_iowa_component.rb +0 -24
  344. data/app/components/blacklight/icons/university_of_maryland_component.rb +0 -24
  345. data/app/components/blacklight/icons/university_of_michigan_component.rb +0 -24
  346. data/app/components/blacklight/icons/university_of_minnesota_component.rb +0 -24
  347. data/app/components/blacklight/icons/university_of_nebraska_lincoln_component.rb +0 -27
  348. data/app/components/blacklight/icons/university_of_wisconsin_madison_component.rb +0 -24
  349. data/app/components/blacklight/icons/uva_component.rb +0 -23
  350. data/app/components/geoblacklight/icon_facet_item_component.rb +0 -33
  351. data/app/components/geoblacklight/web_services_link_component.html.erb +0 -3
  352. data/bin/vite +0 -29
  353. data/config/initializers/new_gbl_settings_defaults_4.1.yml +0 -104
  354. data/lib/generators/geoblacklight/assets/importmap_generator.rb +0 -73
  355. data/lib/generators/geoblacklight/assets/vite_generator.rb +0 -89
  356. data/lib/generators/geoblacklight/templates/assets/_customizations.scss +0 -23
  357. data/lib/generators/geoblacklight/templates/assets/application.js +0 -17
  358. data/lib/generators/geoblacklight/templates/assets/application.scss +0 -9
  359. data/lib/generators/geoblacklight/templates/assets/geoblacklight.scss +0 -11
  360. data/lib/generators/geoblacklight/templates/base.html.erb +0 -46
  361. data/lib/generators/geoblacklight/templates/vite.config.ts +0 -23
  362. data/lib/generators/geoblacklight/templates/vite.json +0 -16
  363. data/schema/geoblacklight-schema-1.0.json +0 -214
  364. data/solr/conf/xslt/example.xsl +0 -132
  365. data/solr/conf/xslt/example_atom.xsl +0 -67
  366. data/solr/conf/xslt/example_rss.xsl +0 -66
  367. data/solr/conf/xslt/luke.xsl +0 -337
  368. data/spec/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component_spec.rb +0 -15
  369. data/spec/components/blacklight/icons/arizona_component_spec.rb +0 -15
  370. data/spec/components/blacklight/icons/arrow_circle_down_component_spec.rb +0 -15
  371. data/spec/components/blacklight/icons/baruch_cuny_component_spec.rb +0 -15
  372. data/spec/components/blacklight/icons/book_component_spec.rb +0 -15
  373. data/spec/components/blacklight/icons/bookmark_component_spec.rb +0 -15
  374. data/spec/components/blacklight/icons/cd_rom_component_spec.rb +0 -15
  375. data/spec/components/blacklight/icons/child_item_component_spec.rb +0 -15
  376. data/spec/components/blacklight/icons/circle_info_solid_component_spec.rb +0 -15
  377. data/spec/components/blacklight/icons/citation_component_spec.rb +0 -15
  378. data/spec/components/blacklight/icons/collection_component_spec.rb +0 -15
  379. data/spec/components/blacklight/icons/collections_component_spec.rb +0 -15
  380. data/spec/components/blacklight/icons/columbia_component_spec.rb +0 -15
  381. data/spec/components/blacklight/icons/cornell_component_spec.rb +0 -15
  382. data/spec/components/blacklight/icons/datasets_component_spec.rb +0 -15
  383. data/spec/components/blacklight/icons/dvd_rom_component_spec.rb +0 -15
  384. data/spec/components/blacklight/icons/email_component_spec.rb +0 -15
  385. data/spec/components/blacklight/icons/esri_globe_component_spec.rb +0 -15
  386. data/spec/components/blacklight/icons/fire_solid_component_spec.rb +0 -15
  387. data/spec/components/blacklight/icons/george_mason_component_spec.rb +0 -15
  388. data/spec/components/blacklight/icons/globe_component_spec.rb +0 -15
  389. data/spec/components/blacklight/icons/harvard_component_spec.rb +0 -15
  390. data/spec/components/blacklight/icons/home_component_spec.rb +0 -15
  391. data/spec/components/blacklight/icons/iiif_drag_drop_component_spec.rb +0 -15
  392. data/spec/components/blacklight/icons/image_component_spec.rb +0 -15
  393. data/spec/components/blacklight/icons/imagery_component_spec.rb +0 -15
  394. data/spec/components/blacklight/icons/indiana_component_spec.rb +0 -15
  395. data/spec/components/blacklight/icons/leaf_component_spec.rb +0 -15
  396. data/spec/components/blacklight/icons/lewis_clark_component_spec.rb +0 -15
  397. data/spec/components/blacklight/icons/lightbulb_solid_component_spec.rb +0 -15
  398. data/spec/components/blacklight/icons/line_component_spec.rb +0 -15
  399. data/spec/components/blacklight/icons/map_component_spec.rb +0 -15
  400. data/spec/components/blacklight/icons/map_marker_component_spec.rb +0 -15
  401. data/spec/components/blacklight/icons/maps_component_spec.rb +0 -15
  402. data/spec/components/blacklight/icons/massgis_component_spec.rb +0 -15
  403. data/spec/components/blacklight/icons/metadata_component_spec.rb +0 -15
  404. data/spec/components/blacklight/icons/michigan_state_university_component_spec.rb +0 -15
  405. data/spec/components/blacklight/icons/mit_component_spec.rb +0 -15
  406. data/spec/components/blacklight/icons/mixed_component_spec.rb +0 -15
  407. data/spec/components/blacklight/icons/multilinestring_component_spec.rb +0 -15
  408. data/spec/components/blacklight/icons/multipoint_component_spec.rb +0 -15
  409. data/spec/components/blacklight/icons/multipolygon_component_spec.rb +0 -15
  410. data/spec/components/blacklight/icons/northwestern_university_component_spec.rb +0 -15
  411. data/spec/components/blacklight/icons/nyu_component_spec.rb +0 -15
  412. data/spec/components/blacklight/icons/pagelines_brands_component_spec.rb +0 -15
  413. data/spec/components/blacklight/icons/paper_map_component_spec.rb +0 -15
  414. data/spec/components/blacklight/icons/parent_item_component_spec.rb +0 -15
  415. data/spec/components/blacklight/icons/pennsylvania_state_university_component_spec.rb +0 -15
  416. data/spec/components/blacklight/icons/point_component_spec.rb +0 -15
  417. data/spec/components/blacklight/icons/polygon_component_spec.rb +0 -15
  418. data/spec/components/blacklight/icons/polyline_component_spec.rb +0 -15
  419. data/spec/components/blacklight/icons/princeton_component_spec.rb +0 -15
  420. data/spec/components/blacklight/icons/public_component_spec.rb +0 -15
  421. data/spec/components/blacklight/icons/purdue_university_component_spec.rb +0 -15
  422. data/spec/components/blacklight/icons/raster_component_spec.rb +0 -15
  423. data/spec/components/blacklight/icons/restricted_component_spec.rb +0 -15
  424. data/spec/components/blacklight/icons/rutgers_component_spec.rb +0 -15
  425. data/spec/components/blacklight/icons/sms_component_spec.rb +0 -15
  426. data/spec/components/blacklight/icons/stanford_component_spec.rb +0 -15
  427. data/spec/components/blacklight/icons/table_component_spec.rb +0 -15
  428. data/spec/components/blacklight/icons/tags_component_spec.rb +0 -15
  429. data/spec/components/blacklight/icons/texas_component_spec.rb +0 -15
  430. data/spec/components/blacklight/icons/the_ohio_state_university_component_spec.rb +0 -15
  431. data/spec/components/blacklight/icons/triangle_exclamation_solid_component_spec.rb +0 -15
  432. data/spec/components/blacklight/icons/tufts_component_spec.rb +0 -15
  433. data/spec/components/blacklight/icons/ucla_component_spec.rb +0 -15
  434. data/spec/components/blacklight/icons/university_of_california_berkeley_component_spec.rb +0 -15
  435. data/spec/components/blacklight/icons/university_of_chicago_component_spec.rb +0 -15
  436. data/spec/components/blacklight/icons/university_of_colorado_boulder_component_spec.rb +0 -15
  437. data/spec/components/blacklight/icons/university_of_illinois_urbana_champaign_component_spec.rb +0 -15
  438. data/spec/components/blacklight/icons/university_of_iowa_component_spec.rb +0 -15
  439. data/spec/components/blacklight/icons/university_of_maryland_component_spec.rb +0 -15
  440. data/spec/components/blacklight/icons/university_of_michigan_component_spec.rb +0 -15
  441. data/spec/components/blacklight/icons/university_of_minnesota_component_spec.rb +0 -15
  442. data/spec/components/blacklight/icons/university_of_nebraska_lincoln_component_spec.rb +0 -15
  443. data/spec/components/blacklight/icons/university_of_wisconsin_madison_component_spec.rb +0 -15
  444. data/spec/components/blacklight/icons/uva_component_spec.rb +0 -15
  445. data/spec/components/blacklight/icons/web_services_component_spec.rb +0 -15
  446. data/spec/components/blacklight/icons/websites_component_spec.rb +0 -15
  447. data/spec/components/geoblacklight/icon_facet_item_component_spec.rb +0 -18
  448. data/spec/config/initializers/rails_config_spec.rb +0 -16
  449. data/spec/fixtures/solr_documents/public_direct_download.json +0 -62
  450. data/spec/support/backport_test_helpers.rb +0 -47
  451. data/spec/support/view_component_capybara_test_helpers.rb +0 -8
  452. data/vite.config.ts +0 -32
  453. /data/app/assets/images/{blacklight → geoblacklight}/logo.svg +0 -0
@@ -2,11 +2,11 @@
2
2
  * If complex logic is needed for a certain layer type, it is broken out into its own file,
3
3
  * such as layer_wmts.js for WMTS layers and layer_index_map.js for index map layers, at the same directory level as this file.
4
4
  */
5
- import { tileLayer, geoJson, circleMarker } from "leaflet";
6
- import { dynamicMapLayer, featureLayer, tiledMapLayer } from "esri-leaflet";
7
- import { parseWmtsCapabilities } from "geoblacklight/leaflet/layer_wmts";
8
- import { availabilityStyle, updateInformation } from "geoblacklight/leaflet/layer_index_map";
9
- import { getTileJsonBounds } from "geoblacklight/leaflet/utils";
5
+ import { tileLayer, geoJson, circleMarker } from "leaflet"
6
+ import { dynamicMapLayer, featureLayer, tiledMapLayer } from "esri-leaflet"
7
+ import { parseWmtsCapabilities } from "geoblacklight/leaflet/layer_wmts"
8
+ import { availabilityStyle, updateInformation } from "geoblacklight/leaflet/layer_index_map"
9
+ import { getTileJsonBounds } from "geoblacklight/leaflet/utils"
10
10
 
11
11
  // Create a leaflet tile layer for WMS
12
12
  export const wmsLayer = (url, { layerId, opacity, detectRetina }) => {
@@ -18,50 +18,48 @@ export const wmsLayer = (url, { layerId, opacity, detectRetina }) => {
18
18
  CRS: "EPSG:3857",
19
19
  opacity,
20
20
  detectRetina,
21
- });
22
- };
21
+ })
22
+ }
23
23
 
24
24
  // Fetch a WMTSCapabilities document and create a leaflet tileLayer using it
25
25
  export const wmtsLayer = async (url, { opacity, detectRetina, layerId }) => {
26
- const response = await fetch(url);
27
- if (!response.ok)
28
- throw new Error("Unable to fetch WMTSCapabilities document", url);
26
+ const response = await fetch(url)
27
+ if (!response.ok) throw new Error("Unable to fetch WMTSCapabilities document", url)
29
28
 
30
- const wmtsCapabilities = await response.text();
31
- if (!wmtsCapabilities)
32
- throw new Error("Unable to parse WMTSCapabilities document", url);
29
+ const wmtsCapabilities = await response.text()
30
+ if (!wmtsCapabilities) throw new Error("Unable to parse WMTSCapabilities document", url)
33
31
 
34
- const tileInfo = parseWmtsCapabilities(wmtsCapabilities, layerId);
35
- const options = tileInfo.bounds ? { bounds: tileInfo.bounds } : {};
32
+ const tileInfo = parseWmtsCapabilities(wmtsCapabilities, layerId)
33
+ const options = tileInfo.bounds ? { bounds: tileInfo.bounds } : {}
36
34
  return tileLayer(tileInfo.url, {
37
35
  opacity,
38
36
  detectRetina,
39
37
  ...options,
40
- });
41
- };
38
+ })
39
+ }
42
40
 
43
41
  // Create an ESRI-leaflet dynamic map layer
44
42
  export const esriDynamicMapLayer = (url, { opacity, detectRetina }) => {
45
43
  // Remove any trailing slash and get the last segment from the URL
46
- url = url.replace(/\/$/, "");
47
- const pathArray = url.split("/");
48
- const lastSegment = pathArray[pathArray.length - 1];
44
+ url = url.replace(/\/$/, "")
45
+ const pathArray = url.split("/")
46
+ const lastSegment = pathArray[pathArray.length - 1]
49
47
 
50
48
  // If the last segment is an integer it's the layer ID
51
- let layerId;
49
+ let layerId
52
50
  if (Number(lastSegment) === parseInt(lastSegment, 10)) {
53
- layerId = lastSegment;
54
- url = url.slice(0, -(lastSegment.length + 1));
51
+ layerId = lastSegment
52
+ url = url.slice(0, -(lastSegment.length + 1))
55
53
  }
56
54
 
57
- const options = layerId ? { layers: [layerId] } : {};
55
+ const options = layerId ? { layers: [layerId] } : {}
58
56
  return dynamicMapLayer({
59
57
  url,
60
58
  opacity,
61
59
  detectRetina,
62
60
  ...options,
63
- });
64
- };
61
+ })
62
+ }
65
63
 
66
64
  // Create an ESRI-leaflet feature layer
67
65
  export const esriFeatureLayer = (url, { opacity, detectRetina }) => {
@@ -69,85 +67,80 @@ export const esriFeatureLayer = (url, { opacity, detectRetina }) => {
69
67
  url,
70
68
  opacity,
71
69
  detectRetina,
72
- });
73
- };
70
+ })
71
+ }
74
72
 
75
73
  // Create an ESRI tiled map layer
76
74
  export const esriTiledMapLayer = async (url, options) => {
77
- const response = await fetch(url);
75
+ const response = await fetch(url)
78
76
 
79
- if (!response.ok)
80
- throw new Error("Unable to fetch EsriTiledMapLayer document", url);
77
+ if (!response.ok) throw new Error("Unable to fetch EsriTiledMapLayer document", url)
81
78
 
82
- let layerInfo;
79
+ let layerInfo
83
80
  try {
84
- layerInfo = await response.json();
81
+ layerInfo = await response.json()
85
82
  } catch (error) {
86
- throw new Error("Unable to parse TiledMapLayer document", response);
83
+ throw new Error("Unable to parse TiledMapLayer document", response)
87
84
  }
88
85
 
89
86
  // For an example of tiledMapLayer data see nyu-test-soil-survey-map
90
87
  // We aren't sure what the json structure looks like
91
88
  // This is not rendering anything (and wasn't before we made changes) and the keys are not even present
92
- // Check out this json: https://dnrmaps.wi.gov/arcgis2/rest/services/TS_AGOL_STAGING_SERVICES/EN_AGOL_STAGING_SurfaceWater_WTM/MapServer/2?f=pjson -- wrong protocol, now a feature map??
93
- if (
94
- 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,47 +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,
16
19
  },
17
20
  worldAntique: {
18
- url: 'https://cartocdn_{a-d}.global.ssl.fastly.net/base-antique/{z}/{x}/{y}.png',
19
- attributions: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://carto.com/attributionss">Carto</a>',
20
- maxZoom: 18
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,
21
25
  },
22
26
  worldEco: {
23
- url: 'https://cartocdn_{a-d}.global.ssl.fastly.net/base-eco/{z}/{x}/{y}.png',
24
- attributions: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://carto.com/attributionss">Carto</a>',
25
- maxZoom: 18
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,
26
31
  },
27
32
  flatBlue: {
28
- url: 'https://cartocdn_{a-d}.global.ssl.fastly.net/base-flatblue/{z}/{x}/{y}.png',
29
- attributions: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://carto.com/attributionss">Carto</a>',
30
- maxZoom: 18
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,
31
37
  },
32
38
  midnightCommander: {
33
- url: 'https://cartocdn_{a-d}.global.ssl.fastly.net/base-midnight/{z}/{x}/{y}.png',
34
- attributions: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://carto.com/attributionss">Carto</a>',
35
- maxZoom: 18
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,
36
43
  },
37
44
  openstreetmapHot: {
38
- url: 'https://{a-c}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',
39
- 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>',
40
- 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,
41
49
  },
42
50
  openstreetmapStandard: {
43
- url: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
51
+ url: "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
44
52
  attributions: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
45
- maxZoom: 19
46
- }
53
+ maxZoom: 19,
54
+ },
47
55
  }
@@ -1,44 +1,44 @@
1
- import { linkify } from "geoblacklight/leaflet/utils";
1
+ import { linkify } from "geoblacklight/leaflet/utils"
2
2
 
3
3
  export const pmTilesInspection = (map) => {
4
4
  // add crosshair class for map items
5
- map.on('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,8 +30,8 @@ export const pmTilesLayer = (url) => {
30
30
  }),
31
31
  }),
32
32
  }),
33
- });
34
- };
33
+ })
34
+ }
35
35
 
36
36
  // Create a new cloud-optimized GeoTIFF (COG) layer
37
37
  export const cogLayer = (url) => {
@@ -40,5 +40,5 @@ export const cogLayer = (url) => {
40
40
  sources: [{ url }],
41
41
  convertToRGB: true,
42
42
  }),
43
- });
44
- };
43
+ })
44
+ }
@@ -2,23 +2,21 @@
2
2
 
3
3
  module Geoblacklight
4
4
  class BboxFilterQuery
5
- def 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}"
@@ -15,20 +15,21 @@ module Geoblacklight
15
15
  delegate :viewer_endpoint, to: :item_viewer
16
16
 
17
17
  included do
18
- attribute :display_note, :array, Settings.FIELDS.DISPLAY_NOTE
19
- attribute :geom_field, :string, Settings.FIELDS.GEOMETRY
20
- attribute :wxs_identifier, :string, Settings.FIELDS.WXS_IDENTIFIER
21
- attribute :file_format, :string, Settings.FIELDS.FORMAT
22
- attribute :rights_field_data, :string, Settings.FIELDS.ACCESS_RIGHTS
23
- attribute :provider, :string, Settings.FIELDS.PROVIDER
24
- attribute :resource_type, :array, Settings.FIELDS.RESOURCE_TYPE
25
- attribute :resource_class, :array, Settings.FIELDS.RESOURCE_CLASS
26
- attribute :title, :string, Settings.FIELDS.TITLE
27
- attribute :creator, :array, Settings.FIELDS.CREATOR
28
- attribute :publisher, :string, Settings.FIELDS.PUBLISHER
29
- attribute :identifiers, :array, Settings.FIELDS.IDENTIFIER
30
- attribute :issued, :string, Settings.FIELDS.DATE_ISSUED
31
- attribute :format, :string, Settings.FIELDS.FORMAT
18
+ field_config = Geoblacklight.configuration.fields
19
+ attribute :display_note, :array, field_config.display_note
20
+ attribute :geom_field, :string, field_config.geometry
21
+ attribute :wxs_identifier, :string, field_config.wxs_identifier
22
+ attribute :file_format, :string, field_config.format
23
+ attribute :rights_field_data, :string, field_config.access_rights
24
+ attribute :provider, :string, field_config.provider
25
+ attribute :resource_type, :array, field_config.resource_type
26
+ attribute :resource_class, :array, field_config.resource_class
27
+ attribute :title, :string, field_config.title
28
+ attribute :creator, :array, field_config.creator
29
+ attribute :publisher, :string, field_config.publisher
30
+ attribute :identifiers, :array, field_config.identifier
31
+ attribute :issued, :string, field_config.date_issued
32
+ attribute :format, :string, field_config.format
32
33
  end
33
34
 
34
35
  def available?
@@ -60,7 +61,7 @@ module Geoblacklight
60
61
  end
61
62
 
62
63
  def same_institution?
63
- provider&.casecmp?(Settings.INSTITUTION.downcase)
64
+ provider&.casecmp?(Geoblacklight.configuration.institution.downcase)
64
65
  end
65
66
 
66
67
  def iiif_download
@@ -86,29 +87,5 @@ module Geoblacklight
86
87
  def geometry
87
88
  @geometry ||= Geoblacklight::Geometry.new(geom_field)
88
89
  end
89
-
90
- ##
91
- # Provides a convenience method to access a SolrDocument's References
92
- # endpoint url without having to check and see if it is available
93
- # :type => a string which if its a Geoblacklight::Constants::URI key
94
- # will return a coresponding Geoblacklight::Reference
95
- def checked_endpoint(type)
96
- type = references.public_send(type)
97
- type.endpoint if type.present?
98
- end
99
-
100
- private
101
-
102
- def method_missing(method, *args, &block)
103
- if /.*_url$/.match?(method.to_s)
104
- checked_endpoint(method.to_s.gsub("_url", ""))
105
- else
106
- super
107
- end
108
- end
109
-
110
- def respond_to_missing?(method, *args, &block)
111
- /.*_url$/.match?(method.to_s) || super
112
- end
113
90
  end
114
91
  end
@@ -16,17 +16,17 @@ module Geoblacklight
16
16
  # Show suppressed records when searching relationships
17
17
  return if blacklight_params.fetch(:f,
18
18
  {}).keys.any? do |field|
19
- Settings.RELATIONSHIPS_SHOWN.map do |_key, value|
19
+ Geoblacklight.configuration.relationships_shown.map do |_key, value|
20
20
  value.field
21
21
  end.include?(field)
22
22
  end
23
23
 
24
24
  # Do not suppress action_documents method calls for individual documents
25
25
  # ex. CatalogController#web_services (exportable views)
26
- return if solr_params[:q]&.include?("{!lucene}#{Settings.FIELDS.ID}:")
26
+ return if solr_params[:q]&.include?("{!lucene}#{Geoblacklight.configuration.fields.id}:")
27
27
 
28
28
  solr_params[:fq] ||= []
29
- solr_params[:fq] << "-#{Settings.FIELDS.SUPPRESSED}: true"
29
+ solr_params[:fq] << "-#{Geoblacklight.configuration.fields.suppressed}: true"
30
30
  end
31
31
  end
32
32
  end