geoblacklight 4.4.1 → 5.0.0.pre.alpha.11

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 (577) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build-demo-app.yml +153 -0
  3. data/.github/workflows/prune-containers.yml +19 -0
  4. data/.github/workflows/ruby.yml +54 -52
  5. data/.gitignore +2 -2
  6. data/CONTRIBUTING.md +62 -44
  7. data/Gemfile +3 -28
  8. data/Rakefile +42 -67
  9. data/app/assets/images/blacklight/logo.svg +31 -1
  10. data/app/assets/stylesheets/geoblacklight/geoblacklight.scss +1 -2
  11. data/app/assets/stylesheets/geoblacklight/modules/_base.scss +1 -1
  12. data/app/assets/stylesheets/geoblacklight/modules/_blacklight_overrides.scss +24 -26
  13. data/app/assets/stylesheets/geoblacklight/modules/downloads.scss +13 -0
  14. data/app/assets/stylesheets/geoblacklight/modules/home.scss +2 -17
  15. data/app/assets/stylesheets/geoblacklight/modules/icon-customization.scss +48 -23
  16. data/app/assets/stylesheets/geoblacklight/modules/index_maps.scss +1 -15
  17. data/app/assets/stylesheets/geoblacklight/modules/item.scss +13 -11
  18. data/app/assets/stylesheets/geoblacklight/modules/layer_opacity.scss +3 -3
  19. data/app/assets/stylesheets/geoblacklight/modules/leaflet.scss +4 -0
  20. data/app/assets/stylesheets/geoblacklight/modules/modal.scss +0 -15
  21. data/app/assets/stylesheets/geoblacklight/modules/results.scss +10 -19
  22. data/app/assets/stylesheets/geoblacklight/modules/sidebar.scss +2 -2
  23. data/app/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component.rb +46 -0
  24. data/app/components/blacklight/icons/arizona_component.rb +24 -0
  25. data/app/components/blacklight/icons/arrow_circle_down_component.rb +23 -0
  26. data/app/components/blacklight/icons/baruch_cuny_component.rb +23 -0
  27. data/app/components/blacklight/icons/book_component.rb +23 -0
  28. data/app/components/blacklight/icons/bookmark_component.rb +23 -0
  29. data/app/components/blacklight/icons/cd_rom_component.rb +23 -0
  30. data/app/components/blacklight/icons/child_item_component.rb +23 -0
  31. data/app/components/blacklight/icons/circle_info_solid_component.rb +23 -0
  32. data/app/components/blacklight/icons/citation_component.rb +23 -0
  33. data/app/components/blacklight/icons/collection_component.rb +23 -0
  34. data/app/components/blacklight/icons/collections_component.rb +24 -0
  35. data/app/components/blacklight/icons/columbia_component.rb +23 -0
  36. data/app/components/blacklight/icons/cornell_component.rb +25 -0
  37. data/app/components/blacklight/icons/datasets_component.rb +27 -0
  38. data/app/components/blacklight/icons/dvd_rom_component.rb +23 -0
  39. data/app/components/blacklight/icons/email_component.rb +23 -0
  40. data/app/components/blacklight/icons/esri_globe_component.rb +51 -0
  41. data/app/components/blacklight/icons/fire_solid_component.rb +23 -0
  42. data/app/components/blacklight/icons/george_mason_component.rb +24 -0
  43. data/app/components/blacklight/icons/globe_component.rb +23 -0
  44. data/app/components/blacklight/icons/harvard_component.rb +23 -0
  45. data/app/components/blacklight/icons/home_component.rb +23 -0
  46. data/app/components/blacklight/icons/iiif_drag_drop_component.rb +31 -0
  47. data/app/components/blacklight/icons/image_component.rb +23 -0
  48. data/app/components/blacklight/icons/imagery_component.rb +24 -0
  49. data/app/components/blacklight/icons/indiana_component.rb +23 -0
  50. data/app/components/blacklight/icons/leaf_component.rb +23 -0
  51. data/app/components/blacklight/icons/lewis_clark_component.rb +25 -0
  52. data/app/components/blacklight/icons/lightbulb_solid_component.rb +23 -0
  53. data/app/components/blacklight/icons/line_component.rb +24 -0
  54. data/app/components/blacklight/icons/map_component.rb +23 -0
  55. data/app/components/blacklight/icons/map_marker_component.rb +23 -0
  56. data/app/components/blacklight/icons/maps_component.rb +24 -0
  57. data/app/components/blacklight/icons/massgis_component.rb +23 -0
  58. data/app/components/blacklight/icons/metadata_component.rb +23 -0
  59. data/app/components/blacklight/icons/michigan_state_university_component.rb +25 -0
  60. data/app/components/blacklight/icons/mit_component.rb +23 -0
  61. data/app/components/blacklight/icons/mixed_component.rb +25 -0
  62. data/app/components/blacklight/icons/multilinestring_component.rb +26 -0
  63. data/app/components/blacklight/icons/multipoint_component.rb +23 -0
  64. data/app/components/blacklight/icons/multipolygon_component.rb +26 -0
  65. data/app/components/blacklight/icons/northwestern_university_component.rb +24 -0
  66. data/app/components/blacklight/icons/nyu_component.rb +26 -0
  67. data/app/components/blacklight/icons/pagelines_brands_component.rb +23 -0
  68. data/app/components/blacklight/icons/paper_map_component.rb +23 -0
  69. data/app/components/blacklight/icons/parent_item_component.rb +23 -0
  70. data/app/components/blacklight/icons/pennsylvania_state_university_component.rb +25 -0
  71. data/app/components/blacklight/icons/point_component.rb +23 -0
  72. data/app/components/blacklight/icons/polygon_component.rb +24 -0
  73. data/app/components/blacklight/icons/polyline_component.rb +26 -0
  74. data/app/components/blacklight/icons/princeton_component.rb +23 -0
  75. data/app/components/blacklight/icons/public_component.rb +23 -0
  76. data/app/components/blacklight/icons/purdue_university_component.rb +25 -0
  77. data/app/components/blacklight/icons/raster_component.rb +23 -0
  78. data/app/components/blacklight/icons/restricted_component.rb +23 -0
  79. data/app/components/blacklight/icons/rutgers_component.rb +25 -0
  80. data/app/components/blacklight/icons/sms_component.rb +23 -0
  81. data/app/components/blacklight/icons/stanford_component.rb +23 -0
  82. data/app/components/blacklight/icons/table_component.rb +23 -0
  83. data/app/components/blacklight/icons/tags_component.rb +23 -0
  84. data/app/components/blacklight/icons/texas_component.rb +23 -0
  85. data/app/components/blacklight/icons/the_ohio_state_university_component.rb +26 -0
  86. data/app/components/blacklight/icons/triangle_exclamation_solid_component.rb +23 -0
  87. data/app/components/blacklight/icons/tufts_component.rb +23 -0
  88. data/app/components/blacklight/icons/ucla_component.rb +23 -0
  89. data/app/components/blacklight/icons/university_of_california_berkeley_component.rb +24 -0
  90. data/app/components/blacklight/icons/university_of_chicago_component.rb +25 -0
  91. data/app/components/blacklight/icons/university_of_colorado_boulder_component.rb +26 -0
  92. data/app/components/blacklight/icons/university_of_illinois_urbana_champaign_component.rb +25 -0
  93. data/app/components/blacklight/icons/university_of_iowa_component.rb +24 -0
  94. data/app/components/blacklight/icons/university_of_maryland_component.rb +24 -0
  95. data/app/components/blacklight/icons/university_of_michigan_component.rb +24 -0
  96. data/app/components/blacklight/icons/university_of_minnesota_component.rb +24 -0
  97. data/app/components/blacklight/icons/university_of_nebraska_lincoln_component.rb +27 -0
  98. data/app/components/blacklight/icons/university_of_wisconsin_madison_component.rb +24 -0
  99. data/app/components/blacklight/icons/uva_component.rb +23 -0
  100. data/app/components/blacklight/icons/web_services_component.rb +23 -0
  101. data/app/components/blacklight/icons/websites_component.rb +24 -0
  102. data/app/components/geoblacklight/arcgis_component.html.erb +3 -0
  103. data/app/components/geoblacklight/arcgis_component.rb +25 -0
  104. data/app/components/geoblacklight/attribute_table_component.html.erb +17 -0
  105. data/app/components/geoblacklight/attribute_table_component.rb +17 -0
  106. data/app/components/geoblacklight/data_dictionary_download_component.html.erb +3 -0
  107. data/app/components/geoblacklight/data_dictionary_download_component.rb +16 -0
  108. data/app/components/geoblacklight/display_note_component.rb +1 -1
  109. data/app/components/geoblacklight/document/citation_component.html.erb +1 -0
  110. data/app/components/geoblacklight/document/citation_component.rb +19 -0
  111. data/app/components/geoblacklight/document/sidebar_component.html.erb +12 -0
  112. data/app/components/geoblacklight/document/sidebar_component.rb +8 -0
  113. data/app/components/geoblacklight/document_component.html.erb +43 -0
  114. data/app/components/geoblacklight/document_component.rb +6 -0
  115. data/app/components/geoblacklight/download_links_component.html.erb +31 -0
  116. data/app/components/geoblacklight/download_links_component.rb +80 -0
  117. data/app/components/geoblacklight/header_component.html.erb +14 -0
  118. data/app/components/geoblacklight/header_component.rb +9 -0
  119. data/app/components/geoblacklight/header_icons_component.html.erb +3 -0
  120. data/app/components/geoblacklight/header_icons_component.rb +29 -0
  121. data/app/components/geoblacklight/iiif_drag_drop_component.html.erb +3 -0
  122. data/app/components/geoblacklight/iiif_drag_drop_component.rb +16 -0
  123. data/app/components/geoblacklight/index_map_inspect_component.rb +15 -0
  124. data/app/components/geoblacklight/index_map_legend_component.html.erb +14 -0
  125. data/app/components/geoblacklight/index_map_legend_component.rb +17 -0
  126. data/app/components/geoblacklight/item_map_viewer_component.html.erb +1 -0
  127. data/app/components/geoblacklight/item_map_viewer_component.rb +87 -0
  128. data/app/components/geoblacklight/location_leaflet_map_component.html.erb +1 -0
  129. data/app/components/geoblacklight/location_leaflet_map_component.rb +49 -0
  130. data/app/components/geoblacklight/login_link_component.html.erb +5 -0
  131. data/app/components/geoblacklight/login_link_component.rb +17 -0
  132. data/app/components/geoblacklight/relations_component.html.erb +23 -0
  133. data/app/components/geoblacklight/relations_component.rb +25 -0
  134. data/app/components/geoblacklight/search_result_component.html.erb +44 -0
  135. data/app/{presenters/geoblacklight/document_presenter.rb → components/geoblacklight/search_result_component.rb} +9 -6
  136. data/app/components/geoblacklight/static_map_component.html.erb +9 -0
  137. data/app/components/geoblacklight/static_map_component.rb +36 -0
  138. data/app/components/geoblacklight/viewer_help_text_component.html.erb +1 -0
  139. data/app/components/geoblacklight/viewer_help_text_component.rb +46 -0
  140. data/app/components/geoblacklight/web_services_component.html.erb +1 -0
  141. data/app/components/geoblacklight/web_services_component.rb +26 -0
  142. data/app/{views/catalog/_web_services_default.html.erb → components/geoblacklight/web_services_default_component.html.erb} +3 -5
  143. data/app/components/geoblacklight/web_services_default_component.rb +11 -0
  144. data/app/components/geoblacklight/web_services_link_component.html.erb +3 -0
  145. data/app/components/geoblacklight/web_services_link_component.rb +22 -0
  146. data/app/{views/catalog/_web_services_wfs.html.erb → components/geoblacklight/web_services_wfs_component.html.erb} +4 -7
  147. data/app/components/geoblacklight/web_services_wfs_component.rb +12 -0
  148. data/app/components/geoblacklight/web_services_wms_component.html.erb +10 -0
  149. data/app/components/geoblacklight/web_services_wms_component.rb +12 -0
  150. data/app/controllers/download_controller.rb +10 -26
  151. data/app/helpers/geoblacklight_helper.rb +10 -194
  152. data/app/javascript/geoblacklight/controllers/clipboard_controller.js +11 -0
  153. data/app/javascript/geoblacklight/controllers/clover_viewer_controller.js +47 -0
  154. data/app/javascript/geoblacklight/controllers/downloads_controller.js +56 -0
  155. data/app/javascript/geoblacklight/controllers/leaflet_viewer_controller.js +217 -0
  156. data/app/javascript/geoblacklight/controllers/oembed_viewer_controller.js +18 -0
  157. data/app/javascript/geoblacklight/controllers/openlayers_viewer_controller.js +63 -0
  158. data/app/javascript/geoblacklight/controllers/search_results_controller.js +50 -0
  159. data/app/javascript/geoblacklight/core.js +69 -0
  160. data/app/javascript/geoblacklight/index.js +29 -0
  161. data/app/javascript/geoblacklight/initializers/metadata_download.js +54 -0
  162. data/app/javascript/geoblacklight/initializers/popovers.js +11 -0
  163. data/app/javascript/geoblacklight/initializers/relations.js +40 -0
  164. data/app/javascript/geoblacklight/initializers/tooltips.js +55 -0
  165. data/app/javascript/geoblacklight/initializers/truncation.js +45 -0
  166. data/app/javascript/geoblacklight/leaflet/basemaps.js +74 -0
  167. data/app/javascript/geoblacklight/leaflet/constants.js +18 -0
  168. data/app/javascript/geoblacklight/leaflet/controls/geosearch.js +160 -0
  169. data/app/javascript/geoblacklight/leaflet/controls/layer_opacity.js +120 -0
  170. data/app/javascript/geoblacklight/leaflet/inspection.js +195 -0
  171. data/app/javascript/geoblacklight/leaflet/layer_index_map.js +120 -0
  172. data/app/javascript/geoblacklight/leaflet/layer_wmts.js +59 -0
  173. data/app/javascript/geoblacklight/leaflet/layers.js +153 -0
  174. data/app/javascript/geoblacklight/leaflet/utils.js +83 -0
  175. data/app/javascript/geoblacklight/openlayers/basemaps.js +47 -0
  176. data/app/javascript/geoblacklight/openlayers/layers.js +44 -0
  177. data/app/models/concerns/geoblacklight/solr_document/citation.rb +20 -8
  178. data/app/models/concerns/geoblacklight/solr_document.rb +22 -30
  179. data/app/presenters/geoblacklight/bbox_item_presenter.rb +1 -1
  180. data/app/views/catalog/_citation.html.erb +16 -33
  181. data/app/views/catalog/_document_split.html.erb +18 -3
  182. data/app/views/catalog/_home_text.html.erb +2 -2
  183. data/app/views/catalog/_metadata.html.erb +1 -1
  184. data/app/views/catalog/index.html.erb +8 -4
  185. data/app/views/catalog/metadata/_markup.html.erb +1 -1
  186. data/app/views/catalog/metadata.html.erb +14 -13
  187. data/app/views/catalog/web_services.html.erb +19 -28
  188. data/app/views/relation/index.html.erb +2 -12
  189. data/app/views/relation/index.json.jbuilder +1 -1
  190. data/compose.yml +14 -0
  191. data/config/importmap.rb +20 -0
  192. data/config/locales/geoblacklight.en.yml +15 -24
  193. data/geoblacklight.gemspec +7 -7
  194. data/lib/generators/geoblacklight/assets/importmap_generator.rb +87 -0
  195. data/lib/generators/geoblacklight/assets/vite_generator.rb +90 -0
  196. data/lib/generators/geoblacklight/assets_generator.rb +12 -37
  197. data/lib/generators/geoblacklight/install_generator.rb +11 -49
  198. data/lib/generators/geoblacklight/templates/assets/_customizations.scss +13 -19
  199. data/lib/generators/geoblacklight/templates/assets/application.js +17 -0
  200. data/lib/generators/geoblacklight/templates/assets/application.scss +9 -4
  201. data/lib/generators/geoblacklight/templates/assets/geoblacklight.scss +11 -0
  202. data/lib/generators/geoblacklight/templates/base.html.erb +9 -12
  203. data/lib/generators/geoblacklight/templates/catalog_controller.rb +7 -15
  204. data/lib/generators/geoblacklight/templates/demo-app/Dockerfile +31 -0
  205. data/lib/generators/geoblacklight/templates/demo-app/compose.yml +26 -0
  206. data/lib/generators/geoblacklight/templates/demo-app/start-server.sh +21 -0
  207. data/lib/generators/geoblacklight/templates/package.json +7 -1
  208. data/lib/generators/geoblacklight/templates/settings.yml +45 -40
  209. data/lib/generators/geoblacklight/templates/vite.config.ts +22 -7
  210. data/lib/geoblacklight/bounding_box.rb +16 -0
  211. data/lib/geoblacklight/constants.rb +0 -1
  212. data/lib/geoblacklight/download/csv_download.rb +22 -0
  213. data/lib/geoblacklight/download/geojson_download.rb +1 -1
  214. data/lib/geoblacklight/download/geotiff_download.rb +1 -1
  215. data/lib/geoblacklight/download/kmz_download.rb +1 -1
  216. data/lib/geoblacklight/download/shapefile_download.rb +1 -1
  217. data/lib/geoblacklight/download.rb +1 -1
  218. data/lib/geoblacklight/engine.rb +15 -6
  219. data/lib/geoblacklight/item_viewer.rb +1 -1
  220. data/lib/geoblacklight/metadata/base.rb +2 -1
  221. data/lib/geoblacklight/references.rb +27 -8
  222. data/lib/geoblacklight/routes/downloadable.rb +0 -1
  223. data/lib/geoblacklight/routes.rb +0 -3
  224. data/lib/geoblacklight/version.rb +1 -1
  225. data/lib/geoblacklight/wms_layer/feature_info_response.rb +9 -6
  226. data/lib/geoblacklight.rb +6 -30
  227. data/lib/tasks/geoblacklight.rake +24 -60
  228. data/package.json +24 -17
  229. data/solr/conf/schema.xml +15 -13
  230. data/solr/conf/solrconfig.xml +6 -4
  231. data/spec/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component_spec.rb +15 -0
  232. data/spec/components/blacklight/icons/arizona_component_spec.rb +15 -0
  233. data/spec/components/blacklight/icons/arrow_circle_down_component_spec.rb +15 -0
  234. data/spec/components/blacklight/icons/baruch_cuny_component_spec.rb +15 -0
  235. data/spec/components/blacklight/icons/book_component_spec.rb +15 -0
  236. data/spec/components/blacklight/icons/bookmark_component_spec.rb +15 -0
  237. data/spec/components/blacklight/icons/cd_rom_component_spec.rb +15 -0
  238. data/spec/components/blacklight/icons/child_item_component_spec.rb +15 -0
  239. data/spec/components/blacklight/icons/circle_info_solid_component_spec.rb +15 -0
  240. data/spec/components/blacklight/icons/citation_component_spec.rb +15 -0
  241. data/spec/components/blacklight/icons/collection_component_spec.rb +15 -0
  242. data/spec/components/blacklight/icons/collections_component_spec.rb +15 -0
  243. data/spec/components/blacklight/icons/columbia_component_spec.rb +15 -0
  244. data/spec/components/blacklight/icons/cornell_component_spec.rb +15 -0
  245. data/spec/components/blacklight/icons/datasets_component_spec.rb +15 -0
  246. data/spec/components/blacklight/icons/dvd_rom_component_spec.rb +15 -0
  247. data/spec/components/blacklight/icons/email_component_spec.rb +15 -0
  248. data/spec/components/blacklight/icons/esri_globe_component_spec.rb +15 -0
  249. data/spec/components/blacklight/icons/fire_solid_component_spec.rb +15 -0
  250. data/spec/components/blacklight/icons/george_mason_component_spec.rb +15 -0
  251. data/spec/components/blacklight/icons/globe_component_spec.rb +15 -0
  252. data/spec/components/blacklight/icons/harvard_component_spec.rb +15 -0
  253. data/spec/components/blacklight/icons/home_component_spec.rb +15 -0
  254. data/spec/components/blacklight/icons/iiif_drag_drop_component_spec.rb +15 -0
  255. data/spec/components/blacklight/icons/image_component_spec.rb +15 -0
  256. data/spec/components/blacklight/icons/imagery_component_spec.rb +15 -0
  257. data/spec/components/blacklight/icons/indiana_component_spec.rb +15 -0
  258. data/spec/components/blacklight/icons/leaf_component_spec.rb +15 -0
  259. data/spec/components/blacklight/icons/lewis_clark_component_spec.rb +15 -0
  260. data/spec/components/blacklight/icons/lightbulb_solid_component_spec.rb +15 -0
  261. data/spec/components/blacklight/icons/line_component_spec.rb +15 -0
  262. data/spec/components/blacklight/icons/map_component_spec.rb +15 -0
  263. data/spec/components/blacklight/icons/map_marker_component_spec.rb +15 -0
  264. data/spec/components/blacklight/icons/maps_component_spec.rb +15 -0
  265. data/spec/components/blacklight/icons/massgis_component_spec.rb +15 -0
  266. data/spec/components/blacklight/icons/metadata_component_spec.rb +15 -0
  267. data/spec/components/blacklight/icons/michigan_state_university_component_spec.rb +15 -0
  268. data/spec/components/blacklight/icons/mit_component_spec.rb +15 -0
  269. data/spec/components/blacklight/icons/mixed_component_spec.rb +15 -0
  270. data/spec/components/blacklight/icons/multilinestring_component_spec.rb +15 -0
  271. data/spec/components/blacklight/icons/multipoint_component_spec.rb +15 -0
  272. data/spec/components/blacklight/icons/multipolygon_component_spec.rb +15 -0
  273. data/spec/components/blacklight/icons/northwestern_university_component_spec.rb +15 -0
  274. data/spec/components/blacklight/icons/nyu_component_spec.rb +15 -0
  275. data/spec/components/blacklight/icons/pagelines_brands_component_spec.rb +15 -0
  276. data/spec/components/blacklight/icons/paper_map_component_spec.rb +15 -0
  277. data/spec/components/blacklight/icons/parent_item_component_spec.rb +15 -0
  278. data/spec/components/blacklight/icons/pennsylvania_state_university_component_spec.rb +15 -0
  279. data/spec/components/blacklight/icons/point_component_spec.rb +15 -0
  280. data/spec/components/blacklight/icons/polygon_component_spec.rb +15 -0
  281. data/spec/components/blacklight/icons/polyline_component_spec.rb +15 -0
  282. data/spec/components/blacklight/icons/princeton_component_spec.rb +15 -0
  283. data/spec/components/blacklight/icons/public_component_spec.rb +15 -0
  284. data/spec/components/blacklight/icons/purdue_university_component_spec.rb +15 -0
  285. data/spec/components/blacklight/icons/raster_component_spec.rb +15 -0
  286. data/spec/components/blacklight/icons/restricted_component_spec.rb +15 -0
  287. data/spec/components/blacklight/icons/rutgers_component_spec.rb +15 -0
  288. data/spec/components/blacklight/icons/sms_component_spec.rb +15 -0
  289. data/spec/components/blacklight/icons/stanford_component_spec.rb +15 -0
  290. data/spec/components/blacklight/icons/table_component_spec.rb +15 -0
  291. data/spec/components/blacklight/icons/tags_component_spec.rb +15 -0
  292. data/spec/components/blacklight/icons/texas_component_spec.rb +15 -0
  293. data/spec/components/blacklight/icons/the_ohio_state_university_component_spec.rb +15 -0
  294. data/spec/components/blacklight/icons/triangle_exclamation_solid_component_spec.rb +15 -0
  295. data/spec/components/blacklight/icons/tufts_component_spec.rb +15 -0
  296. data/spec/components/blacklight/icons/ucla_component_spec.rb +15 -0
  297. data/spec/components/blacklight/icons/university_of_california_berkeley_component_spec.rb +15 -0
  298. data/spec/components/blacklight/icons/university_of_chicago_component_spec.rb +15 -0
  299. data/spec/components/blacklight/icons/university_of_colorado_boulder_component_spec.rb +15 -0
  300. data/spec/components/blacklight/icons/university_of_illinois_urbana_champaign_component_spec.rb +15 -0
  301. data/spec/components/blacklight/icons/university_of_iowa_component_spec.rb +15 -0
  302. data/spec/components/blacklight/icons/university_of_maryland_component_spec.rb +15 -0
  303. data/spec/components/blacklight/icons/university_of_michigan_component_spec.rb +15 -0
  304. data/spec/components/blacklight/icons/university_of_minnesota_component_spec.rb +15 -0
  305. data/spec/components/blacklight/icons/university_of_nebraska_lincoln_component_spec.rb +15 -0
  306. data/spec/components/blacklight/icons/university_of_wisconsin_madison_component_spec.rb +15 -0
  307. data/spec/components/blacklight/icons/uva_component_spec.rb +15 -0
  308. data/spec/components/blacklight/icons/web_services_component_spec.rb +15 -0
  309. data/spec/components/blacklight/icons/websites_component_spec.rb +15 -0
  310. data/spec/components/geoblacklight/arcgis_component_spec.rb +31 -0
  311. data/spec/components/geoblacklight/attribute_table_component_spec.rb +37 -0
  312. data/spec/components/geoblacklight/citation_component_spec.rb +37 -0
  313. data/spec/components/geoblacklight/document_component_spec.rb +92 -0
  314. data/spec/components/geoblacklight/download_links_component_spec.rb +102 -0
  315. data/spec/components/geoblacklight/header_icons_component_spec.rb +56 -0
  316. data/spec/components/geoblacklight/iiif_drag_drop_component_spec.rb +30 -0
  317. data/spec/components/geoblacklight/index_map_legend_component_spec.rb +42 -0
  318. data/spec/components/geoblacklight/item_map_viewer_component_spec.rb +36 -0
  319. data/spec/components/geoblacklight/login_link_component_spec.rb +33 -0
  320. data/spec/{lib/geoblacklight/document_presenter_spec.rb → components/geoblacklight/search_result_component_spec.rb} +19 -11
  321. data/spec/components/geoblacklight/static_map_component_spec.rb +22 -0
  322. data/spec/components/geoblacklight/viewer_help_text_component_spec.rb +28 -0
  323. data/spec/components/geoblacklight/web_services_component_spec.rb +45 -0
  324. data/spec/controllers/download_controller_spec.rb +12 -35
  325. data/spec/features/axe_spec.rb +66 -0
  326. data/spec/features/bookmarks_spec.rb +1 -1
  327. data/spec/features/citations_spec.rb +7 -3
  328. data/spec/features/download_layer_spec.rb +24 -39
  329. data/spec/features/esri_viewer_spec.rb +1 -1
  330. data/spec/features/exports_spec.rb +0 -15
  331. data/spec/features/{full_screen_controll_spec.rb → full_screen_control_spec.rb} +6 -6
  332. data/spec/features/home_page_spec.rb +12 -7
  333. data/spec/features/iiif_viewer_spec.rb +1 -1
  334. data/spec/features/index_map_spec.rb +16 -9
  335. data/spec/features/{split_view.html.erb_spec.rb → index_view_spec.rb} +15 -13
  336. data/spec/features/layer_inspection_spec.rb +2 -2
  337. data/spec/features/layer_preview_spec.rb +1 -1
  338. data/spec/features/missing_metadata_spec.rb +5 -5
  339. data/spec/features/oembed_spec.rb +2 -2
  340. data/spec/features/saved_searches_spec.rb +4 -1
  341. data/spec/features/search_results_complex_geometry_spec.rb +2 -2
  342. data/spec/features/search_results_icons_spec.rb +3 -3
  343. data/spec/features/search_results_map_spec.rb +4 -36
  344. data/spec/features/search_results_overlap_ratio_spec.rb +1 -1
  345. data/spec/features/show_page_download_spec.rb +0 -8
  346. data/spec/features/tilejson_spec.rb +2 -2
  347. data/spec/features/web_services_modal_spec.rb +57 -39
  348. data/spec/features/wmts_spec.rb +4 -4
  349. data/spec/fixtures/solr_documents/README.md +2 -1
  350. data/spec/fixtures/solr_documents/complex-geom.json +61 -0
  351. data/spec/fixtures/solr_documents/esri-tiled_map_layer.json +45 -24
  352. data/spec/fixtures/solr_documents/harvard_raster.json +1 -1
  353. data/spec/fixtures/solr_documents/multiple-downloads.json +1 -0
  354. data/spec/helpers/geoblacklight_helper_spec.rb +8 -173
  355. data/spec/lib/geoblacklight/download/csv_download_spec.rb +21 -0
  356. data/spec/lib/geoblacklight/reference_spec.rb +17 -19
  357. data/spec/lib/geoblacklight/references_spec.rb +31 -17
  358. data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +8 -6
  359. data/spec/lib/geoblacklight/wms_layer_spec.rb +14 -0
  360. data/spec/models/concerns/geoblacklight/solr_document/citation_spec.rb +1 -1
  361. data/spec/models/concerns/geoblacklight/solr_document_spec.rb +1 -21
  362. data/spec/spec_helper.rb +2 -28
  363. data/spec/test_app_templates/lib/generators/test_app_generator.rb +4 -12
  364. data/template.rb +13 -11
  365. data/test/leaflet/layers.test.js +17 -0
  366. data/vite.config.ts +34 -23
  367. metadata +304 -256
  368. data/.hound.yml +0 -8
  369. data/.jshintignore +0 -2
  370. data/.jshintrc +0 -67
  371. data/.solr_wrapper +0 -6
  372. data/app/assets/images/blacklight/american-geographical-society-library-uwm-libraries.svg +0 -26
  373. data/app/assets/images/blacklight/arizona.svg +0 -4
  374. data/app/assets/images/blacklight/arrow-circle-down.svg +0 -3
  375. data/app/assets/images/blacklight/baruch-cuny.svg +0 -3
  376. data/app/assets/images/blacklight/book.svg +0 -3
  377. data/app/assets/images/blacklight/bookmark.svg +0 -3
  378. data/app/assets/images/blacklight/cd-rom.svg +0 -3
  379. data/app/assets/images/blacklight/chicago.svg +0 -4
  380. data/app/assets/images/blacklight/child-item.svg +0 -3
  381. data/app/assets/images/blacklight/circle-info-solid.svg +0 -1
  382. data/app/assets/images/blacklight/citation.svg +0 -3
  383. data/app/assets/images/blacklight/collection.svg +0 -3
  384. data/app/assets/images/blacklight/collections.svg +0 -4
  385. data/app/assets/images/blacklight/columbia.svg +0 -3
  386. data/app/assets/images/blacklight/cornell.svg +0 -5
  387. data/app/assets/images/blacklight/datasets.svg +0 -7
  388. data/app/assets/images/blacklight/dvd-rom.svg +0 -3
  389. data/app/assets/images/blacklight/email.svg +0 -3
  390. data/app/assets/images/blacklight/esri-globe.svg +0 -31
  391. data/app/assets/images/blacklight/fire-solid.svg +0 -1
  392. data/app/assets/images/blacklight/geoblacklight-icons.json +0 -3312
  393. data/app/assets/images/blacklight/george-mason.svg +0 -4
  394. data/app/assets/images/blacklight/globe.svg +0 -3
  395. data/app/assets/images/blacklight/harvard.svg +0 -3
  396. data/app/assets/images/blacklight/home.svg +0 -3
  397. data/app/assets/images/blacklight/illinois.svg +0 -4
  398. data/app/assets/images/blacklight/image.svg +0 -3
  399. data/app/assets/images/blacklight/imagery.svg +0 -4
  400. data/app/assets/images/blacklight/indiana.svg +0 -3
  401. data/app/assets/images/blacklight/iowa.svg +0 -3
  402. data/app/assets/images/blacklight/leaf.svg +0 -3
  403. data/app/assets/images/blacklight/lewis-clark.svg +0 -5
  404. data/app/assets/images/blacklight/lightbulb-solid.svg +0 -1
  405. data/app/assets/images/blacklight/line.svg +0 -4
  406. data/app/assets/images/blacklight/map-marker.svg +0 -3
  407. data/app/assets/images/blacklight/map.svg +0 -3
  408. data/app/assets/images/blacklight/maps.svg +0 -4
  409. data/app/assets/images/blacklight/maryland.svg +0 -3
  410. data/app/assets/images/blacklight/massgis.svg +0 -3
  411. data/app/assets/images/blacklight/metadata.svg +0 -3
  412. data/app/assets/images/blacklight/michigan-state-university.svg +0 -5
  413. data/app/assets/images/blacklight/michigan-state.svg +0 -4
  414. data/app/assets/images/blacklight/michigan.svg +0 -3
  415. data/app/assets/images/blacklight/minnesota.svg +0 -3
  416. data/app/assets/images/blacklight/mit.svg +0 -3
  417. data/app/assets/images/blacklight/mixed.svg +0 -5
  418. data/app/assets/images/blacklight/multilinestring.svg +0 -6
  419. data/app/assets/images/blacklight/multipoint.svg +0 -3
  420. data/app/assets/images/blacklight/multipolygon.svg +0 -6
  421. data/app/assets/images/blacklight/nebraska.svg +0 -4
  422. data/app/assets/images/blacklight/northwestern-university.svg +0 -5
  423. data/app/assets/images/blacklight/nyu.svg +0 -6
  424. data/app/assets/images/blacklight/ohio-state.svg +0 -5
  425. data/app/assets/images/blacklight/pagelines-brands.svg +0 -3
  426. data/app/assets/images/blacklight/paper-map.svg +0 -3
  427. data/app/assets/images/blacklight/parent-item.svg +0 -3
  428. data/app/assets/images/blacklight/penn-state.svg +0 -4
  429. data/app/assets/images/blacklight/pennsylvania-state-university.svg +0 -5
  430. data/app/assets/images/blacklight/point.svg +0 -3
  431. data/app/assets/images/blacklight/polygon.svg +0 -4
  432. data/app/assets/images/blacklight/polyline.svg +0 -6
  433. data/app/assets/images/blacklight/princeton.svg +0 -3
  434. data/app/assets/images/blacklight/public.svg +0 -3
  435. data/app/assets/images/blacklight/purdue-university.svg +0 -5
  436. data/app/assets/images/blacklight/purdue.svg +0 -4
  437. data/app/assets/images/blacklight/raster.svg +0 -3
  438. data/app/assets/images/blacklight/restricted.svg +0 -3
  439. data/app/assets/images/blacklight/rutgers.svg +0 -5
  440. data/app/assets/images/blacklight/sms.svg +0 -3
  441. data/app/assets/images/blacklight/stanford.svg +0 -3
  442. data/app/assets/images/blacklight/table.svg +0 -3
  443. data/app/assets/images/blacklight/tags.svg +0 -3
  444. data/app/assets/images/blacklight/texas.svg +0 -3
  445. data/app/assets/images/blacklight/the-ohio-state-university.svg +0 -6
  446. data/app/assets/images/blacklight/triangle-exclamation-solid.svg +0 -1
  447. data/app/assets/images/blacklight/tufts.svg +0 -3
  448. data/app/assets/images/blacklight/ucla.svg +0 -3
  449. data/app/assets/images/blacklight/university-of-california-berkeley.svg +0 -4
  450. data/app/assets/images/blacklight/university-of-chicago.svg +0 -5
  451. data/app/assets/images/blacklight/university-of-colorado-boulder.svg +0 -6
  452. data/app/assets/images/blacklight/university-of-illinois-urbana-champaign.svg +0 -5
  453. data/app/assets/images/blacklight/university-of-iowa.svg +0 -4
  454. data/app/assets/images/blacklight/university-of-maryland.svg +0 -4
  455. data/app/assets/images/blacklight/university-of-michigan.svg +0 -4
  456. data/app/assets/images/blacklight/university-of-minnesota.svg +0 -4
  457. data/app/assets/images/blacklight/university-of-nebraska-lincoln.svg +0 -7
  458. data/app/assets/images/blacklight/university-of-wisconsin-madison.svg +0 -4
  459. data/app/assets/images/blacklight/uva.svg +0 -3
  460. data/app/assets/images/blacklight/web_services.svg +0 -3
  461. data/app/assets/images/blacklight/websites.svg +0 -4
  462. data/app/assets/images/blacklight/wisconsin.svg +0 -3
  463. data/app/assets/javascripts/geoblacklight/basemaps.js +0 -85
  464. data/app/assets/javascripts/geoblacklight/controls/fullscreen.js +0 -8
  465. data/app/assets/javascripts/geoblacklight/controls/opacity.js +0 -6
  466. data/app/assets/javascripts/geoblacklight/controls.js +0 -1
  467. data/app/assets/javascripts/geoblacklight/downloaders/downloader.js +0 -61
  468. data/app/assets/javascripts/geoblacklight/downloaders/hgl_downloader.js +0 -32
  469. data/app/assets/javascripts/geoblacklight/downloaders.js +0 -1
  470. data/app/assets/javascripts/geoblacklight/geoblacklight.js +0 -60
  471. data/app/assets/javascripts/geoblacklight/modules/bookmarks.js +0 -43
  472. data/app/assets/javascripts/geoblacklight/modules/download.js +0 -11
  473. data/app/assets/javascripts/geoblacklight/modules/geosearch.js +0 -133
  474. data/app/assets/javascripts/geoblacklight/modules/help_text.js +0 -7
  475. data/app/assets/javascripts/geoblacklight/modules/home.js +0 -16
  476. data/app/assets/javascripts/geoblacklight/modules/item.js +0 -32
  477. data/app/assets/javascripts/geoblacklight/modules/layer_opacity.js +0 -68
  478. data/app/assets/javascripts/geoblacklight/modules/metadata.js +0 -15
  479. data/app/assets/javascripts/geoblacklight/modules/metadata_download_button.js +0 -58
  480. data/app/assets/javascripts/geoblacklight/modules/relations.js +0 -14
  481. data/app/assets/javascripts/geoblacklight/modules/results.js +0 -81
  482. data/app/assets/javascripts/geoblacklight/modules/svg_tooltips.js +0 -31
  483. data/app/assets/javascripts/geoblacklight/modules/util.js +0 -48
  484. data/app/assets/javascripts/geoblacklight/modules.js +0 -1
  485. data/app/assets/javascripts/geoblacklight/templates/index_map_download.hbs +0 -19
  486. data/app/assets/javascripts/geoblacklight/templates/index_map_info.hbs +0 -61
  487. data/app/assets/javascripts/geoblacklight/viewers/cog.js +0 -5
  488. data/app/assets/javascripts/geoblacklight/viewers/esri/dynamic_map_layer.js +0 -85
  489. data/app/assets/javascripts/geoblacklight/viewers/esri/feature_layer.js +0 -76
  490. data/app/assets/javascripts/geoblacklight/viewers/esri/image_map_layer.js +0 -14
  491. data/app/assets/javascripts/geoblacklight/viewers/esri/tiled_map_layer.js +0 -50
  492. data/app/assets/javascripts/geoblacklight/viewers/esri.js +0 -78
  493. data/app/assets/javascripts/geoblacklight/viewers/iiif.js +0 -25
  494. data/app/assets/javascripts/geoblacklight/viewers/index_map.js +0 -71
  495. data/app/assets/javascripts/geoblacklight/viewers/map.js +0 -77
  496. data/app/assets/javascripts/geoblacklight/viewers/oembed.js +0 -13
  497. data/app/assets/javascripts/geoblacklight/viewers/pmtiles.js +0 -5
  498. data/app/assets/javascripts/geoblacklight/viewers/tilejson.js +0 -33
  499. data/app/assets/javascripts/geoblacklight/viewers/tms.js +0 -10
  500. data/app/assets/javascripts/geoblacklight/viewers/viewer.js +0 -68
  501. data/app/assets/javascripts/geoblacklight/viewers/wms.js +0 -74
  502. data/app/assets/javascripts/geoblacklight/viewers/wmts.js +0 -85
  503. data/app/assets/javascripts/geoblacklight/viewers/xyz.js +0 -10
  504. data/app/assets/javascripts/geoblacklight/viewers.js +0 -1
  505. data/app/assets/stylesheets/geoblacklight/modules/mixins.scss +0 -5
  506. data/app/helpers/arcgis_helper.rb +0 -14
  507. data/app/helpers/blacklight_helper.rb +0 -11
  508. data/app/helpers/carto_helper.rb +0 -31
  509. data/app/helpers/geoblacklight/geoblacklight_helper_behavior.rb +0 -18
  510. data/app/javascript/clover/clover_initializer.js +0 -29
  511. data/app/javascript/index.js +0 -7
  512. data/app/javascript/openlayers/basemaps.js +0 -47
  513. data/app/javascript/openlayers/ol_initializer.js +0 -106
  514. data/app/javascript/stylesheets/openlayers.css +0 -1
  515. data/app/models/concerns/geoblacklight/solr_document/carto.rb +0 -17
  516. data/app/views/catalog/_arcgis.html.erb +0 -4
  517. data/app/views/catalog/_carto.html.erb +0 -4
  518. data/app/views/catalog/_data_dictionary.html.erb +0 -5
  519. data/app/views/catalog/_downloads_collapse.html.erb +0 -27
  520. data/app/views/catalog/_header_icons.html.erb +0 -3
  521. data/app/views/catalog/_index_split_default.html.erb +0 -30
  522. data/app/views/catalog/_results_pagination.html.erb +0 -12
  523. data/app/views/catalog/_show_default_attribute_table.html.erb +0 -19
  524. data/app/views/catalog/_show_default_display_note.html.erb +0 -7
  525. data/app/views/catalog/_show_default_viewer_container.html.erb +0 -28
  526. data/app/views/catalog/_show_downloads.html.erb +0 -23
  527. data/app/views/catalog/_show_header_default.html.erb +0 -4
  528. data/app/views/catalog/_show_sidebar.html.erb +0 -16
  529. data/app/views/catalog/_show_sidebar_static_map.html.erb +0 -10
  530. data/app/views/catalog/_show_web_services.html.erb +0 -11
  531. data/app/views/catalog/_web_services.html.erb +0 -9
  532. data/app/views/catalog/_web_services_wms.html.erb +0 -13
  533. data/app/views/download/hgl.html.erb +0 -27
  534. data/app/views/relation/_relations.html.erb +0 -15
  535. data/app/views/shared/_header_navbar.html.erb +0 -46
  536. data/babel.config.json +0 -4
  537. data/jest.config.js +0 -25
  538. data/lib/generators/geoblacklight/templates/assets/_blacklight.scss +0 -1
  539. data/lib/generators/geoblacklight/templates/assets/_geoblacklight.scss +0 -1
  540. data/lib/generators/geoblacklight/templates/assets/geoblacklight.js +0 -9
  541. data/lib/generators/geoblacklight/templates/clover.js +0 -5
  542. data/lib/generators/geoblacklight/templates/ol.js +0 -6
  543. data/lib/generators/geoblacklight/templates/package-test.json +0 -10
  544. data/lib/generators/geoblacklight/templates/settings.gbl_v1.yml +0 -195
  545. data/lib/geoblacklight/download/hgl_download.rb +0 -20
  546. data/lib/geoblacklight/view_helper_override.rb +0 -16
  547. data/setupJest.js +0 -14
  548. data/spec/helpers/arcgis_helper_spec.rb +0 -16
  549. data/spec/helpers/carto_helper_spec.rb +0 -13
  550. data/spec/helpers/geoblacklight/geoblacklight_helper_behavior_spec.rb +0 -27
  551. data/spec/javascripts/util_spec.js +0 -10
  552. data/spec/lib/geoblacklight/download/hgl_download_spec.rb +0 -62
  553. data/spec/lib/geoblacklight/view_helper_override_spec.rb +0 -29
  554. data/spec/models/concerns/geoblacklight/solr_document/carto_spec.rb +0 -43
  555. data/spec/test_app_templates/Gemfile.extra +0 -2
  556. data/spec/views/catalog/_document_split.html.erb_spec.rb +0 -7
  557. data/spec/views/catalog/_index_split.html.erb_spec.rb +0 -7
  558. data/spec/views/catalog/_results_pagination.html.erb_spec.rb +0 -11
  559. data/spec/views/catalog/_show_downloads.html.erb_spec.rb +0 -43
  560. data/spec/views/catalog/_show_tools.html.erb_spec.rb +0 -38
  561. data/vendor/assets/images/fullscreen.png +0 -0
  562. data/vendor/assets/images/fullscreen@2x.png +0 -0
  563. data/vendor/assets/images/layers-2x.png +0 -0
  564. data/vendor/assets/images/layers.png +0 -0
  565. data/vendor/assets/images/marker-icon-2x.png +0 -0
  566. data/vendor/assets/images/marker-icon.png +0 -0
  567. data/vendor/assets/images/marker-shadow.png +0 -0
  568. data/vendor/assets/javascripts/Leaflet.fullscreen.js +0 -152
  569. data/vendor/assets/javascripts/esri-leaflet.js +0 -12
  570. data/vendor/assets/javascripts/esri-leaflet.js.map +0 -1
  571. data/vendor/assets/javascripts/leaflet-iiif.js +0 -323
  572. data/vendor/assets/javascripts/leaflet-src.js.erb +0 -14126
  573. data/vendor/assets/javascripts/leaflet-src.js.map +0 -1
  574. data/vendor/assets/javascripts/native.history.js +0 -1
  575. data/vendor/assets/stylesheets/leaflet.css +0 -640
  576. data/vendor/assets/stylesheets/leaflet.fullscreen.css +0 -40
  577. /data/app/{views/catalog/_show_default_viewer_information.html.erb → components/geoblacklight/index_map_inspect_component.html.erb} +0 -0
