blacklight_heatmaps 1.3.1 → 2.0.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/README.md +6 -1
- data/Rakefile +7 -0
- data/app/assets/javascripts/blacklight_heatmaps/default.esm.js +2001 -0
- data/app/assets/javascripts/blacklight_heatmaps/default.esm.js.map +1 -0
- data/app/assets/javascripts/blacklight_heatmaps/default.js +2006 -8
- data/app/assets/javascripts/blacklight_heatmaps/default.js.map +1 -0
- data/app/{assets/javascripts/blacklight_heatmaps → javascript}/basemaps.js +4 -2
- data/app/javascript/blacklight_heatmaps.js +43 -0
- data/app/javascript/icons.js +5 -0
- data/app/javascript/viewers/index.js +76 -0
- data/app/javascript/viewers/show.js +24 -0
- data/lib/blacklight_heatmaps/version.rb +1 -1
- data/lib/generators/blacklight_heatmaps/install_generator.rb +40 -5
- data/lib/generators/blacklight_heatmaps/templates/blacklight_heatmaps.css +11 -0
- data/spec/examples.txt +7 -0
- data/spec/features/configurable_basemap_spec.rb +1 -2
- data/spec/features/index_page_map_spec.rb +1 -1
- data/spec/features/show_page_map_spec.rb +1 -1
- data/spec/spec_helper.rb +0 -2
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +11 -12
- data/vendor/assets/javascripts/geostats.js +511 -284
- data/vendor/assets/javascripts/leaflet_solr_heatmap.js +6 -4
- metadata +48 -45
- data/app/assets/javascripts/blacklight_heatmaps/blacklight_heatmaps.js +0 -18
- data/app/assets/javascripts/blacklight_heatmaps/icons.js +0 -3
- data/app/assets/javascripts/blacklight_heatmaps/viewers/index.js +0 -91
- data/app/assets/javascripts/blacklight_heatmaps/viewers/show.js +0 -39
- data/app/assets/javascripts/index.js +0 -8
- data/lib/generators/blacklight_heatmaps/templates/blacklight_heatmaps.js +0 -1
- data/lib/generators/blacklight_heatmaps/templates/blacklight_heatmaps.scss +0 -1
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import geostats from './geostats'
|
|
2
|
+
|
|
1
3
|
L.SolrHeatmap = L.GeoJSON.extend({
|
|
2
4
|
options: {
|
|
3
5
|
solrRequestHandler: 'select',
|
|
@@ -136,7 +138,7 @@ L.SolrHeatmap = L.GeoJSON.extend({
|
|
|
136
138
|
_getGradient: function (classifications) {
|
|
137
139
|
var gradient = {};
|
|
138
140
|
var maxValue = classifications[classifications.length - 1];
|
|
139
|
-
var colors = _this.options.colors;
|
|
141
|
+
var colors = _this.options.colors;
|
|
140
142
|
// skip first lower bound, assumed to be 0 from Jenks
|
|
141
143
|
for (var i = 1; i < classifications.length; i++)
|
|
142
144
|
gradient[classifications[i] / maxValue] = colors[i];
|
|
@@ -145,7 +147,7 @@ L.SolrHeatmap = L.GeoJSON.extend({
|
|
|
145
147
|
|
|
146
148
|
// compute size of heatmap cells in pixels
|
|
147
149
|
_getCellSize: function () {
|
|
148
|
-
_this = this;
|
|
150
|
+
const _this = this;
|
|
149
151
|
var mapSize = _this._map.getSize(); // should't we use solr returned map extent?
|
|
150
152
|
var widthInPixels = mapSize.x;
|
|
151
153
|
var heightInPixels = mapSize.y;
|
|
@@ -261,7 +263,7 @@ L.SolrHeatmap = L.GeoJSON.extend({
|
|
|
261
263
|
// Jenks classification can be slow so we optionally sample the data
|
|
262
264
|
// typically any big sample of counts are much the same, don't need to classify on all of them
|
|
263
265
|
_sampleCounts: function (passedArray) {
|
|
264
|
-
_this = this;
|
|
266
|
+
const _this = this;
|
|
265
267
|
if (passedArray.length <= _this.options.maxSampleSize) {
|
|
266
268
|
return passedArray; // array too small to sample
|
|
267
269
|
}
|
|
@@ -269,7 +271,7 @@ L.SolrHeatmap = L.GeoJSON.extend({
|
|
|
269
271
|
var maxValue = Math.max.apply(Math, passedArray);
|
|
270
272
|
var sampledArray = [];
|
|
271
273
|
var period = Math.ceil(passedArray.length / _this.options.maxSampleSize);
|
|
272
|
-
for (i = 0; i < passedArray.length; i = i + period) {
|
|
274
|
+
for (let i = 0; i < passedArray.length; i = i + period) {
|
|
273
275
|
sampledArray.push(passedArray[i]);
|
|
274
276
|
}
|
|
275
277
|
|
metadata
CHANGED
|
@@ -1,42 +1,22 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: blacklight_heatmaps
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jack Reed
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2025-12-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: rails
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - ">="
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: 7.1.4
|
|
20
|
-
- - "<"
|
|
21
|
-
- !ruby/object:Gem::Version
|
|
22
|
-
version: '8'
|
|
23
|
-
type: :runtime
|
|
24
|
-
prerelease: false
|
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
-
requirements:
|
|
27
|
-
- - ">="
|
|
28
|
-
- !ruby/object:Gem::Version
|
|
29
|
-
version: 7.1.4
|
|
30
|
-
- - "<"
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: '8'
|
|
33
13
|
- !ruby/object:Gem::Dependency
|
|
34
14
|
name: blacklight
|
|
35
15
|
requirement: !ruby/object:Gem::Requirement
|
|
36
16
|
requirements:
|
|
37
17
|
- - ">="
|
|
38
18
|
- !ruby/object:Gem::Version
|
|
39
|
-
version:
|
|
19
|
+
version: '8'
|
|
40
20
|
- - "<"
|
|
41
21
|
- !ruby/object:Gem::Version
|
|
42
22
|
version: '9'
|
|
@@ -46,7 +26,7 @@ dependencies:
|
|
|
46
26
|
requirements:
|
|
47
27
|
- - ">="
|
|
48
28
|
- !ruby/object:Gem::Version
|
|
49
|
-
version:
|
|
29
|
+
version: '8'
|
|
50
30
|
- - "<"
|
|
51
31
|
- !ruby/object:Gem::Version
|
|
52
32
|
version: '9'
|
|
@@ -79,21 +59,27 @@ dependencies:
|
|
|
79
59
|
- !ruby/object:Gem::Version
|
|
80
60
|
version: '0.2'
|
|
81
61
|
- !ruby/object:Gem::Dependency
|
|
82
|
-
name:
|
|
62
|
+
name: rails
|
|
83
63
|
requirement: !ruby/object:Gem::Requirement
|
|
84
64
|
requirements:
|
|
85
65
|
- - ">="
|
|
86
66
|
- !ruby/object:Gem::Version
|
|
87
|
-
version:
|
|
88
|
-
|
|
67
|
+
version: 7.1.4
|
|
68
|
+
- - "<"
|
|
69
|
+
- !ruby/object:Gem::Version
|
|
70
|
+
version: '9'
|
|
71
|
+
type: :runtime
|
|
89
72
|
prerelease: false
|
|
90
73
|
version_requirements: !ruby/object:Gem::Requirement
|
|
91
74
|
requirements:
|
|
92
75
|
- - ">="
|
|
93
76
|
- !ruby/object:Gem::Version
|
|
94
|
-
version:
|
|
77
|
+
version: 7.1.4
|
|
78
|
+
- - "<"
|
|
79
|
+
- !ruby/object:Gem::Version
|
|
80
|
+
version: '9'
|
|
95
81
|
- !ruby/object:Gem::Dependency
|
|
96
|
-
name:
|
|
82
|
+
name: capybara
|
|
97
83
|
requirement: !ruby/object:Gem::Requirement
|
|
98
84
|
requirements:
|
|
99
85
|
- - ">="
|
|
@@ -121,7 +107,7 @@ dependencies:
|
|
|
121
107
|
- !ruby/object:Gem::Version
|
|
122
108
|
version: '2.0'
|
|
123
109
|
- !ruby/object:Gem::Dependency
|
|
124
|
-
name:
|
|
110
|
+
name: rspec-rails
|
|
125
111
|
requirement: !ruby/object:Gem::Requirement
|
|
126
112
|
requirements:
|
|
127
113
|
- - ">="
|
|
@@ -135,7 +121,21 @@ dependencies:
|
|
|
135
121
|
- !ruby/object:Gem::Version
|
|
136
122
|
version: '0'
|
|
137
123
|
- !ruby/object:Gem::Dependency
|
|
138
|
-
name:
|
|
124
|
+
name: selenium-webdriver
|
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
|
126
|
+
requirements:
|
|
127
|
+
- - "~>"
|
|
128
|
+
- !ruby/object:Gem::Version
|
|
129
|
+
version: '4.11'
|
|
130
|
+
type: :development
|
|
131
|
+
prerelease: false
|
|
132
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
133
|
+
requirements:
|
|
134
|
+
- - "~>"
|
|
135
|
+
- !ruby/object:Gem::Version
|
|
136
|
+
version: '4.11'
|
|
137
|
+
- !ruby/object:Gem::Dependency
|
|
138
|
+
name: solr_wrapper
|
|
139
139
|
requirement: !ruby/object:Gem::Requirement
|
|
140
140
|
requirements:
|
|
141
141
|
- - ">="
|
|
@@ -149,19 +149,19 @@ dependencies:
|
|
|
149
149
|
- !ruby/object:Gem::Version
|
|
150
150
|
version: '0'
|
|
151
151
|
- !ruby/object:Gem::Dependency
|
|
152
|
-
name:
|
|
152
|
+
name: sqlite3
|
|
153
153
|
requirement: !ruby/object:Gem::Requirement
|
|
154
154
|
requirements:
|
|
155
|
-
- - "
|
|
155
|
+
- - ">="
|
|
156
156
|
- !ruby/object:Gem::Version
|
|
157
|
-
version: '
|
|
157
|
+
version: '0'
|
|
158
158
|
type: :development
|
|
159
159
|
prerelease: false
|
|
160
160
|
version_requirements: !ruby/object:Gem::Requirement
|
|
161
161
|
requirements:
|
|
162
|
-
- - "
|
|
162
|
+
- - ">="
|
|
163
163
|
- !ruby/object:Gem::Version
|
|
164
|
-
version: '
|
|
164
|
+
version: '0'
|
|
165
165
|
description: Search and view Blacklight resources on a map.
|
|
166
166
|
email:
|
|
167
167
|
- phillipjreed@gmail.com
|
|
@@ -173,17 +173,19 @@ files:
|
|
|
173
173
|
- README.md
|
|
174
174
|
- Rakefile
|
|
175
175
|
- app/assets/images/blacklight/heatmaps.svg
|
|
176
|
-
- app/assets/javascripts/blacklight_heatmaps/
|
|
177
|
-
- app/assets/javascripts/blacklight_heatmaps/
|
|
176
|
+
- app/assets/javascripts/blacklight_heatmaps/default.esm.js
|
|
177
|
+
- app/assets/javascripts/blacklight_heatmaps/default.esm.js.map
|
|
178
178
|
- app/assets/javascripts/blacklight_heatmaps/default.js
|
|
179
|
-
- app/assets/javascripts/blacklight_heatmaps/
|
|
180
|
-
- app/assets/javascripts/blacklight_heatmaps/viewers/index.js
|
|
181
|
-
- app/assets/javascripts/blacklight_heatmaps/viewers/show.js
|
|
182
|
-
- app/assets/javascripts/index.js
|
|
179
|
+
- app/assets/javascripts/blacklight_heatmaps/default.js.map
|
|
183
180
|
- app/assets/stylesheets/blacklight_heatmaps/default.scss
|
|
184
181
|
- app/components/blacklight_heatmaps/icons/heatmaps_component.rb
|
|
185
182
|
- app/controllers/blacklight_heatmaps/application_controller.rb
|
|
186
183
|
- app/helpers/blacklight/maps_helper.rb
|
|
184
|
+
- app/javascript/basemaps.js
|
|
185
|
+
- app/javascript/blacklight_heatmaps.js
|
|
186
|
+
- app/javascript/icons.js
|
|
187
|
+
- app/javascript/viewers/index.js
|
|
188
|
+
- app/javascript/viewers/show.js
|
|
187
189
|
- app/models/concerns/blacklight_heatmaps/bounding_box.rb
|
|
188
190
|
- app/models/concerns/blacklight_heatmaps/exceptions.rb
|
|
189
191
|
- app/models/concerns/blacklight_heatmaps/geometry_parser.rb
|
|
@@ -203,9 +205,9 @@ files:
|
|
|
203
205
|
- lib/blacklight_heatmaps/engine.rb
|
|
204
206
|
- lib/blacklight_heatmaps/version.rb
|
|
205
207
|
- lib/generators/blacklight_heatmaps/install_generator.rb
|
|
206
|
-
- lib/generators/blacklight_heatmaps/templates/blacklight_heatmaps.
|
|
207
|
-
- lib/generators/blacklight_heatmaps/templates/blacklight_heatmaps.scss
|
|
208
|
+
- lib/generators/blacklight_heatmaps/templates/blacklight_heatmaps.css
|
|
208
209
|
- lib/tasks/blacklight_heatmaps_tasks.rake
|
|
210
|
+
- spec/examples.txt
|
|
209
211
|
- spec/features/configurable_basemap_spec.rb
|
|
210
212
|
- spec/features/index_page_map_spec.rb
|
|
211
213
|
- spec/features/show_page_map_spec.rb
|
|
@@ -243,11 +245,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
243
245
|
- !ruby/object:Gem::Version
|
|
244
246
|
version: '0'
|
|
245
247
|
requirements: []
|
|
246
|
-
rubygems_version: 3.
|
|
248
|
+
rubygems_version: 3.5.11
|
|
247
249
|
signing_key:
|
|
248
250
|
specification_version: 4
|
|
249
251
|
summary: Search and view Blacklight resources on a map.
|
|
250
252
|
test_files:
|
|
253
|
+
- spec/examples.txt
|
|
251
254
|
- spec/features/configurable_basemap_spec.rb
|
|
252
255
|
- spec/features/index_page_map_spec.rb
|
|
253
256
|
- spec/features/show_page_map_spec.rb
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
!(function (global) {
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var BlacklightHeatmaps = L.Class.extend({
|
|
5
|
-
statics: {
|
|
6
|
-
__version__: '0.0.3',
|
|
7
|
-
|
|
8
|
-
selectBasemap: function (basemap) {
|
|
9
|
-
if (basemap && basemap !== undefined) {
|
|
10
|
-
return BlacklightHeatmaps.Basemaps[basemap];
|
|
11
|
-
} else {
|
|
12
|
-
return BlacklightHeatmaps.Basemaps.positron;
|
|
13
|
-
}
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
});
|
|
17
|
-
global.BlacklightHeatmaps = BlacklightHeatmaps;
|
|
18
|
-
}(this));
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
Blacklight.onLoad(function () {
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
document.querySelectorAll('[data-index-map]').forEach(function (el) {
|
|
5
|
-
BlacklightHeatmaps.indexView(el, {});
|
|
6
|
-
});
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
!(function (global) {
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
var IndexView = L.Class.extend({
|
|
13
|
-
options: {},
|
|
14
|
-
|
|
15
|
-
initialize: function (el, options) {
|
|
16
|
-
var requestUrl = el.dataset.searchUrl + '&format=heatmaps';
|
|
17
|
-
var geometryField = el.dataset.geometryField;
|
|
18
|
-
var template = el.dataset.sidebarTemplate;
|
|
19
|
-
var colorRamp = JSON.parse(el.dataset.colorRamp);
|
|
20
|
-
|
|
21
|
-
// Blank out page link content first and disable pagination
|
|
22
|
-
document.querySelectorAll('#sortAndPerPage .page-links').forEach(function (links) {
|
|
23
|
-
links.innerHTML = '';
|
|
24
|
-
});
|
|
25
|
-
document.querySelectorAll('ul.pagination').forEach(function (links) {
|
|
26
|
-
links.classList.add('d-none');
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
var map = L.map(el.id).setView([0, 0], 1);
|
|
30
|
-
var basemap = BlacklightHeatmaps.selectBasemap(
|
|
31
|
-
el.dataset.basemapProvider
|
|
32
|
-
).addTo(map);
|
|
33
|
-
|
|
34
|
-
var solrLayer = L.solrHeatmap(requestUrl, {
|
|
35
|
-
field: geometryField,
|
|
36
|
-
maxSampleSize: 50,
|
|
37
|
-
colors: colorRamp,
|
|
38
|
-
}).addTo(map);
|
|
39
|
-
|
|
40
|
-
var sidebar = L.control.sidebar('index-map-sidebar', {
|
|
41
|
-
position: 'right',
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
map.addControl(sidebar);
|
|
45
|
-
|
|
46
|
-
solrLayer.on('click', function (e) {
|
|
47
|
-
if (!sidebar.isVisible()) {
|
|
48
|
-
map.setView(e.latlng);
|
|
49
|
-
} else {
|
|
50
|
-
var point = map.project(e.latlng);
|
|
51
|
-
var offset = sidebar.getOffset();
|
|
52
|
-
var newPoint = L.point(point.x - (offset / 2), point.y);
|
|
53
|
-
map.setView(map.unproject(newPoint));
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
sidebar.show();
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
solrLayer.on('dataAdded', function (e) {
|
|
60
|
-
if (e.response && e.response.docs) {
|
|
61
|
-
var html = '';
|
|
62
|
-
e.response.docs.forEach(function (value) {
|
|
63
|
-
html += L.Util.template(template, value);
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
sidebar.setContent(html);
|
|
67
|
-
|
|
68
|
-
var docCount = e.response.pages.total_count;
|
|
69
|
-
|
|
70
|
-
document.querySelectorAll('#sortAndPerPage .page-links').forEach(function (links) {
|
|
71
|
-
links.innerHTML = parseInt(docCount).toLocaleString() + ' ' + (docCount == 1 ? 'item' : 'items') + ' found';
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
},
|
|
76
|
-
|
|
77
|
-
pluralize: function (count, word) {
|
|
78
|
-
switch (count) {
|
|
79
|
-
case 1:
|
|
80
|
-
return word;
|
|
81
|
-
default:
|
|
82
|
-
return word + 's';
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
global.BlacklightHeatmaps.IndexView = IndexView;
|
|
88
|
-
global.BlacklightHeatmaps.indexView = function (el, options) {
|
|
89
|
-
return new IndexView(el, options);
|
|
90
|
-
};
|
|
91
|
-
})(this);
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
Blacklight.onLoad(function () {
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
document.querySelectorAll('[data-show-map]').forEach(function (el) {
|
|
5
|
-
BlacklightHeatmaps.showView(el);
|
|
6
|
-
});
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
!(function (global) {
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
var ShowView = L.Class.extend({
|
|
13
|
-
options: {},
|
|
14
|
-
|
|
15
|
-
initialize: function (el, options) {
|
|
16
|
-
var json = JSON.parse(el.dataset.features);
|
|
17
|
-
|
|
18
|
-
var map = L.map(el.id).setView([0, 0], 1);
|
|
19
|
-
var basemap = BlacklightHeatmaps.selectBasemap(
|
|
20
|
-
el.dataset.basemapProvider
|
|
21
|
-
).addTo(map);
|
|
22
|
-
|
|
23
|
-
var features = L.geoJson(json, {
|
|
24
|
-
pointToLayer: function(feature, latlng) {
|
|
25
|
-
return L.marker(latlng, {
|
|
26
|
-
icon: BlacklightHeatmaps.Icons.default
|
|
27
|
-
})
|
|
28
|
-
}
|
|
29
|
-
}).addTo(map);
|
|
30
|
-
|
|
31
|
-
map.fitBounds(features.getBounds());
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
global.BlacklightHeatmaps.ShowView = ShowView;
|
|
36
|
-
global.BlacklightHeatmaps.showView = function (el, options) {
|
|
37
|
-
return new ShowView(el, options);
|
|
38
|
-
};
|
|
39
|
-
})(this);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//= require blacklight_heatmaps/default
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@import 'blacklight_heatmaps/default';
|