blacklight-maps 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +17 -0
- data/app/assets/javascripts/blacklight-maps/blacklight-maps-browse.js +24 -20
- data/app/helpers/blacklight/blacklight_maps_helper_behavior.rb +3 -2
- data/app/views/catalog/_index_map.html.erb +2 -1
- data/lib/blacklight/maps/export.rb +3 -1
- data/lib/blacklight/maps/version.rb +1 -1
- data/spec/lib/blacklight/maps/export_spec.rb +5 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6bffe02f056bdbd0cddc8b63f3f30b1ff7d08d9
|
4
|
+
data.tar.gz: 99876fe750aebda63112736254ea34d893f4c294
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e37de7d922821ede6726b35bd1b2139fc72ca804000940c8411f40b1ec8320d95de79e1bc41315ecb50f10b70020da6ee02fca4b73096022734567777602be95
|
7
|
+
data.tar.gz: e7ffbbb907a95830329d2cbbc004bb0320c6a842e1adf5d9da9a2646fc4cae0d3ea36dfc5c349671e87d4416fe67a1f9399b1f3db1688033f0b4550e8caded55
|
data/README.md
CHANGED
@@ -163,6 +163,23 @@ However, the catalog#show maplet widget must be included manually, via one of tw
|
|
163
163
|
...
|
164
164
|
```
|
165
165
|
|
166
|
+
### Customization
|
167
|
+
|
168
|
+
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
|
+
|
170
|
+
- ```viewpoint``` = the center point of the map (```[lat,long]```)
|
171
|
+
- ```searchcontrol``` = whether to display the search control on the map (```boolean```)
|
172
|
+
- ```catalogpath``` = the search path for the search control (e.g. ```catalog_index_path```)
|
173
|
+
- ```placenamefield``` = the name of the Solr field containing the location names (e.g. ```"placename_field"```)
|
174
|
+
- ```searchctrlcue``` = the hover text to display when the mouse hovers over the search control
|
175
|
+
- ```singlemarkermode``` = whether locations should be clustered (```boolean```)
|
176
|
+
- ```clustercount``` = whether clusters should display the location count or the number of hits (```"hits" || "locations"```)
|
177
|
+
- ```maxzoom``` = the maxZoom [property of the map](http://leafletjs.com/reference.html#map-maxzoom)
|
178
|
+
- ```tileurl``` = a [tileLayer url](http://leafletjs.com/reference.html#tilelayer-l.tilelayer) to change the basemap
|
179
|
+
- ```mapattribution``` = an [attribution string](http://leafletjs.com/reference.html#tilelayer-attribution) to describe the basemap layer
|
180
|
+
- ```nodata``` = 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
|
+
|
182
|
+
|
166
183
|
## Contributing
|
167
184
|
|
168
185
|
1. Fork it ( http://github.com/<my-github-username>/blacklight-maps/fork )
|
@@ -3,6 +3,24 @@
|
|
3
3
|
$.fn.blacklight_leaflet_map = function(geojson_docs, arg_opts) {
|
4
4
|
var map, sidebar, markers, geoJsonLayer, currentLayer;
|
5
5
|
|
6
|
+
// Configure default options and those passed via the constructor options
|
7
|
+
var options = $.extend({
|
8
|
+
tileurl : 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
|
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
|
+
viewpoint: [0,0],
|
11
|
+
initialzoom: 2,
|
12
|
+
singlemarkermode: true,
|
13
|
+
searchcontrol: false,
|
14
|
+
catalogpath: 'catalog',
|
15
|
+
searchctrlcue: 'Search for all items within the current map window',
|
16
|
+
placenamefield: 'placename_field',
|
17
|
+
nodata: 'Sorry, there is no data for this location.',
|
18
|
+
clustercount:'locations'
|
19
|
+
}, arg_opts );
|
20
|
+
|
21
|
+
// Extend options from data-attributes
|
22
|
+
$.extend(options, this.data());
|
23
|
+
|
6
24
|
var mapped_items = '<span class="mapped-count"><span class="badge">' + geojson_docs.features.length + '</span> location' + (geojson_docs.features.length !== 1 ? 's' : '') + ' mapped</span>';
|
7
25
|
|
8
26
|
var mapped_caveat = '<span class="mapped-caveat">Only items with location data are shown below</span>';
|
@@ -15,8 +33,12 @@
|
|
15
33
|
var result_count = page_links.find('.page_entries').find('strong').last().html();
|
16
34
|
page_links.html('<span class="page_entries"><strong>' + result_count + '</strong> items found</span>' + mapped_items + mapped_caveat);
|
17
35
|
sortAndPerPage.find('.dropdown-toggle').hide();
|
36
|
+
} else { // catalog#show view
|
37
|
+
$(this.selector).before(mapped_items);
|
38
|
+
}
|
18
39
|
|
19
|
-
|
40
|
+
// determine whether to use item location or result count in cluster icon display
|
41
|
+
if (options.clustercount == 'hits') {
|
20
42
|
var clusterIconFunction = function (cluster) {
|
21
43
|
var markers = cluster.getAllChildMarkers();
|
22
44
|
var childCount = 0;
|
@@ -33,28 +55,10 @@
|
|
33
55
|
}
|
34
56
|
return new L.divIcon({ html: '<div><span>' + childCount + '</span></div>', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) });
|
35
57
|
};
|
36
|
-
} else {
|
37
|
-
$(this.selector).before(mapped_items);
|
58
|
+
} else {
|
38
59
|
var clusterIconFunction = this._defaultIconCreateFunction;
|
39
60
|
}
|
40
61
|
|
41
|
-
// Configure default options and those passed via the constructor options
|
42
|
-
var options = $.extend({
|
43
|
-
tileurl : 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
|
44
|
-
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>',
|
45
|
-
viewpoint: [0,0],
|
46
|
-
initialzoom: 2,
|
47
|
-
singlemarkermode: true,
|
48
|
-
searchcontrol: false,
|
49
|
-
catalogpath: 'catalog',
|
50
|
-
searchctrlcue: 'Search for all items within the current map window',
|
51
|
-
placenamefield: 'placename_field',
|
52
|
-
nodata: 'Sorry, there is no data for this location.'
|
53
|
-
}, arg_opts );
|
54
|
-
|
55
|
-
// Extend options from data-attributes
|
56
|
-
$.extend(options, this.data());
|
57
|
-
|
58
62
|
// Display the map
|
59
63
|
this.each(function() {
|
60
64
|
options.id = this.id;
|
@@ -88,10 +88,11 @@ module Blacklight::BlacklightMapsHelperBehavior
|
|
88
88
|
end
|
89
89
|
|
90
90
|
# pass the document or facet values to BlacklightMaps::GeojsonExport
|
91
|
-
def serialize_geojson(documents)
|
91
|
+
def serialize_geojson(documents, options={})
|
92
92
|
export = BlacklightMaps::GeojsonExport.new(controller,
|
93
93
|
controller.action_name,
|
94
|
-
documents
|
94
|
+
documents,
|
95
|
+
options)
|
95
96
|
export.to_geojson
|
96
97
|
end
|
97
98
|
|
@@ -2,6 +2,7 @@
|
|
2
2
|
{data:{viewpoint: set_viewpoint(geojson_features),
|
3
3
|
searchcontrol: true,
|
4
4
|
catalogpath: catalog_index_path,
|
5
|
-
placenamefield: blacklight_config.view.maps.placename_field
|
5
|
+
placenamefield: blacklight_config.view.maps.placename_field,
|
6
|
+
clustercount:'hits'
|
6
7
|
}}) %>
|
7
8
|
<%= javascript_tag "$('#blacklight-index-map').blacklight_leaflet_map(#{geojson_features});" %>
|
@@ -13,10 +13,12 @@ module BlacklightMaps
|
|
13
13
|
# response_docs is passed by a helper, and is either:
|
14
14
|
# - index view, map view: an array of facet values
|
15
15
|
# - show view: the document object
|
16
|
-
|
16
|
+
# options is an optional hash of possible configuration options
|
17
|
+
def initialize(controller, action, response_docs, options={})
|
17
18
|
@controller = controller
|
18
19
|
@action = action
|
19
20
|
@response_docs = response_docs
|
21
|
+
@options = options
|
20
22
|
end
|
21
23
|
|
22
24
|
# build the GeoJSON FeatureCollection
|
@@ -14,7 +14,7 @@ describe "BlacklightMaps::GeojsonExport" do
|
|
14
14
|
|
15
15
|
# TODO: use @response.facet_by_field_name('geojson').items instead of @response
|
16
16
|
# then refactor build_geojson_features and to_geojson specs
|
17
|
-
subject {BlacklightMaps::GeojsonExport.new(@controller, @action, @response.docs)}
|
17
|
+
subject {BlacklightMaps::GeojsonExport.new(@controller, @action, @response.docs, {foo:'bar'})}
|
18
18
|
|
19
19
|
it "should instantiate GeojsonExport" do
|
20
20
|
expect(subject.class).to eq(::BlacklightMaps::GeojsonExport)
|
@@ -46,6 +46,10 @@ describe "BlacklightMaps::GeojsonExport" do
|
|
46
46
|
expect(subject.send(:placename_property)).to eq('placename')
|
47
47
|
end
|
48
48
|
|
49
|
+
it "should create an @options instance variable" do
|
50
|
+
expect(subject.instance_variable_get("@options")[:foo]).to eq('bar')
|
51
|
+
end
|
52
|
+
|
49
53
|
end
|
50
54
|
|
51
55
|
describe "build_feature_from_geojson" do
|
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.2
|
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-04-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -256,7 +256,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
256
256
|
version: '0'
|
257
257
|
requirements: []
|
258
258
|
rubyforge_project:
|
259
|
-
rubygems_version: 2.
|
259
|
+
rubygems_version: 2.2.2
|
260
260
|
signing_key:
|
261
261
|
specification_version: 4
|
262
262
|
summary: Maps for Blacklight
|