@@ -35,7 +35,7 @@ class CatalogController < ApplicationController
35
35
  # solr field configuration for search results/index views
36
36
  # config.index.show_link = 'title_display'
37
37
  # config.index.record_display_type = 'format'
38
-
38
+ config.index.document_component = Geoblacklight::SearchResultComponent
39
39
  config.index.title_field = Settings.FIELDS.TITLE
40
40
 
41
41
  # solr field configuration for document/show views
@@ -43,16 +43,9 @@ class CatalogController < ApplicationController
43
43
  # To move metadata above the map viewer,
44
44
  # remove the lines deleting and re-adding the :show partial
45
45
  config.show.display_type_field = "format"
46
- config.show.partials.delete(:show)
47
- config.show.partials << "show_default_display_note"
48
- config.show.partials << "show_default_viewer_container"
49
- config.show.partials << "show_default_attribute_table"
50
- config.show.partials << "show_default_viewer_information"
51
- config.show.partials << :show
52
-
53
- ##
54
- # Configure the index document presenter.
55
- config.index.document_presenter_class = Geoblacklight::DocumentPresenter
46
+ config.show.document_component = Geoblacklight::DocumentComponent
47
+ config.show.sidebar_component = Geoblacklight::Document::SidebarComponent
48
+ config.header_component = Geoblacklight::HeaderComponent
56
49
 
