blacklight_allmaps 0.2.0 → 0.3.0

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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +47 -6
  3. data/Rakefile +4 -0
  4. data/app/assets/javascripts/blacklight/allmaps/blacklight-allmaps.esm.js +41 -0
  5. data/app/assets/javascripts/blacklight/allmaps/blacklight-allmaps.esm.js.map +1 -1
  6. data/app/assets/javascripts/blacklight/allmaps/blacklight-allmaps.js +41 -0
  7. data/app/assets/javascripts/blacklight/allmaps/blacklight-allmaps.js.map +1 -1
  8. data/app/controllers/allmaps/annotations_controller.rb +65 -0
  9. data/app/helpers/blacklight/allmaps/application_helper.rb +1 -1
  10. data/app/javascript/blacklight/allmaps/index.js +6 -0
  11. data/app/javascript/blacklight/allmaps/update_georef_links.js +36 -0
  12. data/app/jobs/blacklight/allmaps/store_sidecar_annotation.rb +4 -1
  13. data/app/models/concerns/blacklight/allmaps/solr_document.rb +1 -2
  14. data/app/views/allmaps/show/_blacklight.html.erb +1 -1
  15. data/app/views/allmaps/show/_geoblacklight.html.erb +1 -1
  16. data/app/views/allmaps/sidebar/_allmaps.html.erb +4 -32
  17. data/app/views/annotations/_annotation.json.jbuilder +1 -0
  18. data/app/views/annotations/_pagination.json.jbuilder +9 -0
  19. data/app/views/annotations/index.json.jbuilder +4 -0
  20. data/app/views/annotations/show.json.jbuilder +1 -0
  21. data/app/views/catalog/_show_allmaps_tabbed_viewer_container.html.erb +3 -3
  22. data/config/locales/allmaps.en.yml +11 -0
  23. data/config/routes.rb +7 -0
  24. data/lib/blacklight/allmaps/tasks/index.rake +6 -57
  25. data/lib/blacklight/allmaps/tasks/sidecars.rake +9 -0
  26. data/lib/blacklight/allmaps/version.rb +1 -1
  27. data/lib/generators/blacklight/allmaps/blacklight_generator.rb +48 -0
  28. data/lib/generators/blacklight/allmaps/config_generator.rb +2 -54
  29. data/lib/generators/blacklight/allmaps/geoblacklight_generator.rb +50 -0
  30. data/lib/generators/blacklight/allmaps/install_generator.rb +10 -0
  31. metadata +26 -7
  32. data/app/controllers/blacklight/allmaps/application_controller.rb +0 -6
  33. data/app/jobs/blacklight/allmaps/application_job.rb +0 -6
  34. data/app/mailers/blacklight/allmaps/application_mailer.rb +0 -8
  35. data/app/models/blacklight/allmaps/application_record.rb +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b6dd1b81643cf47fb27e96e46ebd57783c7a276f0c62d4a955358eddaccaa2ba
4
- data.tar.gz: 55425ab5cabddc7f09b8da4bf81a421c5fbbc57e9b5e5925a874750a285cb9e0
3
+ metadata.gz: 1b77dce03fda3d3aab9db13861e8e1fc6b0dc8e39db47dcf75a8dc8ee34a27f2
4
+ data.tar.gz: 83e85dc411bcacefcb92b0b9b12701e778c58116e6cefda56768de040f0d7c50
5
5
  SHA512:
