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
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Geoblacklight
|
|
2
3
|
class KmzDownload < Geoblacklight::Download
|
|
3
4
|
KMZ_DOWNLOAD_PARAMS = { service: 'wms',
|
|
4
5
|
version: '1.1.0',
|
|
5
6
|
request: 'GetMap',
|
|
6
|
-
srsName: 'EPSG:
|
|
7
|
+
srsName: 'EPSG:3857',
|
|
7
8
|
format: 'application/vnd.google-earth.kmz',
|
|
8
9
|
width: 2000, height: 2000 }.freeze
|
|
9
10
|
|
|
10
11
|
def initialize(document, options = {})
|
|
11
|
-
bbox_wsen = document.
|
|
12
|
+
bbox_wsen = document.geometry.bounding_box
|
|
12
13
|
request_params = KMZ_DOWNLOAD_PARAMS.merge(layers: document[:layer_id_s], bbox: bbox_wsen)
|
|
13
14
|
super(document, {
|
|
14
15
|
type: 'kmz',
|
data/lib/geoblacklight/engine.rb
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'blacklight'
|
|
2
|
-
require 'font-awesome-rails'
|
|
3
3
|
require 'coderay'
|
|
4
4
|
require 'config'
|
|
5
5
|
require 'faraday'
|
|
6
6
|
require 'faraday_middleware'
|
|
7
|
+
require 'geoblacklight/version'
|
|
7
8
|
require 'nokogiri'
|
|
8
|
-
require 'geoblacklight-icons'
|
|
9
9
|
require 'mime/types'
|
|
10
10
|
require 'handlebars_assets'
|
|
11
11
|
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'rgeo'
|
|
3
|
+
require 'rgeo-geojson'
|
|
4
|
+
|
|
5
|
+
module Geoblacklight
|
|
6
|
+
# Transforms and parses geometry expressed in WKT or CSW WKT ENVELOPE syntax
|
|
7
|
+
class Geometry
|
|
8
|
+
attr_reader :geom
|
|
9
|
+
|
|
10
|
+
# @param [String] geom WKT or WKT ENVELOPE syntax formatted string
|
|
11
|
+
def initialize(geom)
|
|
12
|
+
@geom = geom
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Convert geometry to GeoJSON
|
|
16
|
+
# @return [String]
|
|
17
|
+
def geojson
|
|
18
|
+
obj = factory.parse_wkt(geometry_as_wkt)
|
|
19
|
+
RGeo::GeoJSON.encode(obj).to_json
|
|
20
|
+
rescue RGeo::Error::ParseError
|
|
21
|
+
''
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Generate a wsen bounding box from the geometry
|
|
25
|
+
# @return [String] bounding box as comma delimited wsen "w, s, e, n"
|
|
26
|
+
def bounding_box
|
|
27
|
+
obj = factory.parse_wkt(geometry_as_wkt)
|
|
28
|
+
|
|
29
|
+
# Get the minimum bounding box for the geometry as a Polygon
|
|
30
|
+
bbox = obj.envelope
|
|
31
|
+
|
|
32
|
+
# Return as wsen string
|
|
33
|
+
minx = bbox.coordinates[0][0][0]
|
|
34
|
+
miny = bbox.coordinates[0][0][1]
|
|
35
|
+
maxx = bbox.coordinates[0][1][0]
|
|
36
|
+
maxy = bbox.coordinates[0][2][1]
|
|
37
|
+
"#{minx}, #{miny}, #{maxx}, #{maxy}"
|
|
38
|
+
rescue RGeo::Error::ParseError
|
|
39
|
+
''
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
private
|
|
43
|
+
|
|
44
|
+
# Convert WKT ENVELOPE string to WKT POLYGON string
|
|
45
|
+
# @return [String]
|
|
46
|
+
def envelope_to_polygon
|
|
47
|
+
exp = /^\s*ENVELOPE\(
|
|
48
|
+
\s*([-.\d]+)\s*,
|
|
49
|
+
\s*([-.\d]+)\s*,
|
|
50
|
+
\s*([-.\d]+)\s*,
|
|
51
|
+
\s*([-.\d]+)\s*
|
|
52
|
+
\)\s*$/x # uses 'x' option for free-spacing mode
|
|
53
|
+
bbox_match = exp.match(geom)
|
|
54
|
+
minx, maxx, maxy, miny = bbox_match.captures
|
|
55
|
+
"POLYGON ((#{minx} #{maxy}, #{minx} #{miny}, #{maxx} #{miny}, #{maxx} #{maxy}, #{minx} #{maxy}))"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def factory
|
|
59
|
+
@factory ||= RGeo::Cartesian.factory
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Return geometry as valid WKT string
|
|
63
|
+
# @return [String]
|
|
64
|
+
def geometry_as_wkt
|
|
65
|
+
return geom unless geom.match?(/ENVELOPE/)
|
|
66
|
+
|
|
67
|
+
envelope_to_polygon
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Geoblacklight
|
|
2
3
|
class ItemViewer
|
|
3
4
|
def initialize(references)
|
|
@@ -46,8 +47,12 @@ module Geoblacklight
|
|
|
46
47
|
@references.oembed
|
|
47
48
|
end
|
|
48
49
|
|
|
50
|
+
def tms
|
|
51
|
+
@references.tms
|
|
52
|
+
end
|
|
53
|
+
|
|
49
54
|
def viewer_preference
|
|
50
|
-
[oembed, index_map, wms, iiif, tiled_map_layer, dynamic_map_layer,
|
|
55
|
+
[oembed, index_map, tms, wms, iiif, tiled_map_layer, dynamic_map_layer,
|
|
51
56
|
image_map_layer, feature_layer].compact.map(&:to_hash).first
|
|
52
57
|
end
|
|
53
58
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Geoblacklight
|
|
2
3
|
module Metadata
|
|
3
4
|
##
|
|
@@ -54,13 +55,7 @@ module Geoblacklight
|
|
|
54
55
|
return response.body unless response.nil? || response.status == 404
|
|
55
56
|
Geoblacklight.logger.error "Could not reach #{@reference.endpoint}"
|
|
56
57
|
''
|
|
57
|
-
rescue Faraday::ConnectionFailed => error
|
|
58
|
-
Geoblacklight.logger.error error.inspect
|
|
59
|
-
''
|
|
60
|
-
rescue Faraday::TimeoutError => error
|
|
61
|
-
Geoblacklight.logger.error error.inspect
|
|
62
|
-
''
|
|
63
|
-
rescue OpenSSL::SSL::SSLError => error
|
|
58
|
+
rescue Faraday::ConnectionFailed, Faraday::TimeoutError, OpenSSL::SSL::SSLError => error
|
|
64
59
|
Geoblacklight.logger.error error.inspect
|
|
65
60
|
''
|
|
66
61
|
end
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Geoblacklight
|
|
2
3
|
module Metadata
|
|
3
4
|
class Html < Base
|
|
4
5
|
def transform
|
|
5
|
-
ActionController::Base.helpers.
|
|
6
|
-
'',
|
|
6
|
+
ActionController::Base.helpers.tag.iframe('',
|
|
7
7
|
src: @reference.endpoint,
|
|
8
8
|
scrolling: 'yes',
|
|
9
9
|
frameborder: 0)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Geoblacklight
|
|
2
3
|
# References is a geoblacklight-schema dct:references parser
|
|
3
4
|
class References
|
|
@@ -43,7 +44,7 @@ module Geoblacklight
|
|
|
43
44
|
# Preferred download (should be a file download)
|
|
44
45
|
# @return [Hash, nil]
|
|
45
46
|
def preferred_download
|
|
46
|
-
return file_download
|
|
47
|
+
return file_download if download.present?
|
|
47
48
|
end
|
|
48
49
|
|
|
49
50
|
##
|
|
@@ -100,9 +101,12 @@ module Geoblacklight
|
|
|
100
101
|
# present
|
|
101
102
|
# @return (see #downloads_by_format)
|
|
102
103
|
def vector_download_formats
|
|
103
|
-
|
|
104
|
+
return unless wms.present? && wfs.present?
|
|
105
|
+
{
|
|
106
|
+
shapefile: wfs.to_hash,
|
|
104
107
|
kmz: wms.to_hash,
|
|
105
|
-
geojson: wfs.to_hash
|
|
108
|
+
geojson: wfs.to_hash
|
|
109
|
+
}
|
|
106
110
|
end
|
|
107
111
|
|
|
108
112
|
##
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Geoblacklight
|
|
2
3
|
module Relation
|
|
3
4
|
class Ancestors
|
|
@@ -7,8 +8,8 @@ module Geoblacklight
|
|
|
7
8
|
end
|
|
8
9
|
|
|
9
10
|
def create_search_params
|
|
10
|
-
{ fq: ["{!join from=#{Settings.FIELDS.SOURCE} to
|
|
11
|
-
fl: [Settings.FIELDS.TITLE,
|
|
11
|
+
{ fq: ["{!join from=#{Settings.FIELDS.SOURCE} to=#{Settings.FIELDS.UNIQUE_KEY}}#{Settings.FIELDS.UNIQUE_KEY}:#{@search_id}"],
|
|
12
|
+
fl: [Settings.FIELDS.TITLE, Settings.FIELDS.UNIQUE_KEY, Settings.FIELDS.GEOM_TYPE] }
|
|
12
13
|
end
|
|
13
14
|
|
|
14
15
|
def execute_query
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Geoblacklight
|
|
2
3
|
module Relation
|
|
3
4
|
class Descendants
|
|
@@ -8,7 +9,7 @@ module Geoblacklight
|
|
|
8
9
|
|
|
9
10
|
def create_search_params
|
|
10
11
|
{ fq: "#{Settings.FIELDS.SOURCE}:#{@search_id}",
|
|
11
|
-
fl: [Settings.FIELDS.TITLE,
|
|
12
|
+
fl: [Settings.FIELDS.TITLE, Settings.FIELDS.UNIQUE_KEY, Settings.FIELDS.GEOM_TYPE] }
|
|
12
13
|
end
|
|
13
14
|
|
|
14
15
|
def execute_query
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Geoblacklight
|
|
2
3
|
module Relation
|
|
3
4
|
class RelationResponse
|
|
@@ -17,7 +18,7 @@ module Geoblacklight
|
|
|
17
18
|
end
|
|
18
19
|
|
|
19
20
|
def empty?
|
|
20
|
-
!(ancestors['numFound']
|
|
21
|
+
!(ancestors['numFound'].positive? || descendants['numFound'].positive?)
|
|
21
22
|
end
|
|
22
23
|
end
|
|
23
24
|
end
|
data/lib/geoblacklight/routes.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Geoblacklight
|
|
2
3
|
class WmsLayer
|
|
3
4
|
def initialize(params)
|
|
@@ -24,10 +25,7 @@ module Geoblacklight
|
|
|
24
25
|
request.options.timeout = Settings.TIMEOUT_WMS
|
|
25
26
|
request.options.open_timeout = Settings.TIMEOUT_WMS
|
|
26
27
|
end
|
|
27
|
-
rescue Faraday::ConnectionFailed => error
|
|
28
|
-
Geoblacklight.logger.error error.inspect
|
|
29
|
-
{ error: error.inspect }
|
|
30
|
-
rescue Faraday::TimeoutError => error
|
|
28
|
+
rescue Faraday::ConnectionFailed, Faraday::TimeoutError => error
|
|
31
29
|
Geoblacklight.logger.error error.inspect
|
|
32
30
|
{ error: error.inspect }
|
|
33
31
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'rails/generators'
|
|
2
3
|
require 'generators/geoblacklight/install_generator'
|
|
3
4
|
|
|
@@ -7,15 +8,15 @@ namespace :geoblacklight do
|
|
|
7
8
|
require 'solr_wrapper'
|
|
8
9
|
SolrWrapper.wrap(port: '8983') do |solr|
|
|
9
10
|
solr.with_collection(name: 'blacklight-core', dir: File.join(File.expand_path('../../', File.dirname(__FILE__)), 'solr', 'conf')) do
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
puts "\nSolr server running: http://localhost:#{solr.port}/solr/#/blacklight-core"
|
|
12
|
+
puts "\n^C to stop"
|
|
13
|
+
puts ' '
|
|
14
|
+
begin
|
|
15
|
+
Rake::Task['geoblacklight:solr:seed'].invoke
|
|
16
|
+
system "bundle exec rails s #{args[:rails_server_args]}"
|
|
17
|
+
rescue Interrupt
|
|
18
|
+
puts 'Shutting down...'
|
|
19
|
+
end
|
|
19
20
|
end
|
|
20
21
|
end
|
|
21
22
|
end
|
|
@@ -30,7 +31,7 @@ namespace :geoblacklight do
|
|
|
30
31
|
puts ' '
|
|
31
32
|
begin
|
|
32
33
|
Rake::Task['geoblacklight:solr:seed'].invoke
|
|
33
|
-
system
|
|
34
|
+
system 'foreman start'
|
|
34
35
|
rescue Interrupt
|
|
35
36
|
puts 'Shutting down...'
|
|
36
37
|
end
|
|
@@ -39,23 +40,23 @@ namespace :geoblacklight do
|
|
|
39
40
|
end
|
|
40
41
|
|
|
41
42
|
namespace :index do
|
|
42
|
-
desc
|
|
43
|
+
desc 'Put sample data into solr'
|
|
43
44
|
task :seed => :environment do
|
|
44
45
|
docs = Dir['spec/fixtures/solr_documents/*.json'].map { |f| JSON.parse File.read(f) }.flatten
|
|
45
46
|
Blacklight.default_index.connection.add docs
|
|
46
47
|
Blacklight.default_index.connection.commit
|
|
47
48
|
end
|
|
48
49
|
|
|
49
|
-
desc
|
|
50
|
+
desc 'Ingests a GeoHydra transformed.json'
|
|
50
51
|
task :ingest_all => :environment do
|
|
51
|
-
docs = JSON
|
|
52
|
+
docs = JSON.parse(File.read(Rails.root.join('tmp', 'transformed.json')))
|
|
52
53
|
docs.each do |doc|
|
|
53
54
|
Blacklight.default_index.connection.add doc
|
|
54
55
|
Blacklight.default_index.connection.commit
|
|
55
56
|
end
|
|
56
57
|
end
|
|
57
58
|
|
|
58
|
-
desc
|
|
59
|
+
desc 'Ingests a directory of geoblacklight.json files'
|
|
59
60
|
task :ingest, [:directory] => :environment do |_t, args|
|
|
60
61
|
args.with_defaults(directory: 'data')
|
|
61
62
|
Dir.glob(File.join(args[:directory], '**', 'geoblacklight.json')).each do |fn|
|
|
@@ -66,7 +67,7 @@ namespace :geoblacklight do
|
|
|
66
67
|
puts "Failed to ingest #{fn}: #{e.inspect}"
|
|
67
68
|
end
|
|
68
69
|
end
|
|
69
|
-
puts
|
|
70
|
+
puts 'Committing changes to Solr'
|
|
70
71
|
Blacklight.default_index.connection.commit
|
|
71
72
|
end
|
|
72
73
|
end
|
|
@@ -74,35 +75,40 @@ namespace :geoblacklight do
|
|
|
74
75
|
namespace :downloads do
|
|
75
76
|
desc 'Delete all cached downloads'
|
|
76
77
|
task delete: :environment do
|
|
77
|
-
FileUtils.rm_rf Dir.glob(
|
|
78
|
+
FileUtils.rm_rf Dir.glob(Rails.root.join('tmp', 'cache', 'downloads', '*'))
|
|
78
79
|
end
|
|
79
80
|
desc 'Create download directory'
|
|
80
81
|
task mkdir: :environment do
|
|
81
|
-
FileUtils.mkdir_p
|
|
82
|
+
FileUtils.mkdir_p(Rails.root.join('tmp', 'cache', 'downloads'), verbose: true)
|
|
82
83
|
end
|
|
83
84
|
desc 'Precaches a download'
|
|
84
|
-
task :precache, [:doc_id, :download_type, :timeout] => [:environment] do |
|
|
85
|
-
|
|
86
|
-
fail 'Please supply required arguments [document_id, download_type and timeout]'
|
|
87
|
-
document = Geoblacklight::SolrDocument.find(args[:doc_id])
|
|
88
|
-
fail Blacklight::Exceptions::RecordNotFound if document[:layer_slug_s] != args[:doc_id]
|
|
89
|
-
download = "Geoblacklight::#{args[:download_type].capitalize}Download"
|
|
90
|
-
.constantize.new(document, timeout: args[:timeout].to_i)
|
|
91
|
-
download.get
|
|
92
|
-
Rails.logger.info "Successfully downloaded #{download.file_name}"
|
|
93
|
-
Rails.logger.info "#{Geoblacklight::ShapefileDownload.file_path}"
|
|
94
|
-
rescue Geoblacklight::Exceptions::ExternalDownloadFailed => error
|
|
95
|
-
Rails.logger.error error.message + ' ' + error.url
|
|
96
|
-
rescue NameError
|
|
97
|
-
Rails.logger.error "Could not find that download type \"#{args[:download_type]}\""
|
|
85
|
+
task :precache, [:doc_id, :download_type, :timeout] => [:environment] do |_t, args|
|
|
86
|
+
unless args[:doc_id] && args[:download_type] && args[:timeout]
|
|
87
|
+
fail 'Please supply required arguments [document_id, download_type and timeout]'
|
|
98
88
|
end
|
|
89
|
+
document = Geoblacklight::SolrDocument.find(args[:doc_id])
|
|
90
|
+
fail Blacklight::Exceptions::RecordNotFound if document[:layer_slug_s] != args[:doc_id]
|
|
91
|
+
download = "Geoblacklight::#{args[:download_type].capitalize}Download"
|
|
92
|
+
.constantize.new(document, timeout: args[:timeout].to_i)
|
|
93
|
+
download.get
|
|
94
|
+
Rails.logger.info "Successfully downloaded #{download.file_name}"
|
|
95
|
+
Rails.logger.info Geoblacklight::ShapefileDownload.file_path.to_s
|
|
96
|
+
rescue Geoblacklight::Exceptions::ExternalDownloadFailed => error
|
|
97
|
+
Rails.logger.error error.message + ' ' + error.url
|
|
98
|
+
rescue NameError
|
|
99
|
+
Rails.logger.error "Could not find that download type \"#{args[:download_type]}\""
|
|
99
100
|
end
|
|
100
101
|
end
|
|
101
102
|
|
|
102
103
|
namespace :solr do
|
|
103
|
-
desc
|
|
104
|
+
desc 'Put sample data into solr'
|
|
104
105
|
task :seed => :environment do
|
|
105
106
|
Rake::Task['geoblacklight:index:seed'].invoke
|
|
106
107
|
end
|
|
107
108
|
end
|
|
109
|
+
|
|
110
|
+
desc 'Stdout output asset paths'
|
|
111
|
+
task application_asset_paths: [:environment] do
|
|
112
|
+
puts Rails.application.config.assets.paths
|
|
113
|
+
end
|
|
108
114
|
end
|