geoblacklight 2.4.0 → 3.3.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/.github/workflows/ruby.yml +142 -0
- data/.gitignore +8 -0
- data/.rubocop.yml +24 -23
- data/.rubocop_todo.yml +398 -12
- data/README.md +3 -3
- data/Rakefile +13 -4
- data/app/assets/images/favicon.ico +0 -0
- data/app/assets/javascripts/geoblacklight/downloaders/downloader.js +1 -1
- data/app/assets/javascripts/geoblacklight/geoblacklight.js +18 -1
- data/app/assets/javascripts/geoblacklight/modules/bookmarks.js +43 -0
- data/app/assets/javascripts/geoblacklight/modules/metadata_download_button.js +6 -1
- data/app/assets/javascripts/geoblacklight/modules/results.js +7 -8
- data/app/assets/javascripts/geoblacklight/modules/svg_tooltips.js +31 -0
- data/app/assets/javascripts/geoblacklight/modules/util.js +5 -0
- data/app/assets/javascripts/geoblacklight/viewers/esri.js +3 -3
- data/app/assets/javascripts/geoblacklight/viewers/esri/tiled_map_layer.js +1 -1
- data/app/assets/javascripts/geoblacklight/viewers/index_map.js +1 -1
- data/app/assets/javascripts/geoblacklight/viewers/map.js +12 -2
- data/app/assets/javascripts/geoblacklight/viewers/tms.js +10 -0
- data/app/assets/javascripts/geoblacklight/viewers/wms.js +3 -3
- data/app/assets/stylesheets/geoblacklight/geoblacklight.scss +2 -0
- data/app/assets/stylesheets/geoblacklight/modules/_base.scss +33 -0
- data/app/assets/stylesheets/geoblacklight/{_blacklight_overrides.scss → modules/_blacklight_overrides.scss} +1 -1
- data/app/assets/stylesheets/geoblacklight/{_styles.scss → modules/_styles.scss} +1 -0
- data/app/assets/stylesheets/geoblacklight/modules/downloads.scss +37 -54
- data/app/assets/stylesheets/geoblacklight/modules/item.scss +1 -0
- data/app/assets/stylesheets/geoblacklight/modules/results.scss +17 -29
- data/app/assets/stylesheets/geoblacklight/modules/sidebar.scss +12 -42
- data/app/assets/stylesheets/geoblacklight/modules/toolbar.scss +17 -59
- data/app/controllers/download_controller.rb +12 -12
- data/app/controllers/relation_controller.rb +1 -0
- data/app/controllers/wms_controller.rb +1 -0
- data/app/helpers/arcgis_helper.rb +1 -0
- data/app/helpers/blacklight_helper.rb +1 -0
- data/app/helpers/carto_helper.rb +1 -0
- data/app/helpers/geoblacklight_helper.rb +37 -72
- data/app/models/concerns/geoblacklight/solr_document.rb +15 -19
- data/app/models/concerns/geoblacklight/solr_document/arcgis.rb +2 -1
- data/app/models/concerns/geoblacklight/solr_document/carto.rb +1 -13
- data/app/models/concerns/geoblacklight/solr_document/citation.rb +1 -0
- data/app/models/concerns/geoblacklight/solr_document/finder.rb +1 -0
- data/app/models/concerns/geoblacklight/solr_document/inspection.rb +2 -1
- data/app/models/concerns/geoblacklight/spatial_search_behavior.rb +6 -4
- data/app/presenters/geoblacklight/document_presenter.rb +2 -1
- data/app/views/catalog/_arcgis.html.erb +4 -0
- data/app/views/catalog/_carto.html.erb +4 -0
- data/app/views/catalog/_document_split.html.erb +1 -1
- data/app/views/catalog/_downloads_primary.html.erb +8 -1
- data/app/views/catalog/_header_icons.html.erb +3 -3
- data/app/views/catalog/_home_text.html.erb +3 -0
- data/app/views/catalog/_index_split_default.html.erb +21 -21
- data/app/views/catalog/_show_default_viewer_container.html.erb +1 -1
- data/app/views/download/hgl.html.erb +13 -11
- data/app/views/relation/_ancestors.html.erb +3 -6
- data/app/views/relation/_descendants.html.erb +4 -7
- data/app/views/relation/index.html.erb +20 -8
- data/app/views/relation/index.json.jbuilder +2 -1
- data/app/views/shared/_header_navbar.html.erb +0 -2
- data/babel.config.json +4 -0
- data/bin/coverage.rb +36 -0
- data/config/initializers/new_gbl_settings_defaults_3_3.yml +10 -0
- data/config/initializers/rails_config.rb +5 -0
- data/config/locales/geoblacklight.en.yml +7 -2
- data/geoblacklight.gemspec +7 -9
- data/jest.config.js +25 -0
- data/lib/generators/geoblacklight/assets_generator.rb +46 -0
- data/lib/generators/geoblacklight/install_generator.rb +4 -10
- data/lib/generators/geoblacklight/templates/assets/_blacklight.scss +1 -0
- data/lib/generators/geoblacklight/templates/assets/_customizations.scss +28 -0
- data/{app/assets/stylesheets/geoblacklight/application.scss → lib/generators/geoblacklight/templates/assets/_geoblacklight.scss} +0 -1
- data/lib/generators/geoblacklight/templates/assets/application.scss +7 -0
- data/lib/generators/geoblacklight/templates/{geoblacklight.js → assets/geoblacklight.js} +0 -0
- data/lib/generators/geoblacklight/templates/catalog_controller.rb +5 -3
- data/lib/generators/geoblacklight/templates/settings.yml +20 -17
- data/lib/generators/geoblacklight/webpacker_generator.rb +1 -0
- data/lib/geoblacklight.rb +2 -2
- data/lib/geoblacklight/bounding_box.rb +2 -1
- data/lib/geoblacklight/catalog_helper_override.rb +1 -0
- data/lib/geoblacklight/constants.rb +2 -0
- data/lib/geoblacklight/download.rb +2 -1
- data/lib/geoblacklight/download/geojson_download.rb +1 -0
- data/lib/geoblacklight/download/geotiff_download.rb +1 -0
- data/lib/geoblacklight/download/hgl_download.rb +1 -0
- data/lib/geoblacklight/download/kmz_download.rb +3 -2
- data/lib/geoblacklight/download/shapefile_download.rb +1 -0
- data/lib/geoblacklight/engine.rb +2 -2
- data/lib/geoblacklight/exceptions.rb +1 -0
- data/lib/geoblacklight/geoblacklight_helper_behavior.rb +1 -0
- data/lib/geoblacklight/geometry.rb +70 -0
- data/lib/geoblacklight/item_viewer.rb +6 -1
- data/lib/geoblacklight/metadata.rb +1 -0
- data/lib/geoblacklight/metadata/base.rb +2 -7
- data/lib/geoblacklight/metadata/fgdc.rb +1 -0
- data/lib/geoblacklight/metadata/html.rb +2 -2
- data/lib/geoblacklight/metadata/iso19139.rb +1 -0
- data/lib/geoblacklight/metadata_transformer.rb +1 -0
- data/lib/geoblacklight/metadata_transformer/base.rb +1 -0
- data/lib/geoblacklight/metadata_transformer/fgdc.rb +1 -0
- data/lib/geoblacklight/metadata_transformer/iso19139.rb +1 -0
- data/lib/geoblacklight/reference.rb +1 -0
- data/lib/geoblacklight/references.rb +7 -3
- data/lib/geoblacklight/relation/ancestors.rb +3 -2
- data/lib/geoblacklight/relation/descendants.rb +2 -1
- data/lib/geoblacklight/relation/relation_response.rb +2 -1
- data/lib/geoblacklight/routes.rb +1 -0
- data/lib/geoblacklight/routes/downloadable.rb +1 -0
- data/lib/geoblacklight/routes/exportable.rb +1 -0
- data/lib/geoblacklight/routes/wms.rb +1 -0
- data/lib/geoblacklight/version.rb +2 -1
- data/lib/geoblacklight/view_helper_override.rb +1 -0
- data/lib/geoblacklight/wms_layer.rb +2 -4
- data/lib/geoblacklight/wms_layer/feature_info_response.rb +1 -0
- data/lib/tasks/geoblacklight.rake +38 -32
- data/package.json +17 -1
- data/setupJest.js +14 -0
- data/solr/conf/schema.xml +1 -3
- data/spec/config/initializers/rails_config_spec.rb +14 -0
- data/spec/controllers/catalog_controller_spec.rb +7 -6
- data/spec/controllers/download_controller_spec.rb +1 -0
- data/spec/controllers/relation_controller_spec.rb +1 -0
- data/spec/controllers/wms_controller_spec.rb +1 -0
- data/spec/factories/user.rb +1 -0
- data/spec/features/bookmarks_spec.rb +1 -0
- data/spec/features/configurable_basemap_spec.rb +1 -0
- data/spec/features/data_dictionary_download_spec.rb +1 -0
- data/spec/features/download_layer_spec.rb +2 -1
- data/spec/features/empty_search_spec.rb +1 -0
- data/spec/features/esri_viewer_spec.rb +1 -5
- data/spec/features/exports_spec.rb +4 -12
- data/spec/features/help_text_spec.rb +1 -0
- data/spec/features/home_page_spec.rb +6 -0
- data/spec/features/iiif_viewer_spec.rb +1 -0
- data/spec/features/index_map_spec.rb +1 -0
- data/spec/features/layer_inspection_spec.rb +1 -0
- data/spec/features/layer_opacity_spec.rb +1 -0
- data/spec/features/layer_preview_spec.rb +1 -0
- data/spec/features/layer_with_no_references_spec.rb +1 -0
- data/spec/features/linkified_attribute_table_spec.rb +1 -0
- data/spec/features/metadata_panel_spec.rb +1 -0
- data/spec/features/missing_metadata_spec.rb +1 -0
- data/spec/features/multiple_downloads_spec.rb +15 -0
- data/spec/features/oembed_spec.rb +1 -0
- data/spec/features/relations_spec.rb +10 -29
- data/spec/features/saved_searches_spec.rb +1 -0
- data/spec/features/search_bar_spec.rb +1 -0
- data/spec/features/search_results_map_spec.rb +1 -6
- data/spec/features/search_results_overlap_ratio_spec.rb +6 -5
- data/spec/features/search_spec.rb +1 -0
- data/spec/features/show_page_metadata_spec.rb +1 -0
- data/spec/features/sms_spec.rb +1 -0
- data/spec/features/split_view.html.erb_spec.rb +3 -2
- data/spec/features/suppressed_records_spec.rb +1 -0
- data/spec/features/tms_spec.rb +10 -0
- data/spec/features/web_services_modal_spec.rb +1 -0
- data/spec/fixtures/solr_documents/multiple-downloads.json +30 -0
- data/spec/fixtures/solr_documents/public_iiif_princeton.json +1 -1
- data/spec/fixtures/solr_documents/tms.json +29 -0
- data/spec/helpers/arcgis_helper_spec.rb +1 -0
- data/spec/helpers/carto_helper_spec.rb +1 -0
- data/spec/helpers/geoblacklight_helper_spec.rb +73 -14
- data/spec/javascripts/geoblacklight_spec.js +0 -6
- data/spec/javascripts/metadata_download_button_spec.js +5 -3
- data/spec/javascripts/util_spec.js +2 -4
- data/spec/lib/geoblacklight/bounding_box_spec.rb +1 -0
- data/spec/lib/geoblacklight/document_presenter_spec.rb +3 -2
- data/spec/lib/geoblacklight/download/geojson_download_spec.rb +1 -0
- data/spec/lib/geoblacklight/download/geotiff_download_spec.rb +1 -0
- data/spec/lib/geoblacklight/download/hgl_download_spec.rb +1 -0
- data/spec/lib/geoblacklight/download/kmz_download_spec.rb +3 -2
- data/spec/lib/geoblacklight/download/shapefile_download_spec.rb +1 -0
- data/spec/lib/geoblacklight/download_spec.rb +3 -2
- data/spec/lib/geoblacklight/geoblacklight_helper_behavior_spec.rb +1 -0
- data/spec/lib/geoblacklight/geometry_spec.rb +48 -0
- data/spec/lib/geoblacklight/item_viewer_spec.rb +13 -0
- data/spec/lib/geoblacklight/metadata/base_spec.rb +1 -0
- data/spec/lib/geoblacklight/metadata/html_spec.rb +1 -0
- data/spec/lib/geoblacklight/metadata_spec.rb +1 -0
- data/spec/lib/geoblacklight/metadata_transformer/base_spec.rb +3 -2
- data/spec/lib/geoblacklight/metadata_transformer/fgdc_spec.rb +3 -2
- data/spec/lib/geoblacklight/metadata_transformer/iso19139_spec.rb +3 -2
- data/spec/lib/geoblacklight/metadata_transformer_spec.rb +4 -3
- data/spec/lib/geoblacklight/reference_spec.rb +1 -0
- data/spec/lib/geoblacklight/references_spec.rb +3 -4
- data/spec/lib/geoblacklight/relation/ancestors_spec.rb +2 -1
- data/spec/lib/geoblacklight/relation/descendants_spec.rb +2 -1
- data/spec/lib/geoblacklight/relation/relation_response_spec.rb +1 -0
- data/spec/lib/geoblacklight/view_helper_override_spec.rb +1 -0
- data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +5 -4
- data/spec/lib/geoblacklight/wms_layer_spec.rb +1 -0
- data/spec/models/concerns/geoblacklight/solr_document/carto_spec.rb +1 -20
- data/spec/models/concerns/geoblacklight/solr_document/citation_spec.rb +1 -0
- data/spec/models/concerns/geoblacklight/solr_document/finder_spec.rb +1 -0
- data/spec/models/concerns/geoblacklight/solr_document/inspection_spec.rb +1 -0
- data/spec/models/concerns/geoblacklight/solr_document_spec.rb +1 -0
- data/spec/models/concerns/geoblacklight/spatial_search_behavior_spec.rb +15 -2
- data/spec/routing/catalog_routing_spec.rb +1 -0
- data/spec/spec_helper.rb +12 -9
- data/spec/support/backport_test_helpers.rb +1 -0
- data/spec/support/features.rb +1 -0
- data/spec/support/features/session_helpers.rb +1 -0
- data/spec/support/fixtures.rb +1 -0
- data/spec/tasks/geoblacklight_spec.rb +4 -3
- data/spec/test_app_templates/Gemfile.extra +1 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +2 -8
- data/spec/views/catalog/_document_split.html.erb_spec.rb +2 -1
- data/spec/views/catalog/_index_split.html.erb_spec.rb +2 -1
- data/spec/views/catalog/_results_pagination.html.erb_spec.rb +1 -0
- data/spec/views/catalog/_show_downloads.html.erb_spec.rb +1 -0
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +3 -5
- data/template.rb +4 -2
- metadata +74 -78
- data/.circleci/config.yml +0 -164
- data/app/assets/stylesheets/geoblacklight/_geoblacklight.scss +0 -36
- data/app/assets/stylesheets/geoblacklight/modules/relations.scss +0 -15
- data/app/views/catalog/_exports.html.erb +0 -3
- data/app/views/catalog/_show_tools.html.erb +0 -25
- data/lib/generators/geoblacklight/templates/geoblacklight.scss +0 -4
- data/spec/javascripts/spec_helper.js +0 -32
- data/spec/lib/geoblacklight/controller_override_spec.rb +0 -1
- data/spec/teaspoon_env.rb +0 -213
- data/vendor/assets/javascripts/readmore.js +0 -0
- data/vendor/assets/javascripts/readmore.min.js +0 -0
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GeoBlacklight
|
|
2
2
|
|
|
3
|
-
[](https://circleci.com/gh/geoblacklight/geoblacklight) | [](https://circleci.com/gh/geoblacklight/geoblacklight) | []() | [](https://github.com/geoblacklight/geoblacklight/releases)
|
|
4
4
|
|
|
5
5
|
GeoBlacklight is a world-class discovery platform for geospatial (GIS) holdings. It
|
|
6
6
|
is an open collaborative project aiming to build off of the successes
|
|
@@ -13,7 +13,7 @@ communities. We're actively looking for community input and development partners
|
|
|
13
13
|
In order to create a new GeoBlacklight application from the template, run the following:
|
|
14
14
|
|
|
15
15
|
```
|
|
16
|
-
$ rails new app-name -m https://raw.githubusercontent.com/geoblacklight/geoblacklight/
|
|
16
|
+
$ DISABLE_SPRING=1 rails new app-name -m https://raw.githubusercontent.com/geoblacklight/geoblacklight/main/template.rb
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
To launch app:
|
|
@@ -26,7 +26,7 @@ $ rake geoblacklight:server
|
|
|
26
26
|
Note that this method launches an application that does not have any fixture records to be examined. You may want to launch a test application that has fixture data loaded into a Solr core. If so, refer to the [development guide](https://github.com/geoblacklight/geoblacklight/wiki/Development). For further information on installing a blank app, see the [installation guide](https://github.com/geoblacklight/geoblacklight/wiki/Installation)
|
|
27
27
|
|
|
28
28
|
### Webpacker
|
|
29
|
-
GeoBlacklight can use [Webpacker](https://github.com/rails/webpacker) in order to manage JavaScript dependencies and assets, which requires that either [Yarn](https://yarnpkg.com/) or the [Node Package Manager](https://www.npmjs.com/) be available on the system where this is deployed. How Webpacker interacts with Rails is overviewed within its own documentation, including [how best to configure JavaScript processing settings](https://github.com/rails/webpacker
|
|
29
|
+
GeoBlacklight can use [Webpacker](https://github.com/rails/webpacker) in order to manage JavaScript dependencies and assets, which requires that either [Yarn](https://yarnpkg.com/) or the [Node Package Manager](https://www.npmjs.com/) be available on the system where this is deployed. How Webpacker interacts with Rails is overviewed within its own documentation, including [how best to configure JavaScript processing settings](https://github.com/rails/webpacker). We encourage you to review this.
|
|
30
30
|
|
|
31
31
|
### Contributing
|
|
32
32
|
Interested in contributing to GeoBlacklight? Please see our [contributing](CONTRIBUTING.md) guide.
|
data/Rakefile
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
require 'rails'
|
|
3
4
|
begin
|
|
4
5
|
require 'bundler/setup'
|
|
@@ -25,9 +26,9 @@ RSpec::Core::RakeTask.new(:spec) do |t|
|
|
|
25
26
|
t.verbose = false
|
|
26
27
|
end
|
|
27
28
|
|
|
28
|
-
desc 'Run
|
|
29
|
-
task :
|
|
30
|
-
system
|
|
29
|
+
desc 'Run JavaScript unit tests'
|
|
30
|
+
task :javascript_tests do
|
|
31
|
+
system '/bin/bash -c yarn test'
|
|
31
32
|
end
|
|
32
33
|
|
|
33
34
|
desc 'Run test suite'
|
|
@@ -42,7 +43,7 @@ task ci: ['geoblacklight:generate'] do
|
|
|
42
43
|
end
|
|
43
44
|
end
|
|
44
45
|
# Run JavaScript tests
|
|
45
|
-
Rake::Task['
|
|
46
|
+
Rake::Task['javascript_tests'].invoke
|
|
46
47
|
end
|
|
47
48
|
|
|
48
49
|
namespace :geoblacklight do
|
|
@@ -54,6 +55,7 @@ namespace :geoblacklight do
|
|
|
54
55
|
|
|
55
56
|
desc 'Create the test rails app'
|
|
56
57
|
task generate: ['engine_cart:generate'] do
|
|
58
|
+
# Intentionally Empty Block
|
|
57
59
|
end
|
|
58
60
|
|
|
59
61
|
namespace :internal do
|
|
@@ -120,6 +122,13 @@ namespace :geoblacklight do
|
|
|
120
122
|
end
|
|
121
123
|
end
|
|
122
124
|
end
|
|
125
|
+
|
|
126
|
+
desc 'Stdout output asset paths'
|
|
127
|
+
task :asset_paths do
|
|
128
|
+
within_test_app do
|
|
129
|
+
system 'bundle exec rake geoblacklight:application_asset_paths'
|
|
130
|
+
end
|
|
131
|
+
end
|
|
123
132
|
end
|
|
124
133
|
|
|
125
134
|
task default: [:ci]
|
|
Binary file
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
var Downloader = L.Class.extend({
|
|
5
5
|
options: {
|
|
6
|
-
spinner: $('<
|
|
6
|
+
spinner: $('<div class="spinner-border spinner-border-sm float-right" role="status"><span class="sr-only">Downloading</span></div>')
|
|
7
7
|
},
|
|
8
8
|
|
|
9
9
|
initialize: function(el, options) {
|
|
@@ -19,6 +19,17 @@
|
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Convert GeoJSON string to Leaflet LatLngBounds.
|
|
24
|
+
* @param {String} geojson GeoJSON string
|
|
25
|
+
* @return {L.LatLngBounds} Converted Leaflet LatLngBounds object
|
|
26
|
+
*/
|
|
27
|
+
L.geoJSONToBounds = function(geojson) {
|
|
28
|
+
var layer = L.geoJSON();
|
|
29
|
+
layer.addData(geojson);
|
|
30
|
+
return layer.getBounds();
|
|
31
|
+
}
|
|
32
|
+
|
|
22
33
|
var GeoBlacklight = L.Class.extend({
|
|
23
34
|
statics: {
|
|
24
35
|
__version__: '2.0.0',
|
|
@@ -38,5 +49,11 @@
|
|
|
38
49
|
|
|
39
50
|
// Hash for leaflet controls.
|
|
40
51
|
GeoBlacklight.Controls = {};
|
|
52
|
+
|
|
53
|
+
// Basic support of CommonJS module
|
|
54
|
+
if (typeof exports === "object") {
|
|
55
|
+
module.exports = GeoBlacklight;
|
|
56
|
+
}
|
|
57
|
+
|
|
41
58
|
global.GeoBlacklight = GeoBlacklight;
|
|
42
|
-
}(this);
|
|
59
|
+
}(this || {});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
Blacklight.onLoad(function() {
|
|
2
|
+
$('[data-map="bookmarks"]').each(function() {
|
|
3
|
+
var data = $(this).data(),
|
|
4
|
+
world = L.latLngBounds([[-90, -180], [90, 180]]),
|
|
5
|
+
geoblacklight, bbox;
|
|
6
|
+
|
|
7
|
+
if (typeof data.mapGeom === 'string') {
|
|
8
|
+
bbox = L.geoJSONToBounds(data.mapGeom);
|
|
9
|
+
} else {
|
|
10
|
+
$('.document [data-geom]').each(function() {
|
|
11
|
+
try {
|
|
12
|
+
var currentBounds = L.geoJSONToBounds($(this).data().geom);
|
|
13
|
+
if (!world.contains(currentBounds)) {
|
|
14
|
+
throw "Invalid bounds";
|
|
15
|
+
}
|
|
16
|
+
if (typeof bbox === 'undefined') {
|
|
17
|
+
bbox = currentBounds;
|
|
18
|
+
} else {
|
|
19
|
+
bbox.extend(currentBounds);
|
|
20
|
+
}
|
|
21
|
+
} catch (e) {
|
|
22
|
+
bbox = L.bboxToBounds("-180 -90 180 90");
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// instantiate new map
|
|
28
|
+
geoblacklight = new GeoBlacklight.Viewer.Map(this, { bbox: bbox });
|
|
29
|
+
geoblacklight.removeBoundsOverlay();
|
|
30
|
+
|
|
31
|
+
// set hover listeners on map
|
|
32
|
+
$('#content')
|
|
33
|
+
.on('mouseenter', '#documents [data-layer-id]', function() {
|
|
34
|
+
if($(this).data('bbox') !== "") {
|
|
35
|
+
var geom = $(this).data('geom')
|
|
36
|
+
geoblacklight.addGeoJsonOverlay(geom)
|
|
37
|
+
}
|
|
38
|
+
})
|
|
39
|
+
.on('mouseleave', '#documents [data-layer-id]', function() {
|
|
40
|
+
geoblacklight.removeBoundsOverlay();
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
});
|
|
@@ -45,9 +45,14 @@
|
|
|
45
45
|
}
|
|
46
46
|
},
|
|
47
47
|
});
|
|
48
|
+
|
|
49
|
+
// Basic support of CommonJS module
|
|
50
|
+
if (typeof exports === "object") {
|
|
51
|
+
module.exports = MetadataDownloadButton;
|
|
52
|
+
}
|
|
48
53
|
|
|
49
54
|
global.GeoBlacklight.MetadataDownloadButton = MetadataDownloadButton;
|
|
50
55
|
global.GeoBlacklight.metadataDownloadButton = function metadataDownloadButton(el, options) {
|
|
51
56
|
return new MetadataDownloadButton(el, options);
|
|
52
57
|
};
|
|
53
|
-
})(this);
|
|
58
|
+
})(this || { GeoBlacklight: {}});
|
|
@@ -14,13 +14,12 @@ Blacklight.onLoad(function() {
|
|
|
14
14
|
world = L.latLngBounds([[-90, -180], [90, 180]]),
|
|
15
15
|
geoblacklight, bbox;
|
|
16
16
|
|
|
17
|
-
if (typeof data.
|
|
18
|
-
bbox = L.
|
|
17
|
+
if (typeof data.mapGeom === 'string') {
|
|
18
|
+
bbox = L.geoJSONToBounds(data.mapGeom);
|
|
19
19
|
} else {
|
|
20
|
-
$('.document [data-
|
|
21
|
-
|
|
20
|
+
$('.document [data-geom]').each(function() {
|
|
22
21
|
try {
|
|
23
|
-
var currentBounds = L.
|
|
22
|
+
var currentBounds = L.geoJSONToBounds($(this).data().geom);
|
|
24
23
|
if (!world.contains(currentBounds)) {
|
|
25
24
|
throw "Invalid bounds";
|
|
26
25
|
}
|
|
@@ -50,9 +49,9 @@ Blacklight.onLoad(function() {
|
|
|
50
49
|
// set hover listeners on map
|
|
51
50
|
$('#content')
|
|
52
51
|
.on('mouseenter', '#documents [data-layer-id]', function() {
|
|
53
|
-
if($(this).data('bbox')
|
|
54
|
-
var
|
|
55
|
-
geoblacklight.
|
|
52
|
+
if($(this).data('bbox') !== "") {
|
|
53
|
+
var geom = $(this).data('geom')
|
|
54
|
+
geoblacklight.addGeoJsonOverlay(geom)
|
|
56
55
|
}
|
|
57
56
|
})
|
|
58
57
|
.on('mouseleave', '#documents [data-layer-id]', function() {
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* global Blacklight */
|
|
2
|
+
|
|
3
|
+
Blacklight.onLoad(function() {
|
|
4
|
+
'use strict';
|
|
5
|
+
|
|
6
|
+
$('body').on('mouseenter', '.blacklight-icons.svg_tooltip svg', function() {
|
|
7
|
+
var svgTitle = $(this).find('title');
|
|
8
|
+
var titleText = svgTitle && svgTitle.text();
|
|
9
|
+
|
|
10
|
+
if (titleText !== undefined && titleText !== '') {
|
|
11
|
+
$(this).tooltip({ placement: 'bottom', title: titleText });
|
|
12
|
+
$(this).tooltip('show');
|
|
13
|
+
|
|
14
|
+
// Store the original title in the data-original-title attribute
|
|
15
|
+
// and remove the title element on mouseenter.
|
|
16
|
+
// This prevents the title from interfering w/ Bootstrap's tooltip.
|
|
17
|
+
$(this).attr('data-original-title', titleText);
|
|
18
|
+
svgTitle.remove();
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
$('body').on('mouseleave', '.blacklight-icons.svg_tooltip svg', function() {
|
|
23
|
+
var originalTitle = $(this).attr('data-original-title');
|
|
24
|
+
|
|
25
|
+
if (originalTitle !== undefined && originalTitle !== '') {
|
|
26
|
+
// Restore the SVG title element from data-original-title on mouseleave
|
|
27
|
+
$(this).prepend($('<title>' + originalTitle + '</title>'));
|
|
28
|
+
$(this).attr('data-original-title', '');
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -4,7 +4,7 @@ GeoBlacklight.Viewer.Esri = GeoBlacklight.Viewer.Map.extend({
|
|
|
4
4
|
layerInfo: {},
|
|
5
5
|
|
|
6
6
|
load: function() {
|
|
7
|
-
this.options.bbox = L.
|
|
7
|
+
this.options.bbox = L.geoJSONToBounds(this.data.mapGeom);
|
|
8
8
|
this.map = L.map(this.element).fitBounds(this.options.bbox);
|
|
9
9
|
this.map.addLayer(this.selectBasemap());
|
|
10
10
|
this.map.addLayer(this.overlay);
|
|
@@ -50,8 +50,8 @@ GeoBlacklight.Viewer.Esri = GeoBlacklight.Viewer.Map.extend({
|
|
|
50
50
|
appendLoadingMessage: function() {
|
|
51
51
|
var spinner = '<tbody class="attribute-table-body"><tr><td colspan="2">' +
|
|
52
52
|
'<span id="attribute-table">' +
|
|
53
|
-
'<
|
|
54
|
-
'</
|
|
53
|
+
'<div class="spinner-border" role="status"><span class="sr-only">Inspecting</span></div>' +
|
|
54
|
+
'</span>' +
|
|
55
55
|
'</td></tr></tbody>';
|
|
56
56
|
|
|
57
57
|
$('.attribute-table-body').html(spinner);
|
|
@@ -14,8 +14,8 @@ GeoBlacklight.Viewer.Map = GeoBlacklight.Viewer.extend({
|
|
|
14
14
|
overlay: L.layerGroup(),
|
|
15
15
|
|
|
16
16
|
load: function() {
|
|
17
|
-
if (this.data.
|
|
18
|
-
this.options.bbox = L.
|
|
17
|
+
if (this.data.mapGeom) {
|
|
18
|
+
this.options.bbox = L.geoJSONToBounds(this.data.mapGeom);
|
|
19
19
|
}
|
|
20
20
|
this.map = L.map(this.element).fitBounds(this.options.bbox);
|
|
21
21
|
|
|
@@ -53,6 +53,16 @@ GeoBlacklight.Viewer.Map = GeoBlacklight.Viewer.extend({
|
|
|
53
53
|
this.overlay.clearLayers();
|
|
54
54
|
},
|
|
55
55
|
|
|
56
|
+
/**
|
|
57
|
+
* Add a GeoJSON overlay to map.
|
|
58
|
+
* @param {string} geojson GeoJSON string
|
|
59
|
+
*/
|
|
60
|
+
addGeoJsonOverlay: function(geojson) {
|
|
61
|
+
var layer = L.geoJSON();
|
|
62
|
+
layer.addData(geojson);
|
|
63
|
+
this.overlay.addLayer(layer);
|
|
64
|
+
},
|
|
65
|
+
|
|
56
66
|
/**
|
|
57
67
|
* Selects basemap if specified in data options, if not return positron.
|
|
58
68
|
*/
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
GeoBlacklight.Viewer.Wms = GeoBlacklight.Viewer.Map.extend({
|
|
4
4
|
|
|
5
5
|
load: function() {
|
|
6
|
-
this.options.bbox = L.
|
|
6
|
+
this.options.bbox = L.geoJSONToBounds(this.data.mapGeom);
|
|
7
7
|
this.map = L.map(this.element).fitBounds(this.options.bbox);
|
|
8
8
|
this.map.addLayer(this.selectBasemap());
|
|
9
9
|
this.map.addLayer(this.overlay);
|
|
@@ -23,7 +23,7 @@ GeoBlacklight.Viewer.Wms = GeoBlacklight.Viewer.Map.extend({
|
|
|
23
23
|
format: 'image/png',
|
|
24
24
|
transparent: true,
|
|
25
25
|
tiled: true,
|
|
26
|
-
CRS: 'EPSG:
|
|
26
|
+
CRS: 'EPSG:3857',
|
|
27
27
|
opacity: this.options.opacity,
|
|
28
28
|
detectRetina: _this.detectRetina()
|
|
29
29
|
});
|
|
@@ -34,7 +34,7 @@ GeoBlacklight.Viewer.Wms = GeoBlacklight.Viewer.Map.extend({
|
|
|
34
34
|
setupInspection: function() {
|
|
35
35
|
var _this = this;
|
|
36
36
|
this.map.on('click', function(e) {
|
|
37
|
-
spinner = '<tbody class="attribute-table-body"><tr><td colspan="2"><span id="attribute-table"><
|
|
37
|
+
spinner = '<tbody class="attribute-table-body"><tr><td colspan="2"><span id="attribute-table"><div class="spinner-border" role="status"><span class="sr-only">Inspecting</span></div></span></td></tr></tbody>';
|
|
38
38
|
$('.attribute-table-body').replaceWith(spinner);
|
|
39
39
|
var wmsoptions = {
|
|
40
40
|
URL: _this.data.url,
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
|
3
|
+
* listed below.
|
|
4
|
+
*
|
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
|
6
|
+
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
|
7
|
+
*
|
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the top of the
|
|
9
|
+
* compiled file, but it's generally better to create a new file per style scope.
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
@import 'styles';
|
|
14
|
+
@import 'facets';
|
|
15
|
+
@import 'mixins';
|
|
16
|
+
@import 'icon-customization';
|
|
17
|
+
@import 'home';
|
|
18
|
+
@import 'index_maps';
|
|
19
|
+
@import 'item';
|
|
20
|
+
@import 'layer_opacity';
|
|
21
|
+
@import 'metadata';
|
|
22
|
+
@import 'metadata_content';
|
|
23
|
+
@import 'metadata_missing';
|
|
24
|
+
@import 'metadata_markup';
|
|
25
|
+
@import 'modal';
|
|
26
|
+
@import 'results';
|
|
27
|
+
@import 'geosearch';
|
|
28
|
+
@import 'search_widgets';
|
|
29
|
+
@import 'sidebar';
|
|
30
|
+
@import 'toolbar';
|
|
31
|
+
@import 'web_services';
|
|
32
|
+
@import 'blacklight_overrides';
|
|
33
|
+
@import 'downloads';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Stylesheet for overriding styles inherited from Blacklight proper
|
|
3
3
|
**/
|
|
4
4
|
|
|
5
|
-
$logo-image: image_url('blacklight/logo.svg') !default
|
|
5
|
+
$logo-image: image_url('blacklight/logo.svg') !default;
|
|
6
6
|
|
|
7
7
|
.navbar-logo { /* The main logo image for the Blacklight instance */
|
|
8
8
|
@if $logo-image {
|
|
@@ -1,91 +1,74 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
%download-export-links {
|
|
9
|
-
a {
|
|
10
|
-
width: 100%;
|
|
11
|
-
font-weight: 600;
|
|
12
|
-
background-color: $link-color;
|
|
13
|
-
color: #ffffff;
|
|
14
|
-
border-color: darken($link-color, 6.5%);
|
|
15
|
-
white-space: inherit;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
1
|
+
// Common styling for the Downloads, Export, and Authentication cards
|
|
2
|
+
.downloads,
|
|
3
|
+
.card.exports,
|
|
4
|
+
.authentication {
|
|
5
|
+
@include sidebar-children;
|
|
18
6
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
text-align: center;
|
|
23
|
-
@extend %download-export-links;
|
|
7
|
+
.list-group {
|
|
8
|
+
&.list-group-nested .list-group-item:last-child {
|
|
9
|
+
padding-bottom: 0;
|
|
24
10
|
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
11
|
|
|
28
|
-
.
|
|
29
|
-
|
|
30
|
-
@extend %downloads-exports;
|
|
12
|
+
.list-group-item {
|
|
13
|
+
padding: 8px 20px;
|
|
31
14
|
|
|
32
|
-
|
|
33
|
-
|
|
15
|
+
a {
|
|
16
|
+
@extend .btn-primary;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
34
19
|
}
|
|
35
20
|
}
|
|
36
21
|
|
|
22
|
+
// This section could be eliminated if we update the Authentication card
|
|
23
|
+
// to follow the pattern of Dowloads and Exports (put the button in a
|
|
24
|
+
// list-group rather than the card header).
|
|
37
25
|
.authentication {
|
|
38
|
-
@include sidebar-children;
|
|
39
26
|
.card-header {
|
|
40
27
|
background-color: inherit;
|
|
41
28
|
border-bottom: inherit;
|
|
42
29
|
|
|
43
|
-
|
|
30
|
+
a {
|
|
31
|
+
@extend .btn-primary;
|
|
32
|
+
}
|
|
44
33
|
}
|
|
45
34
|
}
|
|
46
35
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
36
|
+
// Specific to the Export card (mostly because of the current external
|
|
37
|
+
// label + button approach, which could be mostly eliminated by reworking
|
|
38
|
+
// as suggested in https://github.com/sul-dlss/earthworks/issues/646)
|
|
39
|
+
.card.exports {
|
|
51
40
|
.card-header {
|
|
52
|
-
.
|
|
53
|
-
|
|
41
|
+
.spinner-border { // if this is used, it probably should go in the card body rather than the card header
|
|
42
|
+
position: absolute;
|
|
43
|
+
right: 1rem;
|
|
44
|
+
top: 1rem;
|
|
54
45
|
}
|
|
55
46
|
}
|
|
56
47
|
|
|
57
48
|
.export {
|
|
58
|
-
@include download-export;
|
|
59
|
-
|
|
60
|
-
padding-left: 0px;
|
|
61
|
-
padding-right: 0px;
|
|
62
49
|
text-align: center;
|
|
63
|
-
width: 100%;
|
|
64
50
|
|
|
65
51
|
@include media-breakpoint-up(xl) {
|
|
66
52
|
text-align: left;
|
|
67
53
|
}
|
|
68
54
|
|
|
69
|
-
|
|
70
|
-
padding: 6px
|
|
55
|
+
.export-label {
|
|
56
|
+
padding: 6px 6px 6px 0;
|
|
71
57
|
|
|
72
58
|
@include media-breakpoint-up(xl) {
|
|
73
59
|
display: inline-block;
|
|
74
60
|
}
|
|
75
61
|
}
|
|
76
62
|
|
|
77
|
-
|
|
78
|
-
|
|
63
|
+
.export-link-container {
|
|
64
|
+
@include media-breakpoint-up(xl) {
|
|
65
|
+
display: inline-block;
|
|
66
|
+
float: right;
|
|
67
|
+
}
|
|
79
68
|
|
|
69
|
+
a {
|
|
80
70
|
@include media-breakpoint-up(xl) {
|
|
81
|
-
|
|
82
|
-
float: right;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
a {
|
|
86
|
-
@include media-breakpoint-up(xl) {
|
|
87
|
-
width: inherit;
|
|
88
|
-
}
|
|
71
|
+
width: inherit;
|
|
89
72
|
}
|
|
90
73
|
}
|
|
91
74
|
}
|