6
- metadata.gz: cb4bf70dcd2491554327acaae79c8fd8fa0ff0eff8fa4a32728f602090072a5ca59c961003db9f9847f4cdbac61c22cab8dfd7358f223b62b7209da72e32631b
7
- data.tar.gz: 1fbab7b1404ff1ddb861df8163c2ac17e5f5105bad2e5947170032f0002363e5576656d39459504c584317e8df169e5e382a8efc47e3814dc3ffccc4987e53b3
6
+ metadata.gz: b182818f63f0e5a5fca137c8e7fbb8373a8e7955ffb93650a9fb0ccae01fbe2daaecedf29967c73bb5617c86cd92672653c67291bb3fe8244e0459180d4f205a
7
+ data.tar.gz: c9419afe74db352bdf7160b3900a856914b73f2171f9f13b0425dbe8087feb8b6142ccf78f000ec8dc4f545ce8064b938dec9452ee72a4417e37fd4ae0899b7b
data/README.md CHANGED
@@ -36,6 +36,27 @@ LIGHT=blacklight bundle exec rails generate blacklight:allmaps:install
36
36
  LIGHT=geoblacklight bundle exec rails generate blacklight:allmaps:install
37
37
  ```
38
38
 
39
+ ## CatalogController Configuration
40
+
41
+ Configure options for local use are set into the `catalog_controller.rb` file.
42
+
43
+ ### Blacklight
44
+
45
+ ```ruby
46
+ # Blacklight::Allmaps Viewer
47
+ config.show.partials.insert(1, :blacklight_allmaps)
48
+ config.default_solr_unique_key = "id"
49
+ config.default_georeferenced_field = "bl_georeferenced_bsi"
50
+ config.default_iiif_manifest_field = "iiif_manifest_url_ssi"
51
+ ```
52
+
53
+ ### GeoBlacklight
54
+ ```ruby
55
+ # Blacklight::Allmaps Viewer
56
+ config.default_solr_unique_key = "id"
57
+ config.default_georeferenced_field = "gbl_georeferenced_b"
58
+ ```
59
+
39
60
  ## Rake Tasks
40
61
 
41
62
  ### Seed Fixtures
@@ -61,6 +82,13 @@ The rake task here kicks off a background harvest process that walks through you
61
82
  rake blacklight_allmaps:sidecars:harvest:allmaps
62
83
  ```
63
84
 
85
+ Alternatively, you can harvest Allmaps data for a list of identifers
86
+
87
+ ```bash
88
+ # For Blacklight or GeoBlacklight
89
+ rake "blacklight_allmaps:sidecars:harvest_ids[id1 id2 ...]"
90
+ ```
91
+
64
92
  ### Populate the Georeferenced Facet
65
93
 
66
94
  We expose the georeferenced items in the Blacklight user interface via a Georeferenced facet:
@@ -68,11 +96,8 @@ We expose the georeferenced items in the Blacklight user interface via a Georefe
68
96
  ![Screen shot](doc/georeferenced_facet.png)
69
97
 
70
98
  ```bash
71
- # For Blacklight...
72
- LIGHT=blacklight rake blacklight_allmaps:index:bl_georeferenced_facet
73
-
74
- # For GeoBlacklight...
75
- LIGHT=geoblacklight rake blacklight_allmaps:index:gbl_georeferenced_facet
99
+ # For Blacklight or GeoBlacklight
100
+ rake blacklight_allmaps:index:georeferenced_facet
76
101
  ```
77
102
 
78
103
  ## ActiveRecord Objects — Blacklight::Allmaps::Sidecar
