blacklight-spotlight 0.33.1 → 0.33.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 78348ea18057199e2df65dd4f77a17565870de28
4
- data.tar.gz: e05ebfa153e5d460fc98a5b693b35c58f486de5d
3
+ metadata.gz: 9929af9368b873e9eb460daed4109a840efbb870
4
+ data.tar.gz: b29558c9058a0e5632aee6a296072dcca65cadcd
5
5
  SHA512:
6
- metadata.gz: 99f7d04d673f41e1d635e1d79aa44e5ee13a2012c61c6d9e9119d99ce0c9f78a14ada590d674322c782f47d1b55d3d14fe9dfc6df581e0c0143accb6de4befc5
7
- data.tar.gz: c09d5b011c13f56d88093c82dca782f70e970b8b6c45e6b6990666762ec789359c716f9f57c141ef06f496eef605dfbe9ff729a329f2474f1e437b51f3a19f97
6
+ metadata.gz: 764a628705b402874bd623e4dbccab64d7e6115a4f654c9d733911b3e6fa55982380056661aca11340c861fafc29b237eb107129ca756d3563a389dcea5ee02c
7
+ data.tar.gz: 4c8de36275779e9702c720fdcbb57801c9e9e9a863229c3fefbcc2f805e9d08ee95613d5d9d6aa5f7c44c6e7bc73708ded9a8156a9a66fbaeaf6f35f6eb7d0f8
@@ -30,6 +30,12 @@ export default class Crop {
30
30
  this.iiifImageField.val(iiifObject.imageId);
31
31
  }
32
32
 
33
+ emptyIiifFields() {
34
+ this.iiifManifestField.val('');
35
+ this.iiifCanvasField.val('');
36
+ this.iiifImageField.val('');
37
+ }
38
+
33
39
  // Set the Crop tileSource and setup the cropper
