blacklight-maps 0.3.2 → 0.3.3
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/.coveralls.yml +1 -0
- data/.travis.yml +1 -1
- data/CONTRIBUTING.md +14 -0
- data/README.md +23 -18
- data/app/assets/javascripts/blacklight-maps/blacklight-maps-browse.js +53 -16
- data/app/helpers/blacklight/blacklight_maps_helper_behavior.rb +6 -31
- data/app/views/catalog/_index_map.html.erb +3 -3
- data/app/views/catalog/_show_maplet_default.html.erb +1 -2
- data/lib/blacklight/maps/version.rb +1 -1
- data/spec/controllers/catalog_controller_spec.rb +3 -3
- data/spec/features/initial_view_spec.rb +21 -0
- data/spec/features/maps_spec.rb +9 -2
- data/spec/helpers/blacklight_maps_helper_spec.rb +22 -39
- data/spec/lib/blacklight/maps/export_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -4
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9a4c9d51a9b188233f983469e290609fead6e4f
|
4
|
+
data.tar.gz: 3d61ff5d65da2592b37515f3c62b773425f2fac0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ba42a84d843b12148894593e41a705f0ac85d7dd5abc84eeb906ea4f9d28468a4d5d6b717a2be00d08662f0d1e476723969fb1451c9c08edfa2744cc90a00c7
|
7
|
+
data.tar.gz: 44d3a6067b0cc5465089318211b47fa2e00fdb9a241a8d87b309dab01afe8595baf0f58ec6a33086981ded5da4b24189c5cd525785589a9c85d9be1797849c78
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service_name: travis-ci
|
data/.travis.yml
CHANGED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# Contributing to Blacklight-Maps
|
2
|
+
|
3
|
+
## To submit a patch or feature
|
4
|
+
|
5
|
+
1. Fork it ( http://github.com/<my-github-username>/blacklight-maps/fork )
|
6
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
7
|
+
3. Make some changes (with [tests](https://github.com/projectblacklight/blacklight/wiki/testing), please)
|
8
|
+
4. Commit your changes (`git commit -am 'Add some feature'`)
|
9
|
+
5. Push to the branch (`git push origin my-new-feature`)
|
10
|
+
6. Create new Pull Request
|
11
|
+
|
12
|
+
## Style preferences
|
13
|
+
|
14
|
+
From version 0.3.2 forward, Blacklight-Maps will be using the [AirBnb JavaScript Style guide](https://github.com/airbnb/javascript) for JavaScript. Ruby code uses the community [Ruby Style Guide](https://github.com/bbatsov/ruby-style-guide).
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Blacklight::Maps
|
2
2
|
|
3
|
-
[](https://travis-ci.org/sul-dlss/blacklight-maps) | [](https://coveralls.io/r/projectblacklight/blacklight-maps?branch=master)
|
4
4
|
|
5
5
|
Provides map views for Blacklight for items with geospatial coordinate (latitude/longitude) metadata.
|
6
6
|
|
@@ -110,6 +110,11 @@ Blacklight-Maps expects you to provide these configuration options:
|
|
110
110
|
+ `placename_field` = the name of the Solr field containing the location names
|
111
111
|
+ `coordinates_field` = the name of the Solr `location_rpt` type field containing geospatial coordinate data
|
112
112
|
|
113
|
+
In addition, you must add the geospatial facet field to the list of facet fields:
|
114
|
+
```ruby
|
115
|
+
config.add_facet_field 'geojson_field', :limit => -2, :label => 'Coordinates', :show => false
|
116
|
+
```
|
117
|
+
|
113
118
|
#### Optional
|
114
119
|
|
115
120
|
- `show_initial_zoom` = the zoom level to be used in the catalog#show view map (zoom levels for catalog#map and catalog#index map views are computed automatically)
|
@@ -137,6 +142,8 @@ All of these options can easily be configured in `CatalogController.rb` in the `
|
|
137
142
|
config.view.maps.mapattribution = 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>'
|
138
143
|
config.view.maps.maxzoom = 18
|
139
144
|
config.view.maps.show_initial_zoom = 5
|
145
|
+
|
146
|
+
config.add_facet_field 'geojson', :limit => -2, :label => 'Coordinates', :show => false
|
140
147
|
...
|
141
148
|
|
142
149
|
```
|
@@ -167,24 +174,22 @@ However, the catalog#show maplet widget must be included manually, via one of tw
|
|
167
174
|
|
168
175
|
The ```blacklight_map_tag``` helper takes an options hash as one of its arguments that can be used to provide customization options for the Leaflet map functionality via data attributes. (See ```app/views/catalog/index_map``` for an example.) The available options include:
|
169
176
|
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
177
|
+
Option | Type | Default | Description
|
178
|
+
------ | ---- | ------- | -----------
|
179
|
+
`initialview` | Array | `null` | the initial extend of the map as a 2d Array (e.g. `[[minLat, minLng], [maxLat, maxLng]]`)
|
180
|
+
`searchcontrol` | Boolean | `false` | display the search control on the map
|
181
|
+
`catalogpath` | String | `'catalog'` | the search path for the search control
|
182
|
+
`placenamefield` | String | `'placename_field'` | the name of the Solr field containing the location names
|
183
|
+
`searchctrlcue` | String | `'Search for all items within the current map window'` | the hover text to display when the mouse hovers over the  search control
|
184
|
+
`searchresultsview` | String | `'list'` | the view type for the search results on the catalog#index page after the  search control is used
|
185
|
+
`singlemarkermode` | Boolean | `true` | whether locations should be clustered
|
186
|
+
`clustercount` | String | `'locations'` | whether clusters should display the location count or the number of hits (`'hits'` or `'locations'`)
|
187
|
+
`maxzoom` | Integer | 18 | the maxZoom [property of the map](http://leafletjs.com/reference.html#map-maxzoom)
|
188
|
+
`tileurl` | String | `'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'` | a [tileLayer url](http://leafletjs.com/reference.html#tilelayer-l.tilelayer) to change the basemap
|
189
|
+
`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
|
+
`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.
|
181
191
|
|
182
192
|
|
183
193
|
## Contributing
|
184
194
|
|
185
|
-
|
186
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
187
|
-
3. Make some changes (with [tests](https://github.com/projectblacklight/blacklight/wiki/testing), please)
|
188
|
-
4. Commit your changes (`git commit -am 'Add some feature'`)
|
189
|
-
5. Push to the branch (`git push origin my-new-feature`)
|
190
|
-
6. Create new Pull Request
|
195
|
+
We encourage you to contribute to Blacklight-Maps. Please see the [contributing guide](/CONTRIBUTING.md) for more information on contributing to the project.
|
@@ -7,15 +7,15 @@
|
|
7
7
|
var options = $.extend({
|
8
8
|
tileurl : 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
|
9
9
|
mapattribution : 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>',
|
10
|
-
|
11
|
-
initialzoom: 2,
|
10
|
+
initialZoom: 2,
|
12
11
|
singlemarkermode: true,
|
13
12
|
searchcontrol: false,
|
14
13
|
catalogpath: 'catalog',
|
15
14
|
searchctrlcue: 'Search for all items within the current map window',
|
16
15
|
placenamefield: 'placename_field',
|
17
16
|
nodata: 'Sorry, there is no data for this location.',
|
18
|
-
clustercount:'locations'
|
17
|
+
clustercount:'locations',
|
18
|
+
searchresultsview: 'list'
|
19
19
|
}, arg_opts );
|
20
20
|
|
21
21
|
// Extend options from data-attributes
|
@@ -27,6 +27,8 @@
|
|
27
27
|
|
28
28
|
var sortAndPerPage = $('#sortAndPerPage');
|
29
29
|
|
30
|
+
var markers;
|
31
|
+
|
30
32
|
// Update page links with number of mapped items, disable sort, per_page, pagination
|
31
33
|
if (sortAndPerPage.length) { // catalog#index and #map view
|
32
34
|
var page_links = sortAndPerPage.find('.page_links');
|
@@ -64,18 +66,10 @@
|
|
64
66
|
options.id = this.id;
|
65
67
|
|
66
68
|
// Setup Leaflet map
|
67
|
-
map = L.map(this.id
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
map.fitBounds(options.viewpoint,
|
72
|
-
{
|
73
|
-
padding:[10,10],
|
74
|
-
maxZoom:options.maxzoom
|
75
|
-
});
|
76
|
-
} else {
|
77
|
-
map.setView(options.viewpoint, options.initialzoom);
|
78
|
-
}
|
69
|
+
map = L.map(this.id, {
|
70
|
+
center: [0, 0],
|
71
|
+
zoom: options.initialZoom
|
72
|
+
});
|
79
73
|
|
80
74
|
L.tileLayer(options.tileurl, {
|
81
75
|
attribution: options.mapattribution,
|
@@ -104,6 +98,9 @@
|
|
104
98
|
// Add markers to map
|
105
99
|
map.addLayer(markers);
|
106
100
|
|
101
|
+
// Fit bounds of map
|
102
|
+
setMapBounds(map);
|
103
|
+
|
107
104
|
// create overlay for search control hover
|
108
105
|
var searchHoverLayer = L.rectangle([[0,0], [0,0]], {
|
109
106
|
color: "#0033ff",
|
@@ -148,6 +145,46 @@
|
|
148
145
|
|
149
146
|
});
|
150
147
|
|
148
|
+
/**
|
149
|
+
* Sets the view of the map, based off of the map bounds
|
150
|
+
*/
|
151
|
+
function setMapBounds() {
|
152
|
+
map.fitBounds(mapBounds(), {
|
153
|
+
padding: [10, 10],
|
154
|
+
maxZoom: options.maxzoom
|
155
|
+
});
|
156
|
+
}
|
157
|
+
|
158
|
+
/**
|
159
|
+
* Returns the bounds of the map based off of initialview being set or gets
|
160
|
+
* the bounds of the markers object
|
161
|
+
*/
|
162
|
+
function mapBounds() {
|
163
|
+
if (options.initialview) {
|
164
|
+
return options.initialview;
|
165
|
+
} else {
|
166
|
+
return markerBounds();
|
167
|
+
}
|
168
|
+
}
|
169
|
+
|
170
|
+
/**
|
171
|
+
* Returns the bounds of markers, if there are not any return
|
172
|
+
*/
|
173
|
+
function markerBounds() {
|
174
|
+
if (hasAnyFeatures()) {
|
175
|
+
return markers.getBounds();
|
176
|
+
} else {
|
177
|
+
return [[90, 180], [-90, -180]];
|
178
|
+
}
|
179
|
+
}
|
180
|
+
|
181
|
+
/**
|
182
|
+
* Checks to see if there are any features in the markers MarkerClusterGroup
|
183
|
+
*/
|
184
|
+
function hasAnyFeatures() {
|
185
|
+
return !$.isEmptyObject(markers._featureGroup._layers);
|
186
|
+
}
|
187
|
+
|
151
188
|
// remove stale params, add new params, and run a new search
|
152
189
|
function _search() {
|
153
190
|
var params = filterParams(['view', 'spatial_search_type', 'coordinates', 'f%5B' + options.placenamefield + '%5D%5B%5D']),
|
@@ -160,7 +197,7 @@
|
|
160
197
|
return Math.round(parseFloat(coord) * 1000000) / 1000000;
|
161
198
|
}),
|
162
199
|
coordinate_params = '[' + bounds[1] + ',' + bounds[0] + ' TO ' + bounds[3] + ',' + bounds[2] + ']';
|
163
|
-
params.push('coordinates=' + encodeURIComponent(coordinate_params), 'spatial_search_type=bbox');
|
200
|
+
params.push('coordinates=' + encodeURIComponent(coordinate_params), 'spatial_search_type=bbox', 'view=' + options.searchresultsview);
|
164
201
|
$(location).attr('href', options.catalogpath + '?' + params.join('&'));
|
165
202
|
}
|
166
203
|
|
@@ -27,7 +27,8 @@ module Blacklight::BlacklightMapsHelperBehavior
|
|
27
27
|
coords_for_search = bbox_coordinates.map { |v| v.to_s }
|
28
28
|
link_to(t('blacklight.maps.interactions.bbox_search'),
|
29
29
|
catalog_index_path(spatial_search_type: "bbox",
|
30
|
-
coordinates: "[#{coords_for_search[1]},#{coords_for_search[0]} TO #{coords_for_search[3]},#{coords_for_search[2]}]"
|
30
|
+
coordinates: "[#{coords_for_search[1]},#{coords_for_search[0]} TO #{coords_for_search[3]},#{coords_for_search[2]}]",
|
31
|
+
view: default_document_index_view_type))
|
31
32
|
end
|
32
33
|
|
33
34
|
# create a link to a location name facet value
|
@@ -37,8 +38,9 @@ module Blacklight::BlacklightMapsHelperBehavior
|
|
37
38
|
else
|
38
39
|
new_params = add_facet_params(field, field_value)
|
39
40
|
end
|
41
|
+
new_params[:view] = default_document_index_view_type
|
40
42
|
link_to(displayvalue.presence || field_value,
|
41
|
-
catalog_index_path(new_params.except(:
|
43
|
+
catalog_index_path(new_params.except(:id, :spatial_search_type, :coordinates)))
|
42
44
|
end
|
43
45
|
|
44
46
|
# create a link to a spatial search for a set of point coordinates
|
@@ -46,6 +48,7 @@ module Blacklight::BlacklightMapsHelperBehavior
|
|
46
48
|
new_params = params.except(:controller, :action, :view, :id, :spatial_search_type, :coordinates)
|
47
49
|
new_params[:spatial_search_type] = "point"
|
48
50
|
new_params[:coordinates] = "#{point_coordinates[1]},#{point_coordinates[0]}"
|
51
|
+
new_params[:view] = default_document_index_view_type
|
49
52
|
link_to(t('blacklight.maps.interactions.point_search'), catalog_index_path(new_params))
|
50
53
|
end
|
51
54
|
|
@@ -95,32 +98,4 @@ module Blacklight::BlacklightMapsHelperBehavior
|
|
95
98
|
options)
|
96
99
|
export.to_geojson
|
97
100
|
end
|
98
|
-
|
99
|
-
# determine the best viewpoint for the map so all markers are visible
|
100
|
-
def set_viewpoint(geojson_features)
|
101
|
-
viewpoint = nil
|
102
|
-
geojson_docs = JSON.parse(geojson_features)["features"]
|
103
|
-
if !geojson_docs.blank?
|
104
|
-
if geojson_docs.length == 1
|
105
|
-
viewpoint = geojson_docs[0]["bbox"] ? nil : geojson_docs[0]["geometry"]["coordinates"].reverse
|
106
|
-
end
|
107
|
-
if geojson_docs.length > 1 || !viewpoint
|
108
|
-
longs, lats = [[],[]]
|
109
|
-
geojson_docs.each do |feature|
|
110
|
-
if feature["bbox"]
|
111
|
-
feature["bbox"].values_at(0,2).each {|long| longs << long }
|
112
|
-
feature["bbox"].values_at(1,3).each {|lat| lats << lat }
|
113
|
-
else
|
114
|
-
longs << feature["geometry"]["coordinates"][0]
|
115
|
-
lats << feature["geometry"]["coordinates"][1]
|
116
|
-
end
|
117
|
-
end
|
118
|
-
sorted_longs, sorted_lats = longs.sort, lats.sort
|
119
|
-
viewpoint = [[sorted_lats.first,sorted_longs.first],[sorted_lats.last,sorted_longs.last]]
|
120
|
-
end
|
121
|
-
end
|
122
|
-
viewpoint = [0,0] if !viewpoint
|
123
|
-
viewpoint
|
124
|
-
end
|
125
|
-
|
126
|
-
end
|
101
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<%= blacklight_map_tag('blacklight-index-map',
|
2
|
-
{data:{
|
3
|
-
searchcontrol: true,
|
2
|
+
{data:{searchcontrol: true,
|
4
3
|
catalogpath: catalog_index_path,
|
5
4
|
placenamefield: blacklight_config.view.maps.placename_field,
|
6
|
-
clustercount:'hits'
|
5
|
+
clustercount:'hits',
|
6
|
+
searchresultsview: default_document_index_view_type
|
7
7
|
}}) %>
|
8
8
|
<%= javascript_tag "$('#blacklight-index-map').blacklight_leaflet_map(#{geojson_features});" %>
|
@@ -3,8 +3,7 @@
|
|
3
3
|
<% if @document[blacklight_config.view.maps.geojson_field.to_sym] || @document[blacklight_config.view.maps.coordinates_field.to_sym] %>
|
4
4
|
<% geojson_features = serialize_geojson(@document) %>
|
5
5
|
<%= blacklight_map_tag('blacklight-show-map',
|
6
|
-
{data:{
|
7
|
-
initialzoom:blacklight_config.view.maps.show_initial_zoom,
|
6
|
+
{data:{initialzoom:blacklight_config.view.maps.show_initial_zoom,
|
8
7
|
singlemarkermode:false}}) %>
|
9
8
|
<%= javascript_tag "$('#blacklight-show-map').blacklight_leaflet_map(#{geojson_features});" %>
|
10
9
|
<% end %>
|
@@ -9,12 +9,12 @@ describe CatalogController do
|
|
9
9
|
before { get :map }
|
10
10
|
|
11
11
|
it "should respond to the #map action" do
|
12
|
-
response.
|
13
|
-
assigns(:document_list).
|
12
|
+
expect(response).to be_success
|
13
|
+
expect(assigns(:document_list)).to_not be_nil
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should render the '/map' page" do
|
17
|
-
response.body.
|
17
|
+
expect(response.body).to have_css 'body.blacklight-catalog-map'
|
18
18
|
end
|
19
19
|
|
20
20
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
feature 'Initial view parameter', js: true do
|
4
|
+
before :all do
|
5
|
+
CatalogController.configure_blacklight do |config|
|
6
|
+
config.view.maps.facet_mode = 'coordinates'
|
7
|
+
config.view.maps.coordinates_facet_field = 'coordinates_facet'
|
8
|
+
config.add_facet_field 'coordinates_facet', :limit => -2, :label => 'Coordinates', :show => false
|
9
|
+
end
|
10
|
+
end
|
11
|
+
scenario 'defaults to zoom area of markers' do
|
12
|
+
visit catalog_index_path f: { format: ['Book'] }, view: 'maps'
|
13
|
+
expect(page).to have_css '.leaflet-marker-icon.marker-cluster', count: 8
|
14
|
+
end
|
15
|
+
scenario 'when provided sets map to its view' do
|
16
|
+
map_tag = '<div id="blacklight-index-map" data-initialview="[[37.65, -122.56],[37.89, -122.27]]" data-maxzoom="18" data-tileurl="http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" data-mapattribution="Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>" data-searchcontrol="true" data-catalogpath="/catalog" data-placenamefield="placename_field" data-clustercount="hits" />'.html_safe
|
17
|
+
expect_any_instance_of(Blacklight::BlacklightMapsHelperBehavior).to receive(:blacklight_map_tag).and_return(map_tag)
|
18
|
+
visit catalog_index_path f: { format: ['Book'] }, view: 'maps'
|
19
|
+
expect(page).to_not have_css '.leaflet-marker-icon.marker-cluster'
|
20
|
+
end
|
21
|
+
end
|
data/spec/features/maps_spec.rb
CHANGED
@@ -91,8 +91,9 @@ describe "Map View", js: true do
|
|
91
91
|
end
|
92
92
|
|
93
93
|
describe "marker popups" do
|
94
|
-
|
95
|
-
|
94
|
+
before do
|
95
|
+
find('.marker-cluster', text: '1', match: :first).click
|
96
|
+
end
|
96
97
|
|
97
98
|
it "should show a popup with correct content" do
|
98
99
|
expect(page).to have_selector("div.leaflet-popup-content-wrapper")
|
@@ -107,6 +108,10 @@ describe "Map View", js: true do
|
|
107
108
|
expect(page).to have_selector(".constraint-value .filterValue", text: "Seoul (Korea)")
|
108
109
|
end
|
109
110
|
|
111
|
+
it "should use the default view type" do
|
112
|
+
expect(current_url).to include("view=list")
|
113
|
+
end
|
114
|
+
|
110
115
|
end
|
111
116
|
|
112
117
|
end
|
@@ -133,6 +138,7 @@ describe "Map View", js: true do
|
|
133
138
|
|
134
139
|
it "should run a new search" do
|
135
140
|
expect(page).to have_selector(".constraint.coordinates")
|
141
|
+
expect(current_url).to include("view=list")
|
136
142
|
end
|
137
143
|
|
138
144
|
end
|
@@ -182,6 +188,7 @@ describe "Map View", js: true do
|
|
182
188
|
|
183
189
|
it "should run a new search" do
|
184
190
|
expect(page).to have_selector(".constraint-value .filterValue", text: "35.86166,104.195397")
|
191
|
+
expect(current_url).to include("view=list")
|
185
192
|
end
|
186
193
|
|
187
194
|
end
|
@@ -11,19 +11,19 @@ describe BlacklightMapsHelper do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
let(:r) { create_response }
|
14
|
+
let(:geojson_hash) { { type: 'Feature', geometry: { type: 'Point', coordinates: [91.117212, 29.646923] }, properties: { placename: 'Tibet' } } }
|
15
|
+
let(:coords) { [91.117212, 29.646923] }
|
16
|
+
let(:bbox) { [78.3955448, 26.8548157, 99.116241, 36.4833345] }
|
14
17
|
|
15
18
|
before :each do
|
19
|
+
allow(helper).to receive_messages(blacklight_config: blacklight_config)
|
16
20
|
CatalogController.blacklight_config = Blacklight::Configuration.new
|
17
|
-
helper.stub(blacklight_config: blacklight_config)
|
18
21
|
@request = ActionDispatch::TestRequest.new
|
19
22
|
@catalog = CatalogController.new
|
20
23
|
@catalog.request = @request
|
21
24
|
@catalog.action_name = "index"
|
22
25
|
helper.instance_variable_set(:@_controller, @catalog)
|
23
26
|
@docs = r.facet_by_field_name(blacklight_config.view.maps.geojson_field).items
|
24
|
-
@geojson_hash = {type:"Feature", geometry:{type:"Point",coordinates:[91.117212, 29.646923]},properties:{placename:"Tibet"}}
|
25
|
-
@coords = [91.117212,29.646923]
|
26
|
-
@bbox = [78.3955448,26.8548157,99.116241,36.4833345]
|
27
27
|
end
|
28
28
|
|
29
29
|
describe "blacklight_map_tag" do
|
@@ -59,20 +59,20 @@ describe BlacklightMapsHelper do
|
|
59
59
|
describe "placename_value" do
|
60
60
|
|
61
61
|
it "should return the placename value" do
|
62
|
-
expect(helper.placename_value(
|
62
|
+
expect(helper.placename_value(geojson_hash)).to eq('Tibet')
|
63
63
|
end
|
64
64
|
|
65
65
|
end
|
66
66
|
|
67
67
|
describe "link_to_bbox_search" do
|
68
68
|
|
69
|
-
|
70
|
-
|
69
|
+
it "should create a spatial search link" do
|
70
|
+
expect(helper.link_to_bbox_search(bbox)).to include('catalog?coordinates')
|
71
|
+
expect(helper.link_to_bbox_search(bbox)).to include('spatial_search_type=bbox')
|
71
72
|
end
|
72
73
|
|
73
|
-
it "should
|
74
|
-
expect(helper.link_to_bbox_search(
|
75
|
-
expect(helper.link_to_bbox_search(@bbox)).to include('spatial_search_type=bbox')
|
74
|
+
it "should include the default_document_index_view_type in the params" do
|
75
|
+
expect(helper.link_to_bbox_search(bbox)).to include('view=list')
|
76
76
|
end
|
77
77
|
|
78
78
|
end
|
@@ -87,17 +87,21 @@ describe BlacklightMapsHelper do
|
|
87
87
|
expect(helper.link_to_placename_field('Tibet', blacklight_config.view.maps.placename_field, 'foo')).to include('">foo</a>')
|
88
88
|
end
|
89
89
|
|
90
|
+
it "should include the default_document_index_view_type in the params" do
|
91
|
+
expect(helper.link_to_placename_field('Tibet', blacklight_config.view.maps.placename_field)).to include('view=list')
|
92
|
+
end
|
93
|
+
|
90
94
|
end
|
91
95
|
|
92
96
|
describe "link_to_point_search" do
|
93
97
|
|
94
|
-
|
95
|
-
|
98
|
+
it "should create a link to a coordinate point" do
|
99
|
+
expect(helper.link_to_point_search(coords)).to include('catalog?coordinates')
|
100
|
+
expect(helper.link_to_point_search(coords)).to include('spatial_search_type=point')
|
96
101
|
end
|
97
102
|
|
98
|
-
it "should
|
99
|
-
expect(helper.link_to_point_search(
|
100
|
-
expect(helper.link_to_point_search(@coords)).to include('spatial_search_type=point')
|
103
|
+
it "should include the default_document_index_view_type in the params" do
|
104
|
+
expect(helper.link_to_point_search(coords)).to include('view=list')
|
101
105
|
end
|
102
106
|
|
103
107
|
end
|
@@ -127,7 +131,7 @@ describe BlacklightMapsHelper do
|
|
127
131
|
describe "render_placename_heading" do
|
128
132
|
|
129
133
|
it "should return the placename heading" do
|
130
|
-
expect(helper.render_placename_heading(
|
134
|
+
expect(helper.render_placename_heading(geojson_hash)).to eq('Tibet')
|
131
135
|
end
|
132
136
|
|
133
137
|
end
|
@@ -147,36 +151,15 @@ describe BlacklightMapsHelper do
|
|
147
151
|
describe "render_spatial_search_link" do
|
148
152
|
|
149
153
|
it "should return link_to_bbox_search if bbox coordinates are passed" do
|
150
|
-
expect(helper.render_spatial_search_link(
|
154
|
+
expect(helper.render_spatial_search_link(bbox)).to include('spatial_search_type=bbox')
|
151
155
|
end
|
152
156
|
|
153
157
|
it "should return link_to_point_search if point coordinates are passed" do
|
154
|
-
expect(helper.render_spatial_search_link(
|
155
|
-
end
|
156
|
-
|
157
|
-
end
|
158
|
-
|
159
|
-
describe "set_viewpoint" do
|
160
|
-
|
161
|
-
describe "map with a single point" do
|
162
|
-
|
163
|
-
it "should return a coordinate array matching the point" do
|
164
|
-
expect(helper.set_viewpoint(helper.serialize_geojson([@docs.first]))).to eq([29.646923, 91.117212])
|
165
|
-
end
|
166
|
-
|
167
|
-
end
|
168
|
-
|
169
|
-
describe "map with multiple points" do
|
170
|
-
|
171
|
-
it "should return an array of coordinates with the max lat-long of the range of points" do
|
172
|
-
expect(helper.set_viewpoint(helper.serialize_geojson(@docs))).to eq([[20.593684, 78.96288], [35.86166, 104.195397]])
|
173
|
-
end
|
174
|
-
|
158
|
+
expect(helper.render_spatial_search_link(coords)).to include('spatial_search_type=point')
|
175
159
|
end
|
176
160
|
|
177
161
|
end
|
178
162
|
|
179
|
-
|
180
163
|
def mock_query_response
|
181
164
|
%({"responseHeader"=>{"status"=>0, "QTime"=>14, "params"=>{"q"=>"tibet", "spellcheck.q"=>"tibet", "qt"=>"search", "wt"=>"ruby", "rows"=>"10"}}, "response"=>{"numFound"=>2, "start"=>0, "maxScore"=>0.016135123, "docs"=>[{"published_display"=>["Dharamsala, H.P."], "author_display"=>"Thub-bstan-yar-ʼphel, Rnam-grwa", "lc_callnum_display"=>["DS785 .T475 2005"], "pub_date"=>["2005"], "format"=>"Book", "material_type_display"=>["a-e, iv, ii, 407 p."], "title_display"=>"Bod gaṅs can gyi rgyal rabs mdor bsdus dris lan brgya pa rab gsal śel gyi me loṅ źes bya ba bźugs so", "id"=>"2008308202", "subject_geo_facet"=>["Tibet"], "language_facet"=>["Tibetan"], "geojson"=>["{\\"type\\":\\"Feature\\",\\"geometry\\":{\\"type\\":\\"Point\\",\\"coordinates\\":[91.117212, 29.646923]},\\"properties\\":{\\"placename\\":\\"Tibet\\"}}", "{\\"type\\":\\"Feature\\",\\"geometry\\":{\\"type\\":\\"Polygon\\",\\"coordinates\\":[[[78.3955448, 26.8548157], [99.116241, 26.8548157], [99.116241, 36.4833345], [78.3955448, 36.4833345], [78.3955448, 26.8548157]]]},\\"bbox\\":[78.3955448,26.8548157,99.116241,36.4833345]}"], "coordinates"=>["91.117212 29.646923", "78.3955448 26.8548157 99.116241 36.4833345"], "score"=>0.016135123}, {"published_display"=>["Dharamsala, Distt. Kangra, H.P."], "pub_date"=>["2007"], "format"=>"Book", "title_display"=>"Ses yon", "material_type_display"=>["xii, 419 p."], "id"=>"2008308478", "subject_geo_facet"=>["China", "Tibet", "India"], "subject_topic_facet"=>["Education and state", "Tibetans", "Tibetan language", "Teaching"], "language_facet"=>["Tibetan"], "geojson"=>["{\\"type\\":\\"Feature\\",\\"geometry\\":{\\"type\\":\\"Point\\",\\"coordinates\\":[104.195397,35.86166]},\\"properties\\":{\\"placename\\":\\"China\\"}}", "{\\"type\\":\\"Feature\\",\\"geometry\\":{\\"type\\":\\"Point\\",\\"coordinates\\":[91.117212,29.646923]},\\"properties\\":{\\"placename\\":\\"Tibet\\"}}", "{\\"type\\":\\"Feature\\",\\"geometry\\":{\\"type\\":\\"Point\\",\\"coordinates\\":[78.96288,20.593684]},\\"properties\\":{\\"placename\\":\\"India\\"}}","{\\"type\\":\\"Feature\\",\\"geometry\\":{\\"type\\":\\"Polygon\\",\\"coordinates\\":[[[68.162386, 6.7535159], [97.395555, 6.7535159], [97.395555, 35.5044752], [68.162386, 35.5044752], [68.162386, 6.7535159]]]},\\"bbox\\":[68.162386,6.7535159,97.395555,35.5044752]}"], "coordinates"=>["68.162386 6.7535159 97.395555 35.5044752", "104.195397 35.86166", "91.117212 29.646923", "78.96288 20.593684"], "score"=>0.0026767207}]}, "facet_counts"=>{"facet_queries"=>{}, "facet_fields"=>{"format"=>["Book", 2], "lc_1letter_facet"=>["D - World History", 1], "lc_alpha_facet"=>["DS", 1], "lc_b4cutter_facet"=>["DS785", 1], "language_facet"=>["Tibetan", 2], "pub_date"=>["2005", 1, "2007", 1], "subject_era_facet"=>[], "subject_geo_facet"=>["China", 1, "India", 1, "Tibet", 1, "Tibet (China)", 1], "coordinates"=>["91.117212 29.646923", 2, "78.3955448 26.8548157 99.116241 36.4833345", 1, "68.162386 6.7535159 97.395555 35.5044752", 1, "104.195397 35.86166", 1, "78.96288 20.593684", 1], "geojson"=>["{\\"type\\":\\"Feature\\",\\"geometry\\":{\\"type\\":\\"Point\\",\\"coordinates\\":[91.117212, 29.646923]},\\"properties\\":{\\"placename\\":\\"Tibet\\"}}", 2, "{\\"type\\":\\"Feature\\",\\"geometry\\":{\\"type\\":\\"Polygon\\",\\"coordinates\\":[[[78.3955448, 26.8548157], [99.116241, 26.8548157], [99.116241, 36.4833345], [78.3955448, 36.4833345], [78.3955448, 26.8548157]]]},\\"bbox\\":[78.3955448,26.8548157,99.116241,36.4833345]}", 1, "{\\"type\\":\\"Feature\\",\\"geometry\\":{\\"type\\":\\"Point\\",\\"coordinates\\":[104.195397,35.86166]},\\"properties\\":{\\"placename\\":\\"China\\"}}", 1, "{\\"type\\":\\"Feature\\",\\"geometry\\":{\\"type\\":\\"Point\\",\\"coordinates\\":[78.96288,20.593684]},\\"properties\\":{\\"placename\\":\\"India\\"}}", 1, "{\\"type\\":\\"Feature\\",\\"geometry\\":{\\"type\\":\\"Polygon\\",\\"coordinates\\":[[[68.162386, 6.7535159], [97.395555, 6.7535159], [97.395555, 35.5044752], [68.162386, 35.5044752], [68.162386, 6.7535159]]]},\\"bbox\\":[68.162386,6.7535159,97.395555,35.5044752]}", 1], "subject_topic_facet"=>["Education and state", 1, "Teaching", 1, "Tibetan language", 1, "Tibetans", 1]}, "facet_dates"=>{}, "facet_ranges"=>{}}, "spellcheck"=>{"suggestions"=>["tibet", {"numFound"=>1, "startOffset"=>0, "endOffset"=>5, "origFreq"=>2, "suggestion"=>[{"word"=>"tibetan", "freq"=>6}]}, "correctlySpelled", true]}})
|
182
165
|
end
|
@@ -9,7 +9,7 @@ describe "BlacklightMaps::GeojsonExport" do
|
|
9
9
|
@request = ActionDispatch::TestRequest.new
|
10
10
|
@controller.request = @request
|
11
11
|
@response = ActionDispatch::TestResponse.new
|
12
|
-
@response.
|
12
|
+
expect(@response).to receive(:docs).and_return([{ "published_display"=>["Dharamsala, Distt. Kangra, H.P."], "pub_date"=>["2007"], "format"=>"Book", "title_display"=>"Ses yon", "material_type_display"=>["xii, 419 p."], "id"=>"2008308478", "placename_field"=>["China", "Tibet", "India"], "subject_topic_facet"=>["Education and state", "Tibetans", "Tibetan language", "Teaching"], "language_facet"=>["Tibetan"], "geojson"=>["{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[104.195397,35.86166]},\"properties\":{\"placename\":\"China\"}}", "{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[91.117212,29.646923]},\"properties\":{\"placename\":\"Tibet\"}}", "{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":[78.96288,20.593684]},\"properties\":{\"placename\":\"India\"}}"], "coordinates"=>["68.162386 6.7535159 97.395555 35.5044752", "104.195397 35.86166", "91.117212 29.646923", "20.593684,78.96288"], "score"=>0.0026767207 }])
|
13
13
|
end
|
14
14
|
|
15
15
|
# TODO: use @response.facet_by_field_name('geojson').items instead of @response
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
ENV["RAILS_ENV"] ||= 'test'
|
2
2
|
|
3
3
|
require 'engine_cart'
|
4
|
+
require 'coveralls'
|
5
|
+
Coveralls.wear!('rails')
|
4
6
|
EngineCart.load_application!
|
5
7
|
|
6
8
|
require 'capybara/poltergeist'
|
@@ -16,7 +18,6 @@ end
|
|
16
18
|
|
17
19
|
if ENV["COVERAGE"] or ENV["CI"]
|
18
20
|
require 'simplecov'
|
19
|
-
require 'coveralls'
|
20
21
|
|
21
22
|
SimpleCov.formatter = Coveralls::SimpleCov::Formatter
|
22
23
|
SimpleCov.start do
|
@@ -24,12 +25,9 @@ if ENV["COVERAGE"] or ENV["CI"]
|
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
27
|
-
|
28
|
-
require 'blacklight'
|
29
28
|
require 'blacklight/maps'
|
30
29
|
|
31
30
|
require 'rspec/rails'
|
32
|
-
require 'rspec/autorun'
|
33
31
|
require 'capybara/rspec'
|
34
32
|
|
35
33
|
|
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.3.
|
4
|
+
version: 0.3.3
|
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-05-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -187,8 +187,10 @@ executables: []
|
|
187
187
|
extensions: []
|
188
188
|
extra_rdoc_files: []
|
189
189
|
files:
|
190
|
+
- ".coveralls.yml"
|
190
191
|
- ".gitignore"
|
191
192
|
- ".travis.yml"
|
193
|
+
- CONTRIBUTING.md
|
192
194
|
- Gemfile
|
193
195
|
- LICENSE.txt
|
194
196
|
- README.md
|
@@ -226,6 +228,7 @@ files:
|
|
226
228
|
- solr_conf/conf/schema.xml
|
227
229
|
- solr_conf/conf/solrconfig.xml
|
228
230
|
- spec/controllers/catalog_controller_spec.rb
|
231
|
+
- spec/features/initial_view_spec.rb
|
229
232
|
- spec/features/maps_spec.rb
|
230
233
|
- spec/fixtures/sample_solr_documents.yml
|
231
234
|
- spec/helpers/blacklight_maps_helper_spec.rb
|
@@ -262,6 +265,7 @@ specification_version: 4
|
|
262
265
|
summary: Maps for Blacklight
|
263
266
|
test_files:
|
264
267
|
- spec/controllers/catalog_controller_spec.rb
|
268
|
+
- spec/features/initial_view_spec.rb
|
265
269
|
- spec/features/maps_spec.rb
|
266
270
|
- spec/fixtures/sample_solr_documents.yml
|
267
271
|
- spec/helpers/blacklight_maps_helper_spec.rb
|