@@ -81,7 +106,8 @@ Blacklight::Allmaps adopts the SolrDocumentSidecar "sidecar" pattern from [Spotl
81
106
 
82
107
  We use this `document.sidecar_allmaps` object to hold the results of the Allmaps Annotation harvest task.
83
108
 
84
- The Blacklight::Allmaps::Sidecar object contains:
109
+ The `Blacklight::Allmaps::Sidecar` object contains:
110
+
85
111
  | Field | Value |
86
112
  | --- | --- |
87
113
  | id | primary key |
@@ -115,6 +141,21 @@ document.sidecar_allmaps =>
115
141
  updated_at: Tue, 26 Mar 2024 16:39:42.427682000 UTC +00:00>
116
142
  ```
117
143
 
144
+ ## Allmaps::AnnotationsController
145
+
146
+ We've added an annotations controller to the application to expose the `Blacklight::Allmaps::Sidecar` data we've harvested. This controller returns only JSON.
147
+
148
+ The `#fetch` method will query Allmaps in real time for updated annotation data, should a nightly harvest (rake) be insufficient for Solr indexing or local development needs.
149
+
150
+ ```
151
+ Routes for Blacklight::Allmaps::Engine:
152
+ fetch_allmaps_annotation GET /allmaps/annotations/:id/fetch(.:format) allmaps/annotations#fetch {:format=>:json}
153
+ allmaps_annotations GET /allmaps/annotations(.:format) allmaps/annotations#index {:format=>:json}
154
+ allmaps_annotation GET /allmaps/annotations/:id(.:format) allmaps/annotations#show {:format=>:json}
155
+ PATCH /allmaps/annotations/:id(.:format) allmaps/annotations#update {:format=>:json}
156
+ PUT /allmaps/annotations/:id(.:format) allmaps/annotations#update {:format=>:json}
157
+ ```
158
+
118
159
  ## Contributing
119
160
 
120
161
  For Developer documentation see [doc/developer.md](./doc/development.md)
data/Rakefile CHANGED
@@ -1,12 +1,16 @@
1
+ require "rails"
1
2
  require "rake"
2
3
  require "bundler"
4
+
3
5
  Bundler::GemHelper.install_tasks
4
6
 
7
+ require "bundler/setup"
5
8
  require "bundler/gem_tasks"
6
9
 
7
10
  require "rspec/core/rake_task"
8
11
  require "engine_cart/rake_task"
9
12
  require "solr_wrapper"
13
+ require "solr_wrapper/rake_task"
10
14
  require "blacklight/allmaps/rake_task"
11
15
 
12
16
  task default: :ci
@@ -26771,6 +26771,47 @@ function initializeBlacklightMap() {
26771
26771
  }
26772
26772
  // app/javascript/blacklight/allmaps/initialize_blacklight_map.js
26773
26773
 
26774
+ // update_georef_links.js
26775
+ const updateGeorefLinks = async () => {
26776
+ const sidebarElement = document.getElementById('allmaps-sidebar');
26777
+ if (sidebarElement) {
26778
+ const manifestUrl = sidebarElement.getAttribute('data-iiif-manifest');
26779
+ const documentId = sidebarElement.getAttribute('data-document-id');
26780
+ const georefDiv = document.getElementById('georeferencing');
26781
+ const annotationUrlByIIIFUri = `https://annotations.allmaps.org/?url=${manifestUrl}`;
26782
+
26783
+ try {
26784
+ const response = await fetch(annotationUrlByIIIFUri);
26785
+ if (!response.ok) {
26786
+ georefDiv.innerHTML = `<a href="https://editor.allmaps.org/#/collection?url=${manifestUrl}" target="_blank">Georeference this item</a>`;
26787
+
26788
+ const csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute("content");
26789
+ fetch(`/allmaps/annotations/${documentId}`, {
26790
+ method: "PUT",
26791
+ headers: {
26792
+ "X-CSRF-Token": csrfToken,
26793
+ "Content-Type": "application/json",
26794
+ "Accept": "application/json"
26795
+ }
26796
+ })
26797
+ .then(response => response.json())
26798
+ .then(data => console.log(data))
26799
+ .catch(error => console.error(error));
26800
+
26801
+ } else {
26802
+ const annotationUrl = response.url;
26803
+ georefDiv.innerHTML = `<a href="https://viewer.allmaps.org/?url=${annotationUrl}" target="_blank">View this georeferenced item</a>`;
26804
+ }
26805
+ } catch (error) {
26806
+ console.error("Fetch error:", error);
26807
+ }
26808
+ }
26809
+ };
26810
+
26774
26811
  initializeGeoBlacklightMap();
26775
26812
  initializeBlacklightMap();
26813
+
26814
+ document.addEventListener('DOMContentLoaded', () => {
26815
+ updateGeorefLinks();
26816
+ });
26776
26817
  //# sourceMappingURL=blacklight-allmaps.esm.js.map