57
50
  # solr fields that will be treated as facets by the blacklight application
58
51
  # The ordering of the field names is the order of the display
@@ -307,9 +300,8 @@ class CatalogController < ApplicationController
307
300
 
308
301
  # Custom tools for GeoBlacklight
309
302
  config.add_show_tools_partial :metadata, if: proc { |_context, _config, options| options[:document] && (Settings.METADATA_SHOWN & options[:document].references.refs.map(&:type).map(&:to_s)).any? }
310
- config.add_show_tools_partial :carto, partial: "carto", if: proc { |_context, _config, options| options[:document] && options[:document].carto_reference.present? }
311
- config.add_show_tools_partial :arcgis, partial: "arcgis", if: proc { |_context, _config, options| options[:document] && options[:document].arcgis_urls.present? }
312
- config.add_show_tools_partial :data_dictionary, partial: "data_dictionary", if: proc { |_context, _config, options| options[:document] && options[:document].data_dictionary_download.present? }
303
+ config.add_show_tools_partial :arcgis, component: Geoblacklight::ArcgisComponent, if: proc { |_context, _config, options| options[:document] && options[:document].arcgis_urls.present? }
304
+ config.add_show_tools_partial :data_dictionary, component: Geoblacklight::DataDictionaryDownloadComponent, if: proc { |_context, _config, options| options[:document] && options[:document].data_dictionary_download.present? }
313
305
 
