geoblacklight 4.6.0 → 4.7.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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +1 -1
- data/Gemfile +0 -1
- data/app/assets/javascripts/geoblacklight/basemaps.js +60 -82
- data/app/assets/javascripts/geoblacklight/viewers/map.js +22 -5
- data/app/controllers/relation_controller.rb +1 -0
- data/app/javascript/openlayers/basemaps.js +0 -20
- data/app/javascript/openlayers/ol_initializer.js +27 -2
- data/app/presenters/geoblacklight/document_presenter.rb +1 -0
- data/geoblacklight.gemspec +2 -2
- data/lib/generators/geoblacklight/install_generator.rb +1 -1
- data/lib/generators/geoblacklight/templates/catalog_controller.rb +3 -4
- data/lib/generators/geoblacklight/templates/settings.yml +19 -0
- data/lib/geoblacklight/version.rb +1 -1
- data/package.json +1 -1
- data/spec/features/configurable_basemap_spec.rb +56 -0
- data/spec/lib/geoblacklight/view_helper_override_spec.rb +1 -0
- metadata +9 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 34179258d33036e78dd04f3b8f5afc47b365bd3daba81c8873c48f97054ad8bf
|
|
4
|
+
data.tar.gz: b8302cd7bca3144905fb54aaa06f8d1999e96c6efebcde45046830e45031e1c6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7572c629e6892753b88b05c32b3acbbdb9c2251a03373049139d523941c0c732b3a79116ba804f0b432e4bf0715b15b8558013251d714c1ab420271b6d6961d8
|
|
7
|
+
data.tar.gz: 5843078946e57b56b0717b25c403244e972b0d45c2b97276861506266c1e94e01c8443e0c022dd0a4f3f4c4daad60291525a7b818b925c08a2669153c6f89ce9
|
data/.github/workflows/ruby.yml
CHANGED
data/Gemfile
CHANGED
|
@@ -1,85 +1,63 @@
|
|
|
1
1
|
// basemaps
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
'
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
maxZoom: 18,
|
|
53
|
-
worldCopyJump: true,
|
|
54
|
-
retina: '@2x',
|
|
55
|
-
detectRetina: false
|
|
56
|
-
}
|
|
57
|
-
),
|
|
58
|
-
midnightCommander: L.tileLayer(
|
|
59
|
-
'https://cartocdn_{s}.global.ssl.fastly.net/base-midnight/{z}/{x}/{y}{retina}.png', {
|
|
60
|
-
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributions">Carto</a>',
|
|
61
|
-
maxZoom: 18,
|
|
62
|
-
worldCopyJump: true,
|
|
63
|
-
retina: '@2x',
|
|
64
|
-
detectRetina: false
|
|
65
|
-
}
|
|
66
|
-
),
|
|
67
|
-
openstreetmapHot: L.tileLayer(
|
|
68
|
-
'https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', {
|
|
69
|
-
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>, Tiles courtesy of <a href="http://hot.openstreetmap.org/" target="_blank">Humanitarian OpenStreetMap Team</a>',
|
|
70
|
-
maxZoom: 19,
|
|
71
|
-
worldCopyJump: true,
|
|
72
|
-
retina: '@2x',
|
|
73
|
-
detectRetina: false
|
|
74
|
-
}
|
|
75
|
-
),
|
|
76
|
-
openstreetmapStandard: L.tileLayer(
|
|
77
|
-
'https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
|
78
|
-
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
|
|
79
|
-
maxZoom: 19,
|
|
80
|
-
worldCopyJump: true,
|
|
81
|
-
retina: '@2x',
|
|
82
|
-
detectRetina: false
|
|
83
|
-
}
|
|
84
|
-
)
|
|
3
|
+
/**
|
|
4
|
+
* Raster XYZ tile definitions for the basemaps GeoBlacklight ships with. Each
|
|
5
|
+
* definition is passed to L.tileLayer as its options, so it carries the URL
|
|
6
|
+
* template alongside the layer options it needs.
|
|
7
|
+
*
|
|
8
|
+
* Applications can change any of these, or add their own, by setting
|
|
9
|
+
* LEAFLET.BASEMAPS in settings.yml. See selectBasemap in viewers/map.js.
|
|
10
|
+
*/
|
|
11
|
+
GeoBlacklight.BasemapDefinitions = {
|
|
12
|
+
darkMatter: {
|
|
13
|
+
url: 'https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{retina}.png',
|
|
14
|
+
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributions">Carto</a>',
|
|
15
|
+
maxZoom: 18,
|
|
16
|
+
worldCopyJump: true,
|
|
17
|
+
retina: '@2x',
|
|
18
|
+
detectRetina: false
|
|
19
|
+
},
|
|
20
|
+
positron: {
|
|
21
|
+
url: 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{retina}.png',
|
|
22
|
+
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributions">Carto</a>',
|
|
23
|
+
maxZoom: 18,
|
|
24
|
+
worldCopyJump: true,
|
|
25
|
+
retina: '@2x',
|
|
26
|
+
detectRetina: false
|
|
27
|
+
},
|
|
28
|
+
positronLite: {
|
|
29
|
+
url: 'https://{s}.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}{retina}.png',
|
|
30
|
+
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributions">Carto</a>',
|
|
31
|
+
maxZoom: 18,
|
|
32
|
+
worldCopyJump: true,
|
|
33
|
+
retina: '@2x',
|
|
34
|
+
detectRetina: false
|
|
35
|
+
},
|
|
36
|
+
openstreetmapHot: {
|
|
37
|
+
url: 'https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',
|
|
38
|
+
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>, Tiles courtesy of <a href="http://hot.openstreetmap.org/" target="_blank">Humanitarian OpenStreetMap Team</a>',
|
|
39
|
+
maxZoom: 19,
|
|
40
|
+
worldCopyJump: true,
|
|
41
|
+
retina: '@2x',
|
|
42
|
+
detectRetina: false
|
|
43
|
+
},
|
|
44
|
+
openstreetmapStandard: {
|
|
45
|
+
url: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
|
|
46
|
+
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
|
|
47
|
+
maxZoom: 19,
|
|
48
|
+
worldCopyJump: true,
|
|
49
|
+
retina: '@2x',
|
|
50
|
+
detectRetina: false
|
|
51
|
+
}
|
|
85
52
|
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Layer instances for the shipped definitions. Kept so that applications
|
|
56
|
+
* referencing or replacing GeoBlacklight.Basemaps entries keep working.
|
|
57
|
+
*/
|
|
58
|
+
GeoBlacklight.Basemaps = {};
|
|
59
|
+
|
|
60
|
+
Object.keys(GeoBlacklight.BasemapDefinitions).forEach(function(name) {
|
|
61
|
+
var definition = GeoBlacklight.BasemapDefinitions[name];
|
|
62
|
+
GeoBlacklight.Basemaps[name] = L.tileLayer(definition.url, definition);
|
|
63
|
+
});
|
|
@@ -65,13 +65,30 @@ GeoBlacklight.Viewer.Map = GeoBlacklight.Viewer.extend({
|
|
|
65
65
|
|
|
66
66
|
/**
|
|
67
67
|
* Selects basemap if specified in data options, if not return positron.
|
|
68
|
+
*
|
|
69
|
+
* Applications can change a basemap's URL -- to add a CARTO API key, for
|
|
70
|
+
* example -- or define basemaps of their own by setting LEAFLET.BASEMAPS in
|
|
71
|
+
* settings.yml. Those values are merged over the shipped definition, so an
|
|
72
|
+
* override that gives only a url keeps the shipped attribution and zoom.
|
|
68
73
|
*/
|
|
69
74
|
selectBasemap: function() {
|
|
70
|
-
var
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
+
var name = this.data.basemap || 'positron';
|
|
76
|
+
var options = this.data.leafletOptions || {};
|
|
77
|
+
var overrides = options.BASEMAPS || {};
|
|
78
|
+
var definition;
|
|
79
|
+
|
|
80
|
+
// A configured basemap wins, so an application can override a shipped one
|
|
81
|
+
if (overrides[name]) {
|
|
82
|
+
definition = L.extend(
|
|
83
|
+
{}, GeoBlacklight.BasemapDefinitions[name], overrides[name]
|
|
84
|
+
);
|
|
85
|
+
if (definition.url) {
|
|
86
|
+
return L.tileLayer(definition.url, definition);
|
|
87
|
+
}
|
|
75
88
|
}
|
|
89
|
+
|
|
90
|
+
// Otherwise use the shipped layer, which an application may itself have
|
|
91
|
+
// replaced in GeoBlacklight.Basemaps
|
|
92
|
+
return GeoBlacklight.Basemaps[name] || GeoBlacklight.Basemaps.positron;
|
|
76
93
|
}
|
|
77
94
|
});
|
|
@@ -14,26 +14,6 @@ export const openLayersBasemaps = {
|
|
|
14
14
|
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributions">Carto</a>',
|
|
15
15
|
maxZoom: 18
|
|
16
16
|
},
|
|
17
|
-
worldAntique: {
|
|
18
|
-
url: 'https://cartocdn_{a-d}.global.ssl.fastly.net/base-antique/{z}/{x}/{y}.png',
|
|
19
|
-
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributions">Carto</a>',
|
|
20
|
-
maxZoom: 18
|
|
21
|
-
},
|
|
22
|
-
worldEco: {
|
|
23
|
-
url: 'https://cartocdn_{a-d}.global.ssl.fastly.net/base-eco/{z}/{x}/{y}.png',
|
|
24
|
-
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributions">Carto</a>',
|
|
25
|
-
maxZoom: 18
|
|
26
|
-
},
|
|
27
|
-
flatBlue: {
|
|
28
|
-
url: 'https://cartocdn_{a-d}.global.ssl.fastly.net/base-flatblue/{z}/{x}/{y}.png',
|
|
29
|
-
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributions">Carto</a>',
|
|
30
|
-
maxZoom: 18
|
|
31
|
-
},
|
|
32
|
-
midnightCommander: {
|
|
33
|
-
url: 'https://cartocdn_{a-d}.global.ssl.fastly.net/base-midnight/{z}/{x}/{y}.png',
|
|
34
|
-
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="http://carto.com/attributions">Carto</a>',
|
|
35
|
-
maxZoom: 18
|
|
36
|
-
},
|
|
37
17
|
openstreetmapHot: {
|
|
38
18
|
url: 'https://{a-c}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',
|
|
39
19
|
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>, Tiles courtesy of <a href="http://hot.openstreetmap.org/" target="_blank">Humanitarian OpenStreetMap Team</a>',
|
|
@@ -33,17 +33,42 @@ export default class OlInitializer {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
baseLayer () {
|
|
36
|
-
const basemap =
|
|
36
|
+
const basemap = this.basemapDefinition()
|
|
37
37
|
const layer = new TileLayer({
|
|
38
38
|
source: new XYZ({
|
|
39
39
|
attributions: basemap["attribution"],
|
|
40
|
-
url: basemap["url"],
|
|
40
|
+
url: this.normalizeUrl(basemap["url"]),
|
|
41
41
|
maxZoom: basemap["maxZoom"]
|
|
42
42
|
})
|
|
43
43
|
})
|
|
44
44
|
return layer
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
// The basemap to draw, with any BASEMAPS values from settings.yml merged
|
|
48
|
+
// over the shipped definition. This lets an application change a basemap's
|
|
49
|
+
// URL -- to add a CARTO API key, for example -- without restating the rest
|
|
50
|
+
// of the definition, and lets it define basemaps of its own.
|
|
51
|
+
basemapDefinition () {
|
|
52
|
+
const name = this.data.basemap || 'positron'
|
|
53
|
+
const definition = {
|
|
54
|
+
...openLayersBasemaps[name],
|
|
55
|
+
...this.basemapOverrides()[name]
|
|
56
|
+
}
|
|
57
|
+
if (definition.url) return definition
|
|
58
|
+
return openLayersBasemaps.positron
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
basemapOverrides () {
|
|
62
|
+
return JSON.parse(this.data.leafletOptions || '{}').BASEMAPS || {}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Leaflet and OpenLayers spell tile URL templates differently, so accept
|
|
66
|
+
// the Leaflet form a configured basemap is most likely to be written in:
|
|
67
|
+
// {s} becomes OpenLayers' subdomain range, and {retina} drops out.
|
|
68
|
+
normalizeUrl (url) {
|
|
69
|
+
return url.replace(/\{s\}/g, '{a-d}').replace(/\{retina\}/g, '')
|
|
70
|
+
}
|
|
71
|
+
|
|
47
72
|
initializePmtiles () {
|
|
48
73
|
const vectorLayer = new VectorTile({
|
|
49
74
|
declutter: true,
|
|
@@ -10,6 +10,7 @@ module Geoblacklight
|
|
|
10
10
|
# longer exists.
|
|
11
11
|
class DocumentPresenter < Blacklight::IndexPresenter
|
|
12
12
|
include ActionView::Helpers::OutputSafetyHelper
|
|
13
|
+
|
|
13
14
|
##
|
|
14
15
|
# Presents configured index fields in search results. Passes values through
|
|
15
16
|
# configured helper_method. Multivalued fields separated by presenter
|
data/geoblacklight.gemspec
CHANGED
|
@@ -35,11 +35,11 @@ Gem::Specification.new do |spec|
|
|
|
35
35
|
spec.add_development_dependency "rspec-rails"
|
|
36
36
|
spec.add_development_dependency "engine_cart", "~> 2.0"
|
|
37
37
|
spec.add_development_dependency "capybara", ">= 2.5.0"
|
|
38
|
-
spec.add_development_dependency "selenium-webdriver"
|
|
38
|
+
spec.add_development_dependency "selenium-webdriver", ">= 4.11"
|
|
39
39
|
spec.add_development_dependency "factory_bot_rails"
|
|
40
40
|
spec.add_development_dependency "database_cleaner", "~> 2.0"
|
|
41
41
|
spec.add_development_dependency "simplecov", "~> 0.22"
|
|
42
42
|
spec.add_development_dependency "foreman"
|
|
43
|
-
spec.add_development_dependency "
|
|
43
|
+
spec.add_development_dependency "standard", "~> 1.56.0"
|
|
44
44
|
spec.add_development_dependency "webmock", "~> 3.14"
|
|
45
45
|
end
|
|
@@ -124,7 +124,7 @@ module Geoblacklight
|
|
|
124
124
|
if propshaft_present
|
|
125
125
|
gsub_file "Gemfile", /^(\s*gem\s+["']propshaft["'].*)$/, '# \1'
|
|
126
126
|
end
|
|
127
|
-
unless gemfile.match?(/gem ['
|
|
127
|
+
unless gemfile.match?(/gem ['"]sprockets-rails['"]/)
|
|
128
128
|
append_to_file "Gemfile" do
|
|
129
129
|
"\ngem 'sprockets-rails'\n"
|
|
130
130
|
end
|
|
@@ -317,12 +317,11 @@ class CatalogController < ApplicationController
|
|
|
317
317
|
# 'positron'
|
|
318
318
|
# 'darkMatter'
|
|
319
319
|
# 'positronLite'
|
|
320
|
-
# 'worldAntique'
|
|
321
|
-
# 'worldEco'
|
|
322
|
-
# 'flatBlue'
|
|
323
|
-
# 'midnightCommander'
|
|
324
320
|
# 'openstreetmapHot'
|
|
325
321
|
# 'openstreetmapStandard'
|
|
322
|
+
#
|
|
323
|
+
# To change one of these basemaps' tile URLs, or to add a basemap of your
|
|
324
|
+
# own and name it here, set LEAFLET.BASEMAPS in settings.yml
|
|
326
325
|
|
|
327
326
|
config.basemap_provider = "positron"
|
|
328
327
|
|
|
@@ -229,6 +229,25 @@ WMS_PARAMS:
|
|
|
229
229
|
# Settings for leaflet
|
|
230
230
|
LEAFLET:
|
|
231
231
|
MAP:
|
|
232
|
+
# Basemap definitions, keyed by the name config.basemap_provider selects.
|
|
233
|
+
# Anything set here is merged over the basemap GeoBlacklight ships with, so
|
|
234
|
+
# you can change just the url and keep the rest of the definition.
|
|
235
|
+
#
|
|
236
|
+
# CARTO now watermarks raster tiles requested without an API key, which
|
|
237
|
+
# affects the positron, positronLite and darkMatter basemaps. Request a free
|
|
238
|
+
# key at https://carto.com/basemaps/apikey/ and pass it as a key parameter:
|
|
239
|
+
# BASEMAPS:
|
|
240
|
+
# positron:
|
|
241
|
+
# url: 'https://basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png?key=YOUR_KEY'
|
|
242
|
+
# darkMatter:
|
|
243
|
+
# url: 'https://basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png?key=YOUR_KEY'
|
|
244
|
+
#
|
|
245
|
+
# You can also define a basemap of your own here and select it with
|
|
246
|
+
# config.basemap_provider = 'myBasemap' in your CatalogController:
|
|
247
|
+
# myBasemap:
|
|
248
|
+
# url: 'https://tiles.example.edu/{z}/{x}/{y}.png'
|
|
249
|
+
# attribution: 'Tiles courtesy of Example University'
|
|
250
|
+
# maxZoom: 18
|
|
232
251
|
LAYERS:
|
|
233
252
|
DETECT_RETINA: true
|
|
234
253
|
INDEX:
|
data/package.json
CHANGED
|
@@ -34,4 +34,60 @@ feature "Configurable basemap", js: true do
|
|
|
34
34
|
expect(page).to have_css "img[src*='hot']"
|
|
35
35
|
end
|
|
36
36
|
end
|
|
37
|
+
feature "with a configured tile URL for a shipped basemap" do
|
|
38
|
+
before do
|
|
39
|
+
CatalogController.blacklight_config.basemap_provider = "positron"
|
|
40
|
+
Settings.LEAFLET.BASEMAPS = {
|
|
41
|
+
positron: {
|
|
42
|
+
url: "https://basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png?key=fake-carto-key"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
end
|
|
46
|
+
after { Settings.LEAFLET.BASEMAPS = nil }
|
|
47
|
+
|
|
48
|
+
scenario "requests tiles from the configured URL" do
|
|
49
|
+
visit root_path
|
|
50
|
+
expect(page).to have_css "img[src*='key=fake-carto-key']"
|
|
51
|
+
end
|
|
52
|
+
scenario "keeps the attribution from the shipped definition" do
|
|
53
|
+
visit root_path
|
|
54
|
+
expect(page).to have_css ".leaflet-control-attribution", text: "Carto"
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
feature "with a basemap the application defines itself" do
|
|
58
|
+
before do
|
|
59
|
+
CatalogController.blacklight_config.basemap_provider = "myBasemap"
|
|
60
|
+
Settings.LEAFLET.BASEMAPS = {
|
|
61
|
+
myBasemap: {
|
|
62
|
+
url: "/tiles/{z}/{x}/{y}.png",
|
|
63
|
+
attribution: "Tiles courtesy of Example University",
|
|
64
|
+
maxZoom: 18
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
end
|
|
68
|
+
after { Settings.LEAFLET.BASEMAPS = nil }
|
|
69
|
+
|
|
70
|
+
scenario "requests tiles from the application's basemap" do
|
|
71
|
+
visit root_path
|
|
72
|
+
# visible: :all because these tiles 404, so the images have no dimensions
|
|
73
|
+
expect(page).to have_css "img[src*='/tiles/']", visible: :all
|
|
74
|
+
end
|
|
75
|
+
scenario "credits the application's basemap" do
|
|
76
|
+
visit root_path
|
|
77
|
+
expect(page).to have_css ".leaflet-control-attribution",
|
|
78
|
+
text: "Tiles courtesy of Example University"
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
feature "using a basemap GeoBlacklight no longer ships" do
|
|
82
|
+
before do
|
|
83
|
+
# worldEco was one of the CARTO basemaps served from the retired
|
|
84
|
+
# cartocdn fastly endpoints; applications still naming one should get a
|
|
85
|
+
# working basemap rather than none
|
|
86
|
+
CatalogController.blacklight_config.basemap_provider = "worldEco"
|
|
87
|
+
end
|
|
88
|
+
scenario "falls back to positron rather than drawing no basemap" do
|
|
89
|
+
visit root_path
|
|
90
|
+
expect(page).to have_css "img[src*='light_all']", visible: :all
|
|
91
|
+
end
|
|
92
|
+
end
|
|
37
93
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: geoblacklight
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.
|
|
4
|
+
version: 4.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mike Graves
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
- Jack Reed
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2026-09-
|
|
13
|
+
date: 2026-09-08 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: rails
|
|
@@ -268,14 +268,14 @@ dependencies:
|
|
|
268
268
|
requirements:
|
|
269
269
|
- - ">="
|
|
270
270
|
- !ruby/object:Gem::Version
|
|
271
|
-
version: '
|
|
271
|
+
version: '4.11'
|
|
272
272
|
type: :development
|
|
273
273
|
prerelease: false
|
|
274
274
|
version_requirements: !ruby/object:Gem::Requirement
|
|
275
275
|
requirements:
|
|
276
276
|
- - ">="
|
|
277
277
|
- !ruby/object:Gem::Version
|
|
278
|
-
version: '
|
|
278
|
+
version: '4.11'
|
|
279
279
|
- !ruby/object:Gem::Dependency
|
|
280
280
|
name: factory_bot_rails
|
|
281
281
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -333,19 +333,19 @@ dependencies:
|
|
|
333
333
|
- !ruby/object:Gem::Version
|
|
334
334
|
version: '0'
|
|
335
335
|
- !ruby/object:Gem::Dependency
|
|
336
|
-
name:
|
|
336
|
+
name: standard
|
|
337
337
|
requirement: !ruby/object:Gem::Requirement
|
|
338
338
|
requirements:
|
|
339
|
-
- -
|
|
339
|
+
- - "~>"
|
|
340
340
|
- !ruby/object:Gem::Version
|
|
341
|
-
version: 1.0
|
|
341
|
+
version: 1.56.0
|
|
342
342
|
type: :development
|
|
343
343
|
prerelease: false
|
|
344
344
|
version_requirements: !ruby/object:Gem::Requirement
|
|
345
345
|
requirements:
|
|
346
|
-
- -
|
|
346
|
+
- - "~>"
|
|
347
347
|
- !ruby/object:Gem::Version
|
|
348
|
-
version: 1.0
|
|
348
|
+
version: 1.56.0
|
|
349
349
|
- !ruby/object:Gem::Dependency
|
|
350
350
|
name: webmock
|
|
351
351
|
requirement: !ruby/object:Gem::Requirement
|