blacklight-maps 0.3.3 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +0 -6
- data/README.md +10 -1
- data/app/helpers/blacklight/blacklight_maps_helper_behavior.rb +2 -2
- data/blacklight-maps.gemspec +2 -2
- data/lib/blacklight/maps.rb +1 -0
- data/lib/blacklight/maps/controller_override.rb +15 -17
- data/lib/blacklight/maps/maps_search_builder.rb +20 -0
- data/lib/blacklight/maps/version.rb +1 -1
- data/spec/helpers/blacklight_maps_helper_spec.rb +1 -1
- data/spec/lib/blacklight/maps/maps_search_builder_spec.rb +55 -0
- metadata +9 -8
- data/spec/lib/blacklight/maps/controller_override_spec.rb +0 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8eea160d9da93d7b442489febe098f42ce323c2c
|
4
|
+
data.tar.gz: 7fdb19ab07e58ea19ab787a393d69f3916e40fd5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41125c066a77d9e8844f685a1adfdd0bf19525865713b732752c07a10286c3ef3ee54e934293ef7920e02eee19da07f86a7d3dcee6b14868ce934eac1e0ca4c5
|
7
|
+
data.tar.gz: 88e97911466aec101c484a0b1abe98acf826ac13dd30f69fa811e68eb430ff65fe2c5fb5e21afb470f4e436e9175eec594069ba3a10c9505aeadfb00e01e6992
|
data/Gemfile
CHANGED
@@ -8,12 +8,6 @@ gemspec
|
|
8
8
|
# it'll want sprockets 2.11.0 and we'll have a conflict
|
9
9
|
gem 'sprockets', '2.11.0'
|
10
10
|
|
11
|
-
# If we don't specify 3.2.15 we'll end up with sass 3.3.2 in the main
|
12
|
-
# Gemfile.lock but since sass-rails gets generated (rails new) into the test app
|
13
|
-
# it'll want sass 3.2.0 and we'll have a conflict
|
14
|
-
gem 'sass', '~> 3.2.0'
|
15
|
-
gem 'bootstrap-sass', ">= 3.1.1.1"
|
16
|
-
|
17
11
|
group :test do
|
18
12
|
gem 'simplecov', require: false
|
19
13
|
gem 'coveralls', require: false
|
data/README.md
CHANGED
@@ -15,6 +15,8 @@ Maplet widget in item detail view:
|
|
15
15
|
|
16
16
|
## Installation
|
17
17
|
|
18
|
+
(See [Blacklight Version Compatibility](#blacklight-compatibility) below to make sure you're using a version of the gem that works with the version of Blacklight you're using.)
|
19
|
+
|
18
20
|
Add this line to your application's Gemfile:
|
19
21
|
|
20
22
|
gem 'blacklight-maps'
|
@@ -181,7 +183,7 @@ Option | Type | Default | Description
|
|
181
183
|
`catalogpath` | String | `'catalog'` | the search path for the search control
|
182
184
|
`placenamefield` | String | `'placename_field'` | the name of the Solr field containing the location names
|
183
185
|
`searchctrlcue` | String | `'Search for all items within the current map window'` | the hover text to display when the mouse hovers over the ![search control](docs/blacklight-maps_search-control.png) search control
|
184
|
-
`searchresultsview` | String | `'list'` | the view type for the search results on the catalog#index page after the ![search control](docs/blacklight-maps_search-control.png) search control is used
|
186
|
+
`searchresultsview` | String | `'list'` | the view type for the search results on the catalog#index page after the map ![search control](docs/blacklight-maps_search-control.png) search control is used
|
185
187
|
`singlemarkermode` | Boolean | `true` | whether locations should be clustered
|
186
188
|
`clustercount` | String | `'locations'` | whether clusters should display the location count or the number of hits (`'hits'` or `'locations'`)
|
187
189
|
`maxzoom` | Integer | 18 | the maxZoom [property of the map](http://leafletjs.com/reference.html#map-maxzoom)
|
@@ -189,6 +191,13 @@ Option | Type | Default | Description
|
|
189
191
|
`mapattribution` | String | ``Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>'` | an [attribution string](http://leafletjs.com/reference.html#tilelayer-attribution) to describe the basemap layer
|
190
192
|
`nodata` | String | `'Sorry, there is no data for this location.'` | a message to display in the Leaflet popup when the "popup" member is not present in the properties hash in the GeoJSON Feature for a location.
|
191
193
|
|
194
|
+
### <a name="blacklight-compatibility"></a>Blacklight Version Compatibility
|
195
|
+
The table below indicates which versions of Blacklight Maps are compatible with which versions of Blacklight.
|
196
|
+
|
197
|
+
Blacklight Maps version | works with Blacklight version
|
198
|
+
----------------------- | ---------------------
|
199
|
+
>= 0.4.0 | >= 5.12.0 to < 6.*
|
200
|
+
<= 0.3.3 | >= 5.1 to <= 5.11.2
|
192
201
|
|
193
202
|
## Contributing
|
194
203
|
|
@@ -61,8 +61,8 @@ module Blacklight::BlacklightMapsHelperBehavior
|
|
61
61
|
|
62
62
|
# return an array of Blacklight::SolrResponse::Facets::FacetItem items
|
63
63
|
def map_facet_values
|
64
|
-
if @response.
|
65
|
-
@response.
|
64
|
+
if @response.aggregations[map_facet_field]
|
65
|
+
@response.aggregations[map_facet_field].items
|
66
66
|
else
|
67
67
|
[]
|
68
68
|
end
|
data/blacklight-maps.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
20
|
spec.add_dependency "rails"
|
21
|
-
spec.add_dependency "blacklight", ">= 5.
|
22
|
-
spec.add_dependency "bootstrap-sass", "~> 3.
|
21
|
+
spec.add_dependency "blacklight", ">= 5.12.0"
|
22
|
+
spec.add_dependency "bootstrap-sass", "~> 3.2"
|
23
23
|
spec.add_dependency "leaflet-rails"
|
24
24
|
spec.add_dependency "leaflet-markercluster-rails"
|
25
25
|
|
data/lib/blacklight/maps.rb
CHANGED
@@ -7,6 +7,7 @@ module Blacklight
|
|
7
7
|
require 'blacklight/maps/engine'
|
8
8
|
require 'blacklight/maps/export'
|
9
9
|
require 'blacklight/maps/geometry'
|
10
|
+
require 'blacklight/maps/maps_search_builder'
|
10
11
|
|
11
12
|
def self.inject!
|
12
13
|
CatalogController.send(:include, BlacklightMaps::ControllerOverride)
|
@@ -2,32 +2,30 @@ module BlacklightMaps
|
|
2
2
|
module ControllerOverride
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
included do
|
5
|
-
|
5
|
+
|
6
|
+
if self.respond_to? :search_params_logic
|
7
|
+
search_params_logic << :add_spatial_search_to_solr
|
8
|
+
end
|
9
|
+
|
10
|
+
if self.blacklight_config.search_builder_class
|
11
|
+
self.blacklight_config.search_builder_class.send(:include,
|
12
|
+
BlacklightMaps::MapsSearchBuilder
|
13
|
+
) unless
|
14
|
+
self.blacklight_config.search_builder_class.include?(
|
15
|
+
BlacklightMaps::MapsSearchBuilder
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
6
19
|
end
|
7
20
|
|
8
21
|
def map
|
9
|
-
(@response, @document_list) =
|
22
|
+
(@response, @document_list) = search_results(params, search_params_logic)
|
10
23
|
params[:view] = 'maps'
|
11
24
|
respond_to do |format|
|
12
25
|
format.html
|
13
26
|
end
|
14
27
|
end
|
15
28
|
|
16
|
-
# add spatial search params to solr
|
17
|
-
def add_spatial_search_to_solr(solr_parameters, user_parameters)
|
18
|
-
if user_parameters[:spatial_search_type] && user_parameters[:coordinates]
|
19
|
-
solr_parameters[:fq] ||= []
|
20
|
-
if user_parameters[:spatial_search_type] == 'bbox'
|
21
|
-
solr_parameters[:fq] << blacklight_config.view.maps.coordinates_field + ":" + user_parameters[:coordinates]
|
22
|
-
else
|
23
|
-
solr_parameters[:fq] << "{!geofilt sfield=#{blacklight_config.view.maps.coordinates_field}}"
|
24
|
-
solr_parameters[:pt] = user_parameters[:coordinates]
|
25
|
-
solr_parameters[:d] = blacklight_config.view.maps.spatial_query_dist
|
26
|
-
end
|
27
|
-
end
|
28
|
-
solr_parameters
|
29
|
-
end
|
30
|
-
|
31
29
|
end
|
32
30
|
|
33
31
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module BlacklightMaps
|
2
|
+
module MapsSearchBuilder
|
3
|
+
|
4
|
+
# add spatial search params to solr
|
5
|
+
def add_spatial_search_to_solr(solr_parameters = {})
|
6
|
+
if blacklight_params[:spatial_search_type] && blacklight_params[:coordinates]
|
7
|
+
solr_parameters[:fq] ||= []
|
8
|
+
if blacklight_params[:spatial_search_type] == 'bbox'
|
9
|
+
solr_parameters[:fq] << blacklight_config.view.maps.coordinates_field + ":" + blacklight_params[:coordinates]
|
10
|
+
else
|
11
|
+
solr_parameters[:fq] << "{!geofilt sfield=#{blacklight_config.view.maps.coordinates_field}}"
|
12
|
+
solr_parameters[:pt] = blacklight_params[:coordinates]
|
13
|
+
solr_parameters[:d] = blacklight_config.view.maps.spatial_query_dist
|
14
|
+
end
|
15
|
+
end
|
16
|
+
solr_parameters
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -23,7 +23,7 @@ describe BlacklightMapsHelper do
|
|
23
23
|
@catalog.request = @request
|
24
24
|
@catalog.action_name = "index"
|
25
25
|
helper.instance_variable_set(:@_controller, @catalog)
|
26
|
-
@docs = r.
|
26
|
+
@docs = r.aggregations[blacklight_config.view.maps.geojson_field].items
|
27
27
|
end
|
28
28
|
|
29
29
|
describe "blacklight_map_tag" do
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BlacklightMaps::MapsSearchBuilder do
|
4
|
+
|
5
|
+
class MapsSearchBuilderTestClass
|
6
|
+
cattr_accessor :blacklight_config, :blacklight_params
|
7
|
+
|
8
|
+
include Blacklight::SearchHelper
|
9
|
+
include BlacklightMaps::MapsSearchBuilder
|
10
|
+
|
11
|
+
def initialize blacklight_config, blacklight_params
|
12
|
+
self.blacklight_config = blacklight_config
|
13
|
+
self.blacklight_params = blacklight_params
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
let(:blacklight_config) { Blacklight::Configuration.new }
|
19
|
+
let(:blacklight_params) { Hash.new }
|
20
|
+
let(:solr_parameters) { Blacklight::Solr::Request.new }
|
21
|
+
|
22
|
+
describe "add_spatial_search_to_solr" do
|
23
|
+
|
24
|
+
before { @obj = MapsSearchBuilderTestClass.new blacklight_config, blacklight_params }
|
25
|
+
|
26
|
+
describe "coordinate search" do
|
27
|
+
|
28
|
+
before do
|
29
|
+
@obj.blacklight_params[:coordinates] = "35.86166,104.195397"
|
30
|
+
@obj.blacklight_params[:spatial_search_type] = "point"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should return a coordinate point spatial search if coordinates are given" do
|
34
|
+
expect(@obj.add_spatial_search_to_solr(solr_parameters)[:fq].first).to include('geofilt')
|
35
|
+
expect(@obj.add_spatial_search_to_solr(solr_parameters)[:pt]).to eq(@obj.blacklight_params[:coordinates])
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "bbox search" do
|
41
|
+
|
42
|
+
before do
|
43
|
+
@obj.blacklight_params[:coordinates] = "[6.7535159,68.162386 TO 35.5044752,97.395555]"
|
44
|
+
@obj.blacklight_params[:spatial_search_type] = "bbox"
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should return a bbox spatial search if a bbox is given" do
|
48
|
+
expect(@obj.add_spatial_search_to_solr(solr_parameters)[:fq].first).to include(blacklight_config.view.maps.coordinates_field)
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blacklight-maps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Beer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-08-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -31,28 +31,28 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 5.
|
34
|
+
version: 5.12.0
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 5.
|
41
|
+
version: 5.12.0
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: bootstrap-sass
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '3.
|
48
|
+
version: '3.2'
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '3.
|
55
|
+
version: '3.2'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: leaflet-rails
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -220,6 +220,7 @@ files:
|
|
220
220
|
- lib/blacklight/maps/engine.rb
|
221
221
|
- lib/blacklight/maps/export.rb
|
222
222
|
- lib/blacklight/maps/geometry.rb
|
223
|
+
- lib/blacklight/maps/maps_search_builder.rb
|
223
224
|
- lib/blacklight/maps/render_constraints_override.rb
|
224
225
|
- lib/blacklight/maps/version.rb
|
225
226
|
- lib/generators/blacklight_maps/install_generator.rb
|
@@ -232,9 +233,9 @@ files:
|
|
232
233
|
- spec/features/maps_spec.rb
|
233
234
|
- spec/fixtures/sample_solr_documents.yml
|
234
235
|
- spec/helpers/blacklight_maps_helper_spec.rb
|
235
|
-
- spec/lib/blacklight/maps/controller_override_spec.rb
|
236
236
|
- spec/lib/blacklight/maps/export_spec.rb
|
237
237
|
- spec/lib/blacklight/maps/geometry_spec.rb
|
238
|
+
- spec/lib/blacklight/maps/maps_search_builder_spec.rb
|
238
239
|
- spec/lib/blacklight/maps/render_constraints_override_spec.rb
|
239
240
|
- spec/spec_helper.rb
|
240
241
|
- spec/test_app_templates/Gemfile.extra
|
@@ -269,9 +270,9 @@ test_files:
|
|
269
270
|
- spec/features/maps_spec.rb
|
270
271
|
- spec/fixtures/sample_solr_documents.yml
|
271
272
|
- spec/helpers/blacklight_maps_helper_spec.rb
|
272
|
-
- spec/lib/blacklight/maps/controller_override_spec.rb
|
273
273
|
- spec/lib/blacklight/maps/export_spec.rb
|
274
274
|
- spec/lib/blacklight/maps/geometry_spec.rb
|
275
|
+
- spec/lib/blacklight/maps/maps_search_builder_spec.rb
|
275
276
|
- spec/lib/blacklight/maps/render_constraints_override_spec.rb
|
276
277
|
- spec/spec_helper.rb
|
277
278
|
- spec/test_app_templates/Gemfile.extra
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe BlacklightMaps::ControllerOverride do
|
4
|
-
|
5
|
-
class BlacklightMapsControllerTestClass < CatalogController
|
6
|
-
end
|
7
|
-
|
8
|
-
before(:each) do
|
9
|
-
CatalogController.blacklight_config = Blacklight::Configuration.new
|
10
|
-
@fake_controller = BlacklightMapsControllerTestClass.new
|
11
|
-
@fake_controller.extend(BlacklightMaps::ControllerOverride)
|
12
|
-
end
|
13
|
-
|
14
|
-
let(:solr_params) { Hash.new }
|
15
|
-
let(:req_params) { Hash.new }
|
16
|
-
|
17
|
-
describe "add_spatial_search_to_solr" do
|
18
|
-
|
19
|
-
it "should return a coordinate point spatial search if coordinates are given" do
|
20
|
-
req_params[:coordinates] = "35.86166,104.195397"
|
21
|
-
req_params[:spatial_search_type] = "point"
|
22
|
-
expect(@fake_controller.add_spatial_search_to_solr(solr_params, req_params)[:fq].first).to include('geofilt')
|
23
|
-
expect(@fake_controller.add_spatial_search_to_solr(solr_params, req_params)[:pt]).to eq(req_params[:coordinates])
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should return a bbox spatial search if a bbox is given" do
|
27
|
-
req_params[:coordinates] = "[6.7535159,68.162386 TO 35.5044752,97.395555]"
|
28
|
-
req_params[:spatial_search_type] = "bbox"
|
29
|
-
expect(@fake_controller.add_spatial_search_to_solr(solr_params, req_params)[:fq].first).to include(CatalogController.blacklight_config.view.maps.coordinates_field)
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|