geoblacklight 0.0.2
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 +15 -0
- data/.gitignore +19 -0
- data/.gitmodules +5 -0
- data/Gemfile +11 -0
- data/LICENSE.txt +13 -0
- data/README.md +103 -0
- data/Rakefile +44 -0
- data/app/assets/images/blacklight/logo.png +0 -0
- data/app/assets/images/geoblacklight/src_berkeley.png +0 -0
- data/app/assets/images/geoblacklight/src_cambridge.png +0 -0
- data/app/assets/images/geoblacklight/src_harvard.png +0 -0
- data/app/assets/images/geoblacklight/src_maryland.png +0 -0
- data/app/assets/images/geoblacklight/src_massgis.png +0 -0
- data/app/assets/images/geoblacklight/src_mit.png +0 -0
- data/app/assets/images/geoblacklight/src_princeton.png +0 -0
- data/app/assets/images/geoblacklight/src_stanford.png +0 -0
- data/app/assets/images/geoblacklight/src_tufts.png +0 -0
- data/app/assets/images/geoblacklight/src_un.png +0 -0
- data/app/assets/images/geoblacklight/type_arc.png +0 -0
- data/app/assets/images/geoblacklight/type_dot.png +0 -0
- data/app/assets/images/geoblacklight/type_library.png +0 -0
- data/app/assets/images/geoblacklight/type_map.png +0 -0
- data/app/assets/images/geoblacklight/type_polygon.png +0 -0
- data/app/assets/images/geoblacklight/type_raster.png +0 -0
- data/app/assets/javascripts/geoblacklight/application.js +2 -0
- data/app/assets/javascripts/geoblacklight/geoblacklight.js +4 -0
- data/app/assets/javascripts/geoblacklight/modules/map-home.js +25 -0
- data/app/assets/javascripts/geoblacklight/modules/map-results.js +72 -0
- data/app/assets/javascripts/geoblacklight/modules/map-view.js +211 -0
- data/app/controllers/download_controller.rb +107 -0
- data/app/controllers/wms_controller.rb +81 -0
- data/app/helpers/geoblacklight_helper.rb +91 -0
- data/app/views/catalog/_document_list.html.erb +12 -0
- data/app/views/catalog/_home_text.html.erb +40 -0
- data/app/views/catalog/_index_header_default.html.erb +59 -0
- data/app/views/catalog/_show_default.html.erb +68 -0
- data/app/views/catalog/_show_sidebar.html.erb +76 -0
- data/geoblacklight.gemspec +36 -0
- data/lib/generators/geoblacklight/install_generator.rb +46 -0
- data/lib/generators/geoblacklight/templates/catalog_controller.rb +217 -0
- data/lib/generators/geoblacklight/templates/geoblacklight.css.scss +79 -0
- data/lib/generators/geoblacklight/templates/geoblacklight.js +1 -0
- data/lib/geoblacklight.rb +5 -0
- data/lib/geoblacklight/config.rb +0 -0
- data/lib/geoblacklight/engine.rb +15 -0
- data/lib/geoblacklight/fixtures_indexer.rb +34 -0
- data/lib/geoblacklight/version.rb +3 -0
- data/lib/tasks/geoblacklight.rake +13 -0
- data/spec/fixtures/geoblacklight_schema/transformed.json +53 -0
- data/spec/spec_helper.rb +37 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +23 -0
- metadata +299 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
!binary "U0hBMQ==":
|
|
3
|
+
metadata.gz: !binary |-
|
|
4
|
+
ZDFmNTBjNGY5MjdhODA5MjU0ZWQyZTY2ZmMwNWQ4YWZjZGQ3M2YyMA==
|
|
5
|
+
data.tar.gz: !binary |-
|
|
6
|
+
ODk4NTkyNGI2YTFmOGM4OTEwZTUyZjFiMTJjZTZlMGQ3MzUzZTEzNA==
|
|
7
|
+
SHA512:
|
|
8
|
+
metadata.gz: !binary |-
|
|
9
|
+
ZDhlNjgyYmU1NTg5OTI2MDIxZWI4ODJhM2ZjNTYwZTYwYWVlNjhjZjhhZWIx
|
|
10
|
+
NmE1Zjc5MDg1YTUzOGZiZjIyMDgzYWJlM2E2MDkwZWQ2OGY5NGY5ODVjMDNh
|
|
11
|
+
OWU0YmVkZTM5YTg0ZmVkZmI3MDMxNDNiNDZjNTZlNjZmODA1NGE=
|
|
12
|
+
data.tar.gz: !binary |-
|
|
13
|
+
YzY5NmJiY2U5MjJlODg5ZjEyMjY2YTZiYTFiY2FiNjEyMGQ5ZWM3MmUyMWY0
|
|
14
|
+
ODJmYWI4ZTFlMjA4ZjJmZTQ3ZTMwMDFkZmMwNjQ5NmRjZjg0YTJmNGJjMDk1
|
|
15
|
+
ODdiNTZhOTAwYzg0NzFmY2MwZWNhYzgzMTAyOGMzNGE3Njg1YmI=
|
data/.gitignore
ADDED
data/.gitmodules
ADDED
data/Gemfile
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
# Specify your gem's dependencies in geoblacklight.gemspec
|
|
4
|
+
gemspec
|
|
5
|
+
|
|
6
|
+
# load local rails test instance Gemfile
|
|
7
|
+
file = File.expand_path("Gemfile", ENV['ENGINE_CART_DESTINATION'] || ENV['RAILS_ROOT'] || File.expand_path("../spec/internal", __FILE__))
|
|
8
|
+
if File.exists?(file)
|
|
9
|
+
puts "Loading #{file} ..." if $DEBUG # `ruby -d` or `bundle -v`
|
|
10
|
+
instance_eval File.read(file)
|
|
11
|
+
end
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Copyright 2014 The Board of Trustees of the Leland Stanford Junior University.
|
|
2
|
+
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License.
|
|
5
|
+
You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
See the License for the specific language governing permissions and
|
|
13
|
+
limitations under the License.
|
data/README.md
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Geoblacklight
|
|
2
|
+
|
|
3
|
+
GeoBlacklight started at Stanford and its goal is to provide a
|
|
4
|
+
world-class discovery platform for geospatial (GIS) holdings. It
|
|
5
|
+
is an open collaborative project aiming to build off of the successes
|
|
6
|
+
of the Blacklight Solr-powered discovery interface and the
|
|
7
|
+
multi-institutional OpenGeoportal federated metadata sharing
|
|
8
|
+
communities. We are currently in a collaborative design phase and
|
|
9
|
+
we're actively looking for community input and development partners.
|
|
10
|
+
More coming soon!
|
|
11
|
+
|
|
12
|
+
## Features
|
|
13
|
+
|
|
14
|
+
* Text search with scoring formula
|
|
15
|
+
* Facet by institution, year, publisher, data type, access, format
|
|
16
|
+
* Facet by place, subject
|
|
17
|
+
* Sort by relevance, year, publisher, title
|
|
18
|
+
* Results list view icons and snippets
|
|
19
|
+
* Detail map view for WMS features
|
|
20
|
+
* Detail map view feature inspection
|
|
21
|
+
* Slugs
|
|
22
|
+
* MODS display
|
|
23
|
+
* Results list map view of bounding boxes
|
|
24
|
+
* WMS/WFS/WCS links
|
|
25
|
+
* Download Shapefile
|
|
26
|
+
* Download KML
|
|
27
|
+
* Download Metadata (for Stanford)
|
|
28
|
+
|
|
29
|
+
## Features to port from alpha
|
|
30
|
+
|
|
31
|
+
* Blacklight bookmarks and history
|
|
32
|
+
* Facet pagination (more>> link)
|
|
33
|
+
* Login for persistent bookmarks and history
|
|
34
|
+
|
|
35
|
+
## TODO
|
|
36
|
+
|
|
37
|
+
* Refactoring to `lib/`
|
|
38
|
+
* Test suites
|
|
39
|
+
* Spatial search
|
|
40
|
+
* Spatial relevancy
|
|
41
|
+
* Download GeoTIFF
|
|
42
|
+
* Clip to map view for download(?)
|
|
43
|
+
* Download Metadata (for non-Stanford)
|
|
44
|
+
* Facet by language, projection, collection (dummy data)
|
|
45
|
+
* Citation and share buttons
|
|
46
|
+
* Featured datasets and articles
|
|
47
|
+
* geoblacklight-schema
|
|
48
|
+
* FGDC-based conversion of external OGP records
|
|
49
|
+
* MODS-based conversion for Stanford records
|
|
50
|
+
|
|
51
|
+
## Development
|
|
52
|
+
|
|
53
|
+
To install a development instance of Geoblacklight follow these instructions.
|
|
54
|
+
|
|
55
|
+
Clone the repository (using `--recurse`)
|
|
56
|
+
|
|
57
|
+
git clone --recurse git@github.com:sul-dlss/geoblacklight.git
|
|
58
|
+
|
|
59
|
+
Download and configure `jetty`
|
|
60
|
+
|
|
61
|
+
rake jetty:download jetty:unzip
|
|
62
|
+
rake geoblacklight:configure_jetty
|
|
63
|
+
|
|
64
|
+
Create a test app (created at `/spec/internal`)
|
|
65
|
+
|
|
66
|
+
rake engine_cart:generate
|
|
67
|
+
|
|
68
|
+
Boot `jetty`
|
|
69
|
+
|
|
70
|
+
rake jetty:start
|
|
71
|
+
|
|
72
|
+
Boot GeoBlacklight test app
|
|
73
|
+
|
|
74
|
+
cd spec/internal
|
|
75
|
+
rake geoblacklight:solr:seed # to load sample documents into jetty Solr instance
|
|
76
|
+
rails server
|
|
77
|
+
|
|
78
|
+
## Installation
|
|
79
|
+
|
|
80
|
+
Add this line to your application's `Gemfile`:
|
|
81
|
+
|
|
82
|
+
gem 'geoblacklight'
|
|
83
|
+
|
|
84
|
+
And then execute:
|
|
85
|
+
|
|
86
|
+
$ bundle
|
|
87
|
+
|
|
88
|
+
Or install it yourself as:
|
|
89
|
+
|
|
90
|
+
$ gem install geoblacklight
|
|
91
|
+
|
|
92
|
+
## Usage
|
|
93
|
+
|
|
94
|
+
1. Populate Solr index with geoblacklight-schema documents
|
|
95
|
+
2. ...
|
|
96
|
+
|
|
97
|
+
## Contributing
|
|
98
|
+
|
|
99
|
+
1. Fork it ( http://github.com/`my-github-username`/geoblacklight/fork )
|
|
100
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
101
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
102
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
|
103
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
|
2
|
+
|
|
3
|
+
BLACKLIGHT_JETTY_VERSION = '4.7.2'
|
|
4
|
+
ZIP_URL = "https://github.com/drh-stanford/blacklight-jetty/archive/v#{BLACKLIGHT_JETTY_VERSION}.zip"
|
|
5
|
+
APP_ROOT = File.dirname(__FILE__)
|
|
6
|
+
|
|
7
|
+
require 'rspec/core/rake_task'
|
|
8
|
+
require 'engine_cart/rake_task'
|
|
9
|
+
|
|
10
|
+
require 'jettywrapper'
|
|
11
|
+
|
|
12
|
+
task default: :ci
|
|
13
|
+
|
|
14
|
+
RSpec::Core::RakeTask.new(:spec)
|
|
15
|
+
|
|
16
|
+
desc "Load fixtures"
|
|
17
|
+
task :fixtures => ['engine_cart:generate'] do
|
|
18
|
+
EngineCart.within_test_app do
|
|
19
|
+
system "rake geoblacklight:solr:seed RAILS_ENV=test"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
desc "Execute Continuous Integration build"
|
|
24
|
+
task :ci => ['engine_cart:generate', 'jetty:clean', 'geoblacklight:configure_jetty'] do
|
|
25
|
+
|
|
26
|
+
require 'jettywrapper'
|
|
27
|
+
jetty_params = Jettywrapper.load_config('test')
|
|
28
|
+
|
|
29
|
+
error = Jettywrapper.wrap(jetty_params) do
|
|
30
|
+
Rake::Task['fixtures'].invoke
|
|
31
|
+
Rake::Task['spec'].invoke
|
|
32
|
+
end
|
|
33
|
+
raise "test failures: #{error}" if error
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
namespace :geoblacklight do
|
|
38
|
+
desc "Copies the default SOLR config for the bundled Testing Server"
|
|
39
|
+
task :configure_jetty do
|
|
40
|
+
FileList['schema/conf/*'].each do |f|
|
|
41
|
+
cp("#{f}", 'jetty/solr/blacklight-core/conf/', :verbose => true)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
console.log('DEBUG: Inside geoblacklight/modules/map-home.js');
|
|
4
|
+
|
|
5
|
+
Blacklight.onLoad(function () {
|
|
6
|
+
$('#geoblacklight-map-home').geoBlacklight_setupMapHome();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
/* Requires leaflet */
|
|
10
|
+
(function( $ ) {
|
|
11
|
+
|
|
12
|
+
$.fn.geoBlacklight_setupMapHome = function () {
|
|
13
|
+
console.log(this)
|
|
14
|
+
return this.each(function () {
|
|
15
|
+
var map = L.map('map');
|
|
16
|
+
var basemap = L.tileLayer('http://otile1.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.png', {
|
|
17
|
+
attribution: '© <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, Tiles Courtesy of <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> <img src="http://developer.mapquest.com/content/osm/mq_logo.png">',
|
|
18
|
+
maxZoom: 18
|
|
19
|
+
}).addTo(map);
|
|
20
|
+
map.setZoom(1);
|
|
21
|
+
map.setView([0,0]);
|
|
22
|
+
})
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
})( jQuery );
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
console.log('DEBUG: Inside geoblacklight/modules/map-results.js');
|
|
3
|
+
|
|
4
|
+
Blacklight.onLoad(function () {
|
|
5
|
+
$('#geoblacklight-map-results').geoBlacklight_setupMapResults();
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
/* Requires leaflet */
|
|
9
|
+
(function( $ ) {
|
|
10
|
+
var map;
|
|
11
|
+
$.fn.geoBlacklight_setupMapResults = function () {
|
|
12
|
+
// console.log(this)
|
|
13
|
+
return this.each(function () {
|
|
14
|
+
map = L.map('map');
|
|
15
|
+
var basemap = L.tileLayer('http://otile1.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.png', {
|
|
16
|
+
attribution: '© <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, Tiles Courtesy of <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> <img src="http://developer.mapquest.com/content/osm/mq_logo.png">',
|
|
17
|
+
maxZoom: 18
|
|
18
|
+
}).addTo(map);
|
|
19
|
+
map.setView([0,0],1);
|
|
20
|
+
// console.log(mapBbox);
|
|
21
|
+
map.fitBounds(mapBbox);
|
|
22
|
+
})
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
$.fn.geoBlacklight_addBbox = function (i) {
|
|
26
|
+
i.addTo(map);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
$.fn.geoBlacklight_removeBbox = function (j) {
|
|
30
|
+
for(var i in map._layers) {
|
|
31
|
+
if(map._layers[i]._path !== undefined && i !== 0) {
|
|
32
|
+
try {
|
|
33
|
+
map.removeLayer(map._layers[i]);
|
|
34
|
+
}
|
|
35
|
+
catch(e) {
|
|
36
|
+
console.log("problem with " + e + map._layers[i]);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
$.fn.geoBlacklight_computeBbox = function (i) {
|
|
43
|
+
var doc = solrDocs[i];
|
|
44
|
+
//Calculates map bounding box and creates layer bbox
|
|
45
|
+
if (doc.solr_bbox){
|
|
46
|
+
bBoxs[i] = L.polygon([
|
|
47
|
+
[doc.solr_sw_pt_0_d, doc.solr_sw_pt_1_d],
|
|
48
|
+
[doc.solr_ne_pt_0_d, doc.solr_sw_pt_1_d],
|
|
49
|
+
[doc.solr_ne_pt_0_d, doc.solr_ne_pt_1_d],
|
|
50
|
+
[doc.solr_sw_pt_0_d, doc.solr_ne_pt_1_d]]);
|
|
51
|
+
|
|
52
|
+
if (mapBbox.length == 0) {
|
|
53
|
+
mapBbox = [[doc.solr_sw_pt_0_d, doc.solr_sw_pt_1_d],
|
|
54
|
+
[doc.solr_ne_pt_0_d, doc.solr_ne_pt_1_d]];
|
|
55
|
+
} else{
|
|
56
|
+
if (doc.solr_sw_pt_0_d < mapBbox[0][0]){
|
|
57
|
+
mapBbox[0][0] = doc.solr_sw_pt_0_d;
|
|
58
|
+
}
|
|
59
|
+
if (doc.solr_sw_pt_1_d < mapBbox[0][1]){
|
|
60
|
+
mapBbox[0][1] = doc.solr_sw_pt_1_d;
|
|
61
|
+
}
|
|
62
|
+
if (doc.solr_ne_pt_0_d > mapBbox[1][0]){
|
|
63
|
+
mapBbox[1][0] = doc.solr_ne_pt_0_d;
|
|
64
|
+
}
|
|
65
|
+
if (doc.solr_ne_pt_1_d > mapBbox[1][1]){
|
|
66
|
+
mapBbox[1][1] = doc.solr_ne_pt_1_d;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
})( jQuery );
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
console.log('DEBUG: Inside geoblacklight/modules/map-view.js');
|
|
4
|
+
Blacklight.onLoad(function () {
|
|
5
|
+
$('#geoblacklight-map-view').geoBlacklight_setupMapView();
|
|
6
|
+
$('#geoblacklight-tools').geoBlacklight_setupTools();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
/* Requires leaflet */
|
|
10
|
+
(function( $, document ) {
|
|
11
|
+
var map, wmsLayer, spinner, mapBbox, alertMsg, layerBbox;
|
|
12
|
+
|
|
13
|
+
function WktBboxToJson(solrDoc){
|
|
14
|
+
return [[solrDoc.solr_sw_pt_0_d, solrDoc.solr_sw_pt_1_d],
|
|
15
|
+
[solrDoc.solr_ne_pt_0_d, solrDoc.solr_sw_pt_1_d],
|
|
16
|
+
[solrDoc.solr_ne_pt_0_d, solrDoc.solr_ne_pt_1_d],
|
|
17
|
+
[solrDoc.solr_sw_pt_0_d, solrDoc.solr_ne_pt_1_d]];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
$.fn.geoBlacklight_setupMapView = function (options){
|
|
21
|
+
return this.each(function () {
|
|
22
|
+
console.log(this)
|
|
23
|
+
map = L.map('map');
|
|
24
|
+
console.log(solrDoc)
|
|
25
|
+
// var layerBbox;
|
|
26
|
+
// var location = JSON.parse(doc.Location);
|
|
27
|
+
if (solrDoc.solr_bbox){
|
|
28
|
+
layerBbox = WktBboxToJson(solrDoc);
|
|
29
|
+
map.fitBounds([[solrDoc.solr_sw_pt_0_d, solrDoc.solr_sw_pt_1_d],
|
|
30
|
+
[solrDoc.solr_ne_pt_0_d, solrDoc.solr_ne_pt_1_d]]);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* XXX: externalize configuration for Mapbox application key */
|
|
34
|
+
var basemap = L.tileLayer('http://otile1.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.png', {
|
|
35
|
+
attribution: '© <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, Tiles Courtesy of <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> <img src="http://developer.mapquest.com/content/osm/mq_logo.png">',
|
|
36
|
+
maxZoom: 18
|
|
37
|
+
}).addTo(map);
|
|
38
|
+
|
|
39
|
+
map.on('click', function(e){
|
|
40
|
+
spinner = "<span id='attribute-table' class=''><i class='fa fa-spinner fa-spin fa-3x fa-align-center'></i></span>"
|
|
41
|
+
$("#attribute-table").replaceWith(spinner);
|
|
42
|
+
// console.log(e)
|
|
43
|
+
mapBbox = map.getBounds()
|
|
44
|
+
var wmsoptions = {
|
|
45
|
+
"URL": solrDoc.solr_wms_url,
|
|
46
|
+
"SERVICE": "WMS",
|
|
47
|
+
"VERSION": "1.1.1",
|
|
48
|
+
"REQUEST": "GetFeatureInfo",
|
|
49
|
+
"LAYERS": solrDoc.layer_id_s,
|
|
50
|
+
"STYLES": "",
|
|
51
|
+
"SRS": "EPSG:4326", /* XXX: is this the correct projection? */
|
|
52
|
+
"BBOX": mapBbox._southWest.lng + "," + mapBbox._southWest.lat + "," + mapBbox._northEast.lng + "," + mapBbox._northEast.lat,
|
|
53
|
+
"WIDTH": $("#map").width(),
|
|
54
|
+
"HEIGHT": $("#map").height(),
|
|
55
|
+
"QUERY_LAYERS": solrDoc.layer_id_s,
|
|
56
|
+
"X": Math.round(e.containerPoint.x),
|
|
57
|
+
"Y": Math.round(e.containerPoint.y),
|
|
58
|
+
"EXCEPTIONS": "application/json",
|
|
59
|
+
"info_format": "application/json"
|
|
60
|
+
}
|
|
61
|
+
console.log(e);
|
|
62
|
+
|
|
63
|
+
$.ajax({
|
|
64
|
+
type: 'POST',
|
|
65
|
+
url: '/wms/handle',
|
|
66
|
+
data: wmsoptions,
|
|
67
|
+
success: function(data){
|
|
68
|
+
console.log(data)
|
|
69
|
+
if ('gis_service' in data){
|
|
70
|
+
console.log(data);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
var t = $("<table id='attribute-table' class='table table-hover table-condensed table-responsive table-striped table-bordered'><thead><tr class=''><th>Attribute</th><th>Value</th></tr></thead><tbody>")
|
|
74
|
+
$.each(data.values, function(i,val){
|
|
75
|
+
t.append("<tr><td>" + val[0] + "</td><td>" + val[1] + "</tr>")
|
|
76
|
+
});
|
|
77
|
+
$('#attribute-table').replaceWith(t);
|
|
78
|
+
},
|
|
79
|
+
fail: function(error){
|
|
80
|
+
console.log(error);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
if (solrDoc.solr_wms_url && solrDoc.layer_id_s &&
|
|
86
|
+
(solrDoc.dc_rights_s == 'Public' || solrDoc.dct_provenance_s == 'Stanford')){
|
|
87
|
+
wmsLayer = L.tileLayer.wms(solrDoc.solr_wms_url, {
|
|
88
|
+
layers: solrDoc.layer_id_s,
|
|
89
|
+
format: 'image/png',
|
|
90
|
+
transparent: true, //so this seems to work for Stanford and Harvard
|
|
91
|
+
tiled: true,
|
|
92
|
+
CRS: "EPSG:900913",
|
|
93
|
+
opacity: 0.75
|
|
94
|
+
}).addTo(map);
|
|
95
|
+
}else{
|
|
96
|
+
L.polygon(layerBbox).addTo(map);
|
|
97
|
+
$("#control").hide();
|
|
98
|
+
}
|
|
99
|
+
initHandle(wmsLayer);
|
|
100
|
+
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
function initHandle(wmsLayer) {
|
|
107
|
+
//MapBox Opacity Control
|
|
108
|
+
var handle = document.getElementById('handle'),
|
|
109
|
+
start = false,
|
|
110
|
+
startTop;
|
|
111
|
+
|
|
112
|
+
document.onmousemove = function(e) {
|
|
113
|
+
if (!start) return;
|
|
114
|
+
// Adjust control
|
|
115
|
+
handle.style.top = Math.max(-5, Math.min(195, startTop + parseInt(e.clientY, 10) - start)) + 'px';
|
|
116
|
+
// Adjust opacity
|
|
117
|
+
wmsLayer.setOpacity(1 - (handle.offsetTop / 200));
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
if (handle) {
|
|
121
|
+
handle.onmousedown = function(e) {
|
|
122
|
+
// Record initial positions
|
|
123
|
+
start = parseInt(e.clientY, 10);
|
|
124
|
+
startTop = handle.offsetTop - 5;
|
|
125
|
+
return false;
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
document.onmouseup = function(e) {
|
|
131
|
+
start = null;
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
})( jQuery, document );
|
|
137
|
+
|
|
138
|
+
(function ( $, document ) {
|
|
139
|
+
$.fn.geoBlacklight_setupTools = function() {
|
|
140
|
+
return this.each(function () {
|
|
141
|
+
$(document).ready(function(){
|
|
142
|
+
//See full abstract
|
|
143
|
+
$('#more-abstract').on('click', function(){
|
|
144
|
+
$('#abstract-trunc').toggle();
|
|
145
|
+
$('#abstract-full').removeClass('hidden');
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
//Fire download shapefile REQUEST
|
|
149
|
+
$('#download-shapefile').on('click', function(){
|
|
150
|
+
$('#download-shapefile').addClass('disabled');
|
|
151
|
+
$('#icon-shapefile').removeClass('fa-download');
|
|
152
|
+
$('#icon-shapefile').addClass('fa-spinner fa-spin');
|
|
153
|
+
$.ajax({
|
|
154
|
+
type: 'POST',
|
|
155
|
+
url: '/download/shapefile',
|
|
156
|
+
data: solrDoc,
|
|
157
|
+
}).done(function(data){
|
|
158
|
+
var alertMsg;
|
|
159
|
+
$('#download-shapefile').removeClass('disabled');
|
|
160
|
+
$('#icon-shapefile').removeClass('fa-spinner fa-spin');
|
|
161
|
+
$('#icon-shapefile').addClass('fa-download');
|
|
162
|
+
console.log(data);
|
|
163
|
+
if ('error' in data){
|
|
164
|
+
console.log('something bad');
|
|
165
|
+
alertMsg = "<div class='alert alert-danger fade in'><button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button><strong>Holy guacamole!</strong> Something went wrong with the download :(</div>";
|
|
166
|
+
}else{
|
|
167
|
+
alertMsg = "<div class='alert alert-success fade in'><button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button><strong>Good to go!</strong> Your file is <a href='/download/file?q=" + data.data + "'>ready to download.</a></div>";
|
|
168
|
+
}
|
|
169
|
+
$("#main-flashes").append(alertMsg);
|
|
170
|
+
}).fail(function(data){
|
|
171
|
+
var alertMsg = "<div class='alert alert-danger fade in'><button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button><strong>Holy guacamole!</strong> Something went wrong with the download :(</div>";
|
|
172
|
+
$("#main-flashes").append(alertMsg);
|
|
173
|
+
$('#icon-shapefile').removeClass('fa-spinner fa-spin');
|
|
174
|
+
$('#icon-shapefile').addClass('fa-download');
|
|
175
|
+
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
$('#download-kml').on('click', function(){
|
|
180
|
+
$('#download-kml').addClass('disabled');
|
|
181
|
+
$('#icon-kml').removeClass('fa-download');
|
|
182
|
+
$('#icon-kml').addClass('fa-spinner fa-spin');
|
|
183
|
+
$.ajax({
|
|
184
|
+
type: 'POST',
|
|
185
|
+
url: '/download/kml',
|
|
186
|
+
data: solrDoc,
|
|
187
|
+
}).done(function(data){
|
|
188
|
+
var alertMsg;
|
|
189
|
+
$('#download-kml').removeClass('disabled');
|
|
190
|
+
$('#icon-kml').removeClass('fa-spinner fa-spin');
|
|
191
|
+
$('#icon-kml').addClass('fa-download');
|
|
192
|
+
console.log(data);
|
|
193
|
+
if ('error' in data){
|
|
194
|
+
console.log('something bad');
|
|
195
|
+
alertMsg = "<div class='alert alert-danger fade in'><button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button><strong>Holy guacamole!</strong> Something went wrong with the download :(</div>";
|
|
196
|
+
}else{
|
|
197
|
+
alertMsg = "<div class='alert alert-success fade in'><button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button><strong>Good to go!</strong> Your file is <a href='/download/file?q=" + data.data + "'>ready to download.</a></div>";
|
|
198
|
+
}
|
|
199
|
+
$("#main-flashes").append(alertMsg);
|
|
200
|
+
}).fail(function(data){
|
|
201
|
+
var alertMsg = "<div class='alert alert-danger fade in'><button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button><strong>Holy guacamole!</strong> Something went wrong with the download :(</div>";
|
|
202
|
+
$("#main-flashes").append(alertMsg);
|
|
203
|
+
$('#icon-kml').removeClass('fa-spinner fa-spin');
|
|
204
|
+
$('#icon-kml').addClass('fa-download');
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
})
|
|
210
|
+
}
|
|
211
|
+
})( jQuery, document );
|