314
306
  # Configure basemap provider for GeoBlacklight maps (uses https only basemap
315
307
  # providers with open licenses)
@@ -332,7 +324,7 @@ class CatalogController < ApplicationController
332
324
  end
333
325
 
334
326
  def web_services
335
- @response, @documents = action_documents
327
+ @docs = action_documents
336
328
 
337
329
  respond_to do |format|
338
330
  format.html do
@@ -0,0 +1,31 @@
1
+ # syntax = docker/dockerfile:1
2
+
3
+ # Make sure RUBY_VERSION matches the Ruby version in .ruby-version and Gemfile
4
+ ARG RUBY_VERSION=3.3.4
5
+ FROM registry.docker.com/library/ruby:$RUBY_VERSION-slim AS base
6
+
7
+ RUN apt-get update -qq && \
8
+ apt-get install --no-install-recommends -y build-essential git pkg-config nodejs npm curl libsqlite3-0
9
+
10
+ RUN npm install --global yarn
11
+
12
+ ENV RAILS_ENV="development" \
13
+ BUNDLE_PATH="/usr/local/bundle"
14
+
15
+ # Rails app lives here
16
+ WORKDIR /rails
17
+
18
+ # Install gems and javascript packages
19
+ COPY Gemfile .
20
+ RUN bundle install
21
+ COPY package.json .
22
+ RUN yarn install
23
+
24
+ FROM ghcr.io/geoblacklight/geoblacklight:base AS app
25
+
26
+ # Add application code
27
+ COPY . .
28
+
29
+ # Run the server script by default, this can be overwritten at runtime
30
+ EXPOSE 3000
31
+ CMD ["sh", "start-server"]
@@ -0,0 +1,26 @@
1
+ services:
2
+ app:
3
+ image: ghcr.io/geoblacklight/geoblacklight:main
4
+ ports:
5
+ - "3001:3001"
6
+ links:
7
+ - "solr:solr"
8
+ environment:
9
+ SOLR_URL: "http://solr:8983/solr/blacklight-core"
10
+ RAILS_DEVELOPMENT_HOSTS: ".githubpreview.dev,.preview.app.github.dev,.app.github.dev,.csb.app"
11
+ depends_on:
12
+ - solr
13
+ command: sh start-server.sh
14
+ solr:
15
+ image: solr:9.6.1
16
+ volumes:
17
+ - $PWD/solr/conf:/opt/solr/conf
18
+ ports:
19
+ - 8984:8983
20
+ entrypoint:
21
+ - docker-entrypoint.sh
22
+ - solr-precreate
23
+ - blacklight-core
24
+ - /opt/solr/conf
25
+ - "-Xms256m"
26
+ - "-Xmx512m"
@@ -0,0 +1,21 @@
1
+ #!/bin/sh
2
+
3
+ bundle install
4
+ yarn install
5
+
6
+ # Build and Install local copy of @geoblackligt/frontend
7
+ # These steps are included in the docker image instead if the image build script
8
+ # to reduce the size of the layers that docker compose has to pull with each new version.
9
+ gempath=$(bundle exec gem which geoblacklight | sed 's/\/lib\/geoblacklight.rb//')
10
+ if [ ! -d "$gempath/dist/" ]; then
11
+ cd $gempath
12
+ yarn install
13
+ yarn vite build
14
+ cd -
15
+ fi
16
+ yarn add file:$gempath
17
+
18
+ # Start the server
19
+ bundle exec rake db:prepare
20
+ bundle exec rake geoblacklight:index:seed
21
+ bundle exec rails server -b 0.0.0.0 -p 3001
@@ -1,6 +1,12 @@
1
1
  {
2
2
  "dependencies": {
3
- "@geoblacklight/frontend": "^4.4"
3
+ "@github/auto-complete-element": "3.6.2",
4
+ "@hotwired/stimulus": "^3.2.2",
5
+ "@hotwired/turbo-rails": "^8.0.4",
6
+ "@popperjs/core": "2.11.8",
7
+ "blacklight-frontend": "8.3.0",
8
+ "bootstrap": "^5.3.3",
9
+ "sass": "^1.77.7"
4
10
  },
5
11
  "devDependencies": {
6
12
  "vite": "^5.1.5",
@@ -1,9 +1,3 @@
1
- # Configurable Logo Used for CartoDB export
2
- APPLICATION_LOGO_URL: 'http://geoblacklight.org/images/geoblacklight-logo.png'
3
-
4
- # Carto OneClick Service https://carto.com/engine/open-in-carto/
5
- CARTO_ONECLICK_LINK: 'http://oneclick.carto.com/'
6
-
7
1
  # ArcGIS Online Base URL
8
2
  ARCGIS_BASE_URL: 'https://www.arcgis.com/home/webmap/viewer.html'
9
3
 
@@ -98,7 +92,7 @@ METADATA_SHOWN:
98
92
  - 'html'
99
93
 
100
94
  # (For external Download) timeout and open_timeout parameters for Faraday
101
- TIMEOUT_DOWNLOAD: 16
95
+ TIMEOUT_DOWNLOAD: 180
102
96
 
103
97
  # (For WMS inspection) timeout and open_timeout parameters for Faraday
104
98
  TIMEOUT_WMS: 4
@@ -215,7 +209,15 @@ RELATIONSHIPS_SHOWN:
215
209
  inverse: :VERSION_OF_ANCESTORS
216
210
  label: geoblacklight.relations.version_of_descendants
217
211
  query_type: descendants
218
-
212
+
213
+ # Vector data download formats to be displayed
214
+ DOWNLOAD_FORMATS:
215
+ VECTOR:
216
+ - 'Shapefile'
217
+ - 'KMZ'
218
+ - 'GeoJSON'
219
+ - 'CSV'
220
+
219
221
  # WMS Parameters
220
222
  WMS_PARAMS:
221
223
  :SERVICE: 'WMS'
@@ -224,11 +226,19 @@ WMS_PARAMS:
224
226
  :STYLES: ''
225
227
  :SRS: 'EPSG:4326'
226
228
  :EXCEPTIONS: 'application/json'
227
- :INFO_FORMAT: 'text/html'
229
+ :INFO_FORMAT: 'application/json'
228
230
 
229
231
  # Settings for leaflet
230
232
  LEAFLET:
231
233
  MAP:
234
+ BOUNDSOVERLAY:
235
+ INDEX:
236
+ color: '#3388ff'
237
+ SHOW:
238
+ color: '#3388ff'
239
+ STATIC_MAP:
240
+ color: '#3388ff'
241
+ SELECTED_COLOR: "#2C7FB8"
232
242
  LAYERS:
233
243
  DETECT_RETINA: true
234
244
  INDEX:
@@ -236,57 +246,52 @@ LEAFLET:
236
246
  color: "#7FCDBB"
237
247
  weight: 1
238
248
  radius: 4
249
+ sr_color_name: "Green"
239
250
  UNAVAILABLE:
240
251
  <<: *default
241
252
  color: "#EDF8B1"
253
+ sr_color_name: "Yellow"
242
254
  SELECTED:
243
255
  <<: *default
244
256
  color: "#2C7FB8"
245
- VIEWERS:
246
- DYNAMICMAPLAYER:
247
- CONTROLS:
248
- - 'Opacity'
249
- - 'Fullscreen'
250
- FEATURELAYER:
251
- CONTROLS:
252
- - 'Opacity'
253
- - 'Fullscreen'
254
- IIIF:
255
- CONTROLS:
256
- - 'Fullscreen'
257
- IMAGEMAPLAYER:
258
- CONTROLS:
259
- - 'Opacity'
260
- - 'Fullscreen'
261
- INDEXMAP:
262
- CONTROLS:
263
- - 'Fullscreen'
264
- TILEDMAPLAYER:
265
- CONTROLS:
266
- - 'Opacity'
267
- - 'Fullscreen'
268
- WMS:
269
- CONTROLS:
270
- - 'Opacity'
271
- - 'Fullscreen'
257
+ sr_color_name: "Blue"
272
258
 
273
259
  # Toggle the help text feature that offers users context
274
260
  HELP_TEXT:
275
261
  viewer_protocol:
262
+ - 'cog'
276
263
  - 'dynamic_map_layer'
277
264
  - 'feature_layer'
278
265
  - 'iiif'
279
266
  - 'iiif_manifest'
280
267
  - 'image_map_layer'
281
268
  - 'index_map'
282
- - 'tiled_map_layer'
283
- - 'wms'
284
- - 'tms'
285
269
  - 'oembed'
286
270
  - 'pmtiles'
287
- - 'cog'
271
+ - 'tiled_map_layer'
272
+ - 'tilejson'
273
+ - 'tms'
274
+ - 'wms'
275
+ - 'wmts'
276
+ - 'xyz'
288
277
 
289
278
  # Enable catalog#show sidebar static map for items with the following viewer protocols
290
279
  SIDEBAR_STATIC_MAP:
291
280
  - 'iiif'
292
281
  - 'iiif_manifest'
282
+
283
+ IIIF_DRAG_DROP_LINK: '@manifest?manifest=@manifest'
284
+
285
+ ICON_MAPPING:
286
+ chicago: university-of-chicago
287
+ illinois: university-of-illinois-urbana-champaign
288
+ iowa: university-of-iowa
289
+ maryland: university-of-maryland
290
+ michigan-state: michigan-state-university
291
+ michigan: university-of-michigan
292
+ minnesota: university-of-minnesota
293
+ nebraska: university-of-nebraska-lincoln
294
+ ohio-state: the-ohio-state-university
295
+ penn-state: pennsylvania-state-university
296
+ purdue: purdue-university
297
+ wisconsin: university-of-wisconsin-madison
@@ -1,8 +1,23 @@
1
- import { defineConfig } from 'vite'
2
- import rails from 'vite-plugin-rails'
1
+ import { defineConfig, searchForWorkspaceRoot } from "vite";
2
+ import rails from "vite-plugin-rails";
3
3
 
4
- export default defineConfig({
5
- plugins: [
6
- rails(),
7
- ]
8
- })
4
+ export default defineConfig(({ mode }) => {
5
+ return {
6
+ build: {
7
+ minify: mode === "production",
8
+ manifest: true,
9
+ sourcemap: true,
10
+ },
11
+ server: {
12
+ fs: {
13
+ allow: [
14
+ // search up for workspace root
15
+ searchForWorkspaceRoot(process.cwd()),
16
+ // One directory up (from .internal_test_app where we do `yarn link @geoblacklight`)
17
+ `${process.cwd()}/..`,
18
+ ],
19
+ },
20
+ },
21
+ plugins: [rails()],
22
+ };
23
+ });
@@ -28,6 +28,22 @@ module Geoblacklight
28
28
  "#{west} #{south} #{east} #{north}"
29
29
  end
30
30
 
31
+ # Output a GeoJSON representation of the bounding box
32
+ def to_geojson
33
+ {
34
+ "type" => "Polygon",
35
+ "coordinates" => [
36
+ [
37
+ [west.to_f, south.to_f],
38
+ [west.to_f, north.to_f],
39
+ [east.to_f, north.to_f],
40
+ [east.to_f, south.to_f],
41
+ [west.to_f, south.to_f]
42
+ ]
43
+ ]
44
+ }.to_json
45
+ end
46
+
31
47
  ##
32
48
  # Create a Geoblacklight::BoundingBox from a Solr rectangle syntax
33
49
  # @param [String] bbox as "W S E N"
@@ -21,7 +21,6 @@ module Geoblacklight
21
21
  tms: "https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification",
22
22
  tilejson: "https://github.com/mapbox/tilejson-spec",
23
23
  xyz: "https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames",
24
- hgl: "http://schema.org/DownloadAction",
25
24
  feature_layer: "urn:x-esri:serviceType:ArcGIS#FeatureLayer",
26
25
  tiled_map_layer: "urn:x-esri:serviceType:ArcGIS#TiledMapLayer",
27
26
  dynamic_map_layer: "urn:x-esri:serviceType:ArcGIS#DynamicMapLayer",
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Geoblacklight
4
+ class CsvDownload < Geoblacklight::Download
5
+ CSV_DOWNLOAD_PARAMS = {service: "wfs",
6
+ version: "2.0.0",
7
+ request: "GetFeature",
8
+ srsName: "EPSG:4326",
9
+ outputformat: "csv"}.freeze
10
+
11
+ def initialize(document, options = {})
12
+ request_params = CSV_DOWNLOAD_PARAMS.merge(typeName: document.wxs_identifier)
13
+ super(document, {
14
+ type: "csv",
15
+ extension: "csv",
16
+ request_params: request_params,
17
+ content_type: "text/csv",
18
+ service_type: "wfs"
19
+ }.merge(options))
20
+ end
21
+ end
22
+ end
@@ -11,7 +11,7 @@ module Geoblacklight
11
11
  }.freeze
12
12
 
13
13
  def initialize(document, options = {})
14
- request_params = GEOJSON_DOWNLOAD_PARAMS.merge(typeName: document[Settings.FIELDS.WXS_IDENTIFIER])
14
+ request_params = GEOJSON_DOWNLOAD_PARAMS.merge(typeName: document.wxs_identifier)
15
15
  super(document, {
16
16
  type: "geojson",
17
17
  extension: "json",
@@ -8,7 +8,7 @@ module Geoblacklight
8
8
  }.freeze
9
9
 
10
10
  def initialize(document, options = {})
11
- request_params = GEOTIFF_DOWNLOAD_PARAMS.merge(layers: document[Settings.FIELDS.WXS_IDENTIFIER])
11
+ request_params = GEOTIFF_DOWNLOAD_PARAMS.merge(layers: document.wxs_identifier)
12
12
  super(document, {
13
13
  type: "geotiff",
14
14
  extension: "tif",
@@ -11,7 +11,7 @@ module Geoblacklight
11
11
 
12
12
  def initialize(document, options = {})
13
13
  bbox_wsen = document.geometry.bounding_box
14
- request_params = KMZ_DOWNLOAD_PARAMS.merge(layers: document[Settings.FIELDS.WXS_IDENTIFIER], bbox: bbox_wsen)
14
+ request_params = KMZ_DOWNLOAD_PARAMS.merge(layers: document.wxs_identifier, bbox: bbox_wsen)
15
15
  super(document, {
16
16
  type: "kmz",
17
17
  extension: "kmz",
@@ -9,7 +9,7 @@ module Geoblacklight
9
9
  outputformat: "SHAPE-ZIP"}.freeze
10
10
 
11
11
  def initialize(document, options = {})
12
- request_params = SHAPEFILE_DOWNLOAD_PARAMS.merge(typeName: document[Settings.FIELDS.WXS_IDENTIFIER])
12
+ request_params = SHAPEFILE_DOWNLOAD_PARAMS.merge(typeName: document.wxs_identifier)
13
13
  super(document, {
14
14
  type: "shapefile",
15
15
  extension: "zip",
@@ -102,7 +102,7 @@ module Geoblacklight
102
102
  # URL for download
103
103
  # @return [String] URL that is checked in download
104
104
  def url
105
- url = @document.references.send(@options[:service_type]).endpoint
105
+ url = @document.references.public_send(@options[:service_type]).endpoint
106
106
  url += "/reflect" if @options[:reflect]
107
107
  url
108
108
  end
@@ -7,7 +7,6 @@ require "faraday"
7
7
  require "geoblacklight/version"
8
8
  require "nokogiri"
9
9
  require "mime/types"
10
- require "handlebars_assets"
11
10
 
12
11
  module Geoblacklight
13
12
  class Engine < ::Rails::Engine
@@ -16,14 +15,24 @@ module Geoblacklight
16
15
  initializer "geoblacklight.helpers" do
17
16
  config.after_initialize do
18
17
  ActionView::Base.send :include, GeoblacklightHelper
19
- ActionView::Base.send :include, CartoHelper
20
18
  end
21
19
  end
22
20
 
23
- config.to_prepare do
24
- unless SearchHistoryController.helpers.is_a?(Geoblacklight::ViewHelperOverride)
25
- SearchHistoryController.send(:helper, Geoblacklight::ViewHelperOverride)
26
- end
21
+ PRECOMPILE_ASSETS = %w[favicon.ico geoblacklight/geoblacklight.umd.cjs geoblacklight/geoblacklight.umd.cjs.map geoblacklight/geoblacklight.js geoblacklight/geoblacklight.js.map].freeze
22
+
23
+ # Make the source JS and CSS available to built apps
24
+ initializer "geoblacklight.assets" do |app|
25
+ app.config.assets.paths << Geoblacklight::Engine.root.join("app/javascript")
26
+ app.config.assets.paths << Geoblacklight::Engine.root.join("app/assets")
27
+ app.config.assets.precompile += Geoblacklight::Engine::PRECOMPILE_ASSETS
28
+ end
29
+
30
+ # Add the Geoblacklight importmap to the built app's importmap
31
+ initializer "geoblacklight.importmap", before: "importmap" do |app|
32
+ next unless app.config.respond_to?(:importmap) # skip for Vite
33
+
34
+ app.config.importmap.paths << Engine.root.join("config/importmap.rb")
35
+ app.config.importmap.cache_sweepers << Engine.root.join("app/assets/javascripts")
27
36
  end
28
37
  end
29
38
  end
@@ -7,7 +7,7 @@ module Geoblacklight
7
7
  end
8
8
 
9
9
  def viewer_protocol
10
- return "map" if viewer_preference.nil?
10
+ return if viewer_preference.nil?
11
11
  viewer_preference.keys.first.to_s
12
12
  end
13
13
 
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "geoblacklight/faraday_middleware/follow_redirects"
3
+ require "geo_combine"
4
+
4
5
  module Geoblacklight
5
6
  module Metadata
6
7
  ##
@@ -4,6 +4,7 @@ module Geoblacklight
4
4
  # References is a geoblacklight-schema dct:references parser
5
5
  class References
6
6
  attr_reader :refs, :reference_field
7
+
7
8
  def initialize(document, reference_field = Settings.FIELDS.REFERENCES)
8
9
  @document = document
9
10
  @reference_field = reference_field
@@ -31,7 +32,7 @@ module Geoblacklight
31
32
  # Accessor for a document's file format
32
33
  # @return [String] file format for the document
33
34
  def format
34
- @document[Settings.FIELDS.FORMAT]
35
+ @document.file_format
35
36
  end
36
37
 
37
38
  ##
@@ -72,9 +73,9 @@ module Geoblacklight
72
73
  ##
73
74
  # Returns all of the Esri webservices for given set of references
74
75
  def esri_webservices
75
- %w[tiled_map_layer dynamic_map_layer feature_layer image_map_layer].map do |layer_type|
76
+ %w[tiled_map_layer dynamic_map_layer feature_layer image_map_layer].filter_map do |layer_type|
76
77
  send(layer_type)
77
- end.compact
78
+ end
78
79
  end
79
80
 
80
81
  private
@@ -103,11 +104,29 @@ module Geoblacklight
103
104
  # @return (see #downloads_by_format)
104
105
  def vector_download_formats
105
106
  return unless wms.present? && wfs.present?
106
- {
107
- shapefile: wfs.to_hash,
108
- kmz: wms.to_hash,
109
- geojson: wfs.to_hash
110
- }
107
+
108
+ download_formats = {}
109
+ format_list.each { |format| download_formats.merge!(web_service_hash(format)) }
110
+ download_formats
111
+ end
112
+
113
+ def format_list
114
+ Settings.DOWNLOAD_FORMATS&.VECTOR
115
+ end
116
+
117
+ def web_service_hash(format)
118
+ case format
119
+ when "Shapefile"
120
+ {shapefile: wfs.to_hash}
121
+ when "KMZ"
122
+ {kmz: wms.to_hash}
123
+ when "GeoJSON"
124
+ {geojson: wfs.to_hash}
125
+ when "CSV"
126
+ {csv: wfs.to_hash}
127
+ else
128
+ {}
129
+ end
111
130
  end
112
131
 
113
132
  ##
@@ -9,7 +9,6 @@ module Geoblacklight
9
9
 
10
10
  def call(mapper, _options = {})
11
11
  mapper.get "file/:id", action: "file", as: :file
12
- mapper.get "hgl/:id", action: "hgl", as: :hgl
13
12
  end
14
13
  end
15
14
  end
@@ -2,8 +2,5 @@
2
2
 
3
3
  module Geoblacklight
4
4
  module Routes
5
- require "geoblacklight/routes/exportable"
6
- require "geoblacklight/routes/downloadable"
7
- require "geoblacklight/routes/wms"
8
5
  end
9
6
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Geoblacklight
4
- VERSION = "4.4.1"
4
+ VERSION = "5.0.0-alpha.11"
5
5
  end
@@ -15,15 +15,18 @@ module Geoblacklight
15
15
  end
16
16
 
17
17
  def format
18
+ JSON.parse(@response.body)
19
+ rescue
18
20
  page = Nokogiri::HTML(@response.body)
19
- table_values = {values: []}
20
- page.css("th").each do |th|
21
- table_values[:values].push([th.text])
22
- end
21
+ properties = {}
22
+ values = {}
23
23
  page.css("td").each_with_index do |td, index|
24
- table_values[:values][index].push(td.text) unless index >= table_values[:values].count
24
+ values[index] = td.text
25
+ end
26
+ page.css("th").each_with_index do |th, index|
27
+ properties[th.text] = values[index] unless index >= values.keys.count
25
28
  end
26
- table_values
29
+ {features: [{properties: properties, isHTML: true}]}
27
30
  end
28
31
 
29
32
  def error?
data/lib/geoblacklight.rb CHANGED
@@ -2,38 +2,14 @@
2
2
 
3
3
  require "active_support/dependencies"
4
4
  require "geoblacklight/engine"
5
+ require "zeitwerk"
6
+ loader = Zeitwerk::Loader.for_gem
7
+ loader.ignore("#{__dir__}/generators")
8
+ loader.collapse("#{__dir__}/geoblacklight/download")
9
+ loader.collapse("#{__dir__}/geoblacklight/wms_layer")
10
+ loader.setup
5
11
 
6
12
  module Geoblacklight
7
- require "geoblacklight/bounding_box"
8
- require "geoblacklight/constants"
9
- require "geoblacklight/exceptions"
10
- require "geoblacklight/geometry"
11
- require "geoblacklight/view_helper_override"
12
- require "geoblacklight/item_viewer"
13
- require "geoblacklight/wms_layer"
14
- require "geoblacklight/wms_layer/feature_info_response"
15
- require "geoblacklight/download"
16
- require "geoblacklight/download/geojson_download"
17
- require "geoblacklight/download/geotiff_download"
18
- require "geoblacklight/download/kmz_download"
19
- require "geoblacklight/download/shapefile_download"
20
- require "geoblacklight/download/hgl_download"
21
- require "geoblacklight/metadata"
22
- require "geoblacklight/metadata/base"
23
- require "geoblacklight/metadata/fgdc"
24
- require "geoblacklight/metadata/html"
25
- require "geoblacklight/metadata/iso19139"
26
- require "geoblacklight/metadata_transformer"
27
- require "geoblacklight/metadata_transformer/base"
28
- require "geoblacklight/metadata_transformer/fgdc"
29
- require "geoblacklight/metadata_transformer/iso19139"
30
- require "geoblacklight/reference"
31
- require "geoblacklight/references"
32
- require "geoblacklight/routes"
33
- require "geoblacklight/relation/descendants"
34
- require "geoblacklight/relation/ancestors"
35
- require "geoblacklight/relation/relation_response"
36
-
37
13
  def self.logger
38
14
  ::Rails.logger
39
15
  end