geoblacklight 4.4.2 → 5.0.0.pre.alpha.11

Sign up to get free protection for your applications and to get access to all the features.
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 +8 -24
  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.2"
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