34
40
  setTileSource(source) {
35
41
  if (source == this.tileSource) {
@@ -95,7 +101,9 @@ export default class Crop {
95
101
  crs: L.CRS.Simple,
96
102
  zoom: 0
97
103
  });
98
- this.iiifLayer = L.tileLayer.iiif(this.tileSource).addTo(this.iiifCropper);
104
+ this.iiifLayer = L.tileLayer.iiif(this.tileSource, {
105
+ tileSize: 512
106
+ }).addTo(this.iiifCropper);
99
107
 
100
108
  this.iiifCropBox = L.areaSelect({
101
109
  width: this.cropArea.data('crop-width') / 2,
@@ -155,8 +163,8 @@ export default class Crop {
155
163
  self.iiifCropper.panTo(bounds.getCenter());
156
164
 
157
165
  self.iiifCropBox.setDimensions({
158
- width: Math.abs(x),
159
- height: Math.abs(y)
166
+ width: Math.round(Math.abs(x)),
167
+ height: Math.round(Math.abs(y))
160
168
  });
161
169
 
162
170
  self.existingCropBoxSet = true;
@@ -200,6 +208,7 @@ export default class Crop {
200
208
  }
201
209
 
202
210
  successHandler(data, stat, xhr) {
211
+ this.emptyIiifFields();
203
212
  this.setTileSource(data.tilesource);
204
213
  }
205
214
  }
@@ -63,8 +63,11 @@ module Spotlight
63
63
  end
64
64
 
65
65
  def add_label
66
- return unless title_field && manifest.try(:label)
67
- solr_hash[title_field] = manifest.label
66
+ return unless title_fields.present? && manifest.try(:label)
67
+
68
+ Array.wrap(title_fields).each do |field|
69
+ solr_hash[field] = json_ld_value(manifest.label)
70
+ end
68
71
  end
69
72
 
70
73
  def add_image_urls
@@ -87,6 +90,12 @@ module Spotlight
87
90
  end
88
91
  end
89
92
 
93
+ def json_ld_value(value)
94
+ return value['@value'] if value.is_a?(Hash)
95
+ return value.find { |v| v['@language'] == default_json_ld_language }.try(:[], '@value') if value.is_a?(Array)
96
+ value
97
+ end
98
+
90
99
  def create_sidecars_for(*keys)
91
100
  missing_keys(keys).each do |k|
92
101
  exhibit.custom_fields.create! label: k, readonly_field: true
@@ -143,8 +152,12 @@ module Spotlight
143
152
  blacklight_config.show.try(:tile_source_field)
144
153
  end
145
154
 
146
- def title_field
147
- blacklight_config.index.try(:title_field)
155
+ def title_fields
156
+ Spotlight::Engine.config.iiif_title_fields || blacklight_config.index.try(:title_field)
157
+ end
158
+
159
+ def default_json_ld_language
160
+ Spotlight::Engine.config.default_json_ld_language
148
161
  end
149
162
 
150
163
  def sidecar
@@ -26,7 +26,7 @@ module Spotlight
26
26
  end
27
27
 
28
28
  def add_file_versions(solr_hash)
29
- solr_hash[Spotlight::Engine.config.thumbnail_field] = riiif.image_path(resource.upload_id, size: '400,400')
29
+ solr_hash[Spotlight::Engine.config.thumbnail_field] = riiif.image_path(resource.upload_id, size: '!400,400')
30
30
  end
31
31
 
32
32
  def add_sidecar_fields(solr_hash)
@@ -136,6 +136,8 @@ module Spotlight
136
136
  config.iiif_manifest_field = :iiif_manifest_url_ssi
137
137
  config.iiif_metadata_class = -> { Spotlight::Resources::IiifManifest::Metadata }
138
138
  config.iiif_collection_id_field = :collection_id_ssim
139
+ config.iiif_title_fields = nil
140
+ config.default_json_ld_language = 'en'
139
141
 
140
142
  config.masthead_initial_crop_selection = [1200, 120]
141
143
  config.thumbnail_initial_crop_selection = [120, 120]
@@ -1,3 +1,3 @@
1
1
  module Spotlight
2
- VERSION = '0.33.1'.freeze
2
+ VERSION = '0.33.2'.freeze
3
3
  end
@@ -132,7 +132,10 @@ module IiifResponses
132
132
  {
133
133
  "@id": 'uri://for-manifest2',
134
134
  "@type": 'sc:Manifest',
135
- "label": 'Test Manifest 2',
135
+ "label": {
136
+ "@value": 'Test Manifest 2',
137
+ "@language": 'en'
138
+ },
136
139
  "attribution": 'Attribution Data',
137
140
  "description": 'A test IIIF manifest',
138
141
  "license": 'http://www.example.org/license.html',
@@ -186,7 +189,16 @@ module IiifResponses
186
189
  {
187
190
  "@id": 'uri://for-manifest3',
188
191
  "@type": 'sc:Manifest',
189
- "label": 'Test Manifest 3',
192
+ "label": [
193
+ {
194
+ "@value": 'Test Manifest 3',
195
+ "@language": 'en'
196
+ },
197
+ {
198
+ "@value": "Manifeste d'essai 3",
199
+ "@language": 'fr'
200
+ }
201
+ ],
190
202
  "attribution": 'Attribution Data',
191
203
  "description": 'A test IIIF manifest',
192
204
  "license": 'http://www.example.org/license.html',
@@ -12,8 +12,9 @@ describe Spotlight::Resources::IiifManifest do
12
12
  let(:url) { 'uri://to-manifest' }
13
13
  subject { described_class.new(url: url, manifest: manifest, collection: collection) }
14
14
  let(:collection) { double(compound_id: '1') }
15
+ let(:manifest_fixture) { test_manifest1 }
15
16
  before do
16
- stub_iiif_response_for_url(url, test_manifest1)
17
+ stub_iiif_response_for_url(url, manifest_fixture)
17
18
  subject.with_exhibit(exhibit)
18
19
  end
19
20
 
@@ -31,6 +32,34 @@ describe Spotlight::Resources::IiifManifest do
31
32
  it 'is inlcuded in the solr document when present' do
32
33
  expect(subject.to_solr['full_title_tesim']).to eq 'Test Manifest 1'
33
34
  end
35
+
36
+ it 'indexes to multiple fields when configured' do
37
+ allow(Spotlight::Engine.config).to receive(:iiif_title_fields).at_least(:once).and_return(%w(title_field1 title_field2))
38
+
39
+ expect(subject.to_solr['title_field1']).to eq 'Test Manifest 1'
40
+ expect(subject.to_solr['title_field2']).to eq 'Test Manifest 1'
41
+ end
42
+ end
43
+
44
+ context 'JSON-LD style labels' do
45
+ context 'when it is an array' do
46
+ let(:manifest_fixture) { test_manifest3 }
47
+
48
+ it 'uses the configured language to find a value' do
49
+ expect(subject.to_solr['full_title_tesim']).to eq 'Test Manifest 3'
50
+
51
+ allow(Spotlight::Engine.config).to receive(:default_json_ld_language).and_return('fr')
52
+ expect(subject.to_solr['full_title_tesim']).to eq "Manifeste d'essai 3"
53
+ end
54
+ end
55
+
56
+ context 'when it is a hash' do
57
+ let(:manifest_fixture) { test_manifest2 }
58
+
59
+ it 'is parsed correctly' do
60
+ expect(subject.to_solr['full_title_tesim']).to eq 'Test Manifest 2'
61
+ end
62
+ end
34
63
  end
35
64
 
36
65
  describe 'collection id' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blacklight-spotlight
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.33.1
4
+ version: 0.33.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer