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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -1
  3. data/Rakefile +7 -0
  4. data/app/assets/javascripts/blacklight_heatmaps/default.esm.js +2001 -0
  5. data/app/assets/javascripts/blacklight_heatmaps/default.esm.js.map +1 -0
  6. data/app/assets/javascripts/blacklight_heatmaps/default.js +2006 -8
  7. data/app/assets/javascripts/blacklight_heatmaps/default.js.map +1 -0
  8. data/app/{assets/javascripts/blacklight_heatmaps → javascript}/basemaps.js +4 -2
  9. data/app/javascript/blacklight_heatmaps.js +43 -0
  10. data/app/javascript/icons.js +5 -0
  11. data/app/javascript/viewers/index.js +76 -0
  12. data/app/javascript/viewers/show.js +24 -0
  13. data/lib/blacklight_heatmaps/version.rb +1 -1
  14. data/lib/generators/blacklight_heatmaps/install_generator.rb +40 -5
  15. data/lib/generators/blacklight_heatmaps/templates/blacklight_heatmaps.css +11 -0
  16. data/spec/examples.txt +7 -0
  17. data/spec/features/configurable_basemap_spec.rb +1 -2
  18. data/spec/features/index_page_map_spec.rb +1 -1
  19. data/spec/features/show_page_map_spec.rb +1 -1
  20. data/spec/spec_helper.rb +0 -2
  21. data/spec/test_app_templates/lib/generators/test_app_generator.rb +11 -12
  22. data/vendor/assets/javascripts/geostats.js +511 -284
  23. data/vendor/assets/javascripts/leaflet_solr_heatmap.js +6 -4
  24. metadata +48 -45
  25. data/app/assets/javascripts/blacklight_heatmaps/blacklight_heatmaps.js +0 -18
  26. data/app/assets/javascripts/blacklight_heatmaps/icons.js +0 -3
  27. data/app/assets/javascripts/blacklight_heatmaps/viewers/index.js +0 -91
  28. data/app/assets/javascripts/blacklight_heatmaps/viewers/show.js +0 -39
  29. data/app/assets/javascripts/index.js +0 -8
  30. data/lib/generators/blacklight_heatmaps/templates/blacklight_heatmaps.js +0 -1
  31. 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: 1.3.1
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: 2024-12-17 00:00:00.000000000 Z
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: 7.17.1
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: 7.17.1
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: sqlite3
62
+ name: rails
83
63
  requirement: !ruby/object:Gem::Requirement
84
64
  requirements:
85
65
  - - ">="
86
66
  - !ruby/object:Gem::Version
87
- version: '0'
88
- type: :development
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: '0'
77
+ version: 7.1.4
78
+ - - "<"
79
+ - !ruby/object:Gem::Version
80
+ version: '9'
95
81
  - !ruby/object:Gem::Dependency
96
- name: rspec-rails
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: solr_wrapper
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: capybara
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: selenium-webdriver
152
+ name: sqlite3
153
153
  requirement: !ruby/object:Gem::Requirement
154
154
  requirements:
155
- - - "~>"
155
+ - - ">="
156
156
  - !ruby/object:Gem::Version
157
- version: '4.11'
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: '4.11'
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/basemaps.js
177
- - app/assets/javascripts/blacklight_heatmaps/blacklight_heatmaps.js
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/icons.js
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.js
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.4.19
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,3 +0,0 @@
1
- BlacklightHeatmaps.Icons = {
2
- default: new L.Icon.Default()
3
- };
@@ -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,8 +0,0 @@
1
- //= require leaflet
2
- //= require L.Control.Sidebar
3
- import 'blacklight-heatmaps/vendor/assets/javascripts/leaflet_solr_heatmap'
4
- import 'blacklight_heatmaps'
5
- import 'basemaps'
6
- import 'icons'
7
- import 'viewers/index'
8
- import 'viewers/show'
@@ -1 +0,0 @@
1
- //= require blacklight_heatmaps/default
@@ -1 +0,0 @@
1
- @import 'blacklight_heatmaps/default';