geoblacklight 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +0 -3
- data/app/assets/javascripts/geoblacklight/modules/home.js +2 -1
- data/app/assets/javascripts/geoblacklight/modules/layer_opacity.js +16 -7
- data/app/assets/javascripts/geoblacklight/modules/results.js +8 -7
- data/app/assets/stylesheets/geoblacklight/modules/home.css.scss +21 -2
- data/app/assets/stylesheets/geoblacklight/modules/layer_opacity.css.scss +47 -23
- data/app/helpers/geoblacklight_helper.rb +4 -0
- data/app/views/catalog/_facet_tag_item.html.erb +3 -0
- data/app/views/catalog/_facet_tag_layout.html.erb +1 -0
- data/app/views/catalog/_home_text.html.erb +17 -2
- data/app/views/catalog/_index_split_default.html.erb +1 -1
- data/app/views/catalog/_upper_metadata.html.erb +4 -4
- data/app/views/catalog/index.html.erb +12 -0
- data/app/views/shared/_header_navbar.html.erb +25 -0
- data/config/locales/geoblacklight.en.yml +5 -0
- data/lib/geoblacklight/version.rb +1 -1
- data/spec/features/home_page_spec.rb +14 -28
- data/spec/features/split_view.html.erb_spec.rb +31 -1
- metadata +6 -6
- data/app/assets/javascripts/geoblacklight/modules/map-view.js +0 -211
- data/lib/geoblacklight/fixtures_indexer.rb +0 -34
- data/spec/fixtures/test-berkeley-fields.json +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9eb92c283b222d30905b5012385f7a51bb3f303f
|
4
|
+
data.tar.gz: a7e10de6f63d7991d008cd01ff2f41d1b4b3c0c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02ce6eef716f16b585772465b5678883bb23df710607d66327b57ea68e497b0165b2e26eebd74e0ace42836cc0024a09e1b15023e36e74ad12bc7764e544e4c6
|
7
|
+
data.tar.gz: 6edc12e20927c02d0800d1f4df2566406442792951cc8279ebe8124b4621c7859cb0d7383237a4b00f852dfddbd3adac0a0fc124137114eb2a37889feab4e49d
|
data/README.md
CHANGED
@@ -60,9 +60,6 @@ Boot GeoBlacklight test app
|
|
60
60
|
rake geoblacklight:solr:seed # to load sample documents into jetty Solr instance
|
61
61
|
rails server
|
62
62
|
|
63
|
-
Note that if you're using Rails with Spring enabled, we've found the the `rails generate` commands
|
64
|
-
will stall. The workaround is to kill the spring daemon process. You will will probably not need to run this generator regularly.
|
65
|
-
|
66
63
|
Run tests
|
67
64
|
|
68
65
|
rake ci
|
@@ -1,9 +1,10 @@
|
|
1
1
|
Blacklight.onLoad(function () {
|
2
2
|
$('[data-map="home"]').each(function(i, element) {
|
3
3
|
var geoblacklight = new GeoBlacklight(this),
|
4
|
+
data = $(this).data(),
|
4
5
|
search;
|
5
6
|
search = new L.Control.GeoSearch(function(querystring) {
|
6
|
-
this.link.href =
|
7
|
+
this.link.href = data.catalogPath + '?' + querystring;
|
7
8
|
}, { button: true });
|
8
9
|
geoblacklight.map.addControl(search);
|
9
10
|
});
|
@@ -14,34 +14,43 @@
|
|
14
14
|
},
|
15
15
|
|
16
16
|
onAdd: function(map) {
|
17
|
-
var container = L.DomUtil.create('div', 'opacity-control'),
|
17
|
+
var container = L.DomUtil.create('div', 'opacity-control unselectable'),
|
18
|
+
controlArea = L.DomUtil.create('div', 'opacity-area', container),
|
18
19
|
handle = L.DomUtil.create('div', 'opacity-handle', container),
|
19
|
-
bottom = L.DomUtil.create('div', '
|
20
|
+
bottom = L.DomUtil.create('div', 'opacity-bottom', container);
|
20
21
|
|
21
22
|
L.DomEvent.disableClickPropagation(container);
|
22
|
-
this.setListeners(handle);
|
23
|
+
this.setListeners(handle, bottom);
|
24
|
+
handle.style.top = handle.offsetTop - 12 + 50 + 'px';
|
25
|
+
handle.innerHTML = parseInt(this.options.layer.options.opacity * 100) + '%';
|
23
26
|
return container;
|
24
27
|
},
|
25
28
|
|
26
|
-
setListeners: function(handle) {
|
29
|
+
setListeners: function(handle, bottom) {
|
27
30
|
var _this = this,
|
28
31
|
start = false,
|
29
32
|
startTop;
|
30
33
|
|
31
34
|
L.DomEvent.addListener(document, 'mousemove', function(e) {
|
32
35
|
if (!start) return;
|
33
|
-
|
34
|
-
|
36
|
+
var percentInverse = Math.max(0, Math.min(200, startTop + parseInt(e.clientY, 10) - start)) / 2;
|
37
|
+
handle.style.top = ((percentInverse * 2) - 12) + 'px';
|
38
|
+
handle.innerHTML = Math.round((1 - (percentInverse / 100)) * 100) + '%';
|
39
|
+
bottom.style.height = Math.max(0, (((100 - percentInverse) * 2) - 12)) + 'px';
|
40
|
+
bottom.style.top = Math.min(200, (percentInverse * 2) + 12) + 'px';
|
41
|
+
_this.options.layer.setOpacity(1 - (percentInverse / 100));
|
35
42
|
});
|
36
43
|
|
37
44
|
L.DomEvent.addListener(handle, 'mousedown', function(e) {
|
45
|
+
L.DomEvent.disableClickPropagation(e);
|
38
46
|
start = parseInt(e.clientY, 10);
|
39
|
-
startTop = handle.offsetTop -
|
47
|
+
startTop = handle.offsetTop - 12;
|
40
48
|
return false;
|
41
49
|
});
|
42
50
|
|
43
51
|
L.DomEvent.addListener(document, 'mouseup', function(e) {
|
44
52
|
L.DomEvent.stopPropagation(e);
|
53
|
+
L.DomEvent.disableClickPropagation(e);
|
45
54
|
start = null;
|
46
55
|
});
|
47
56
|
}
|
@@ -1,9 +1,4 @@
|
|
1
1
|
Blacklight.onLoad(function() {
|
2
|
-
var dynamicSearcher;
|
3
|
-
|
4
|
-
dynamicSearcher = GeoBlacklight.debounce(function(querystring) {
|
5
|
-
History.pushState(null, null, "/catalog?" + querystring);
|
6
|
-
}, 800);
|
7
2
|
|
8
3
|
History.Adapter.bind(window, 'statechange', function() {
|
9
4
|
var state = History.getState();
|
@@ -11,8 +6,14 @@ Blacklight.onLoad(function() {
|
|
11
6
|
});
|
12
7
|
|
13
8
|
$('[data-map="index"]').each(function() {
|
14
|
-
var
|
15
|
-
|
9
|
+
var data = $(this).data(),
|
10
|
+
dynamicSearcher, geoblacklight, search;
|
11
|
+
|
12
|
+
dynamicSearcher = GeoBlacklight.debounce(function(querystring) {
|
13
|
+
History.pushState(null, null, data.catalogPath + '?' + querystring);
|
14
|
+
}, 800);
|
15
|
+
geoblacklight = new GeoBlacklight(this).setHoverListeners();
|
16
|
+
search = new L.Control.GeoSearch(dynamicSearcher);
|
16
17
|
geoblacklight.map.addControl(search);
|
17
18
|
});
|
18
19
|
|
@@ -1,3 +1,22 @@
|
|
1
1
|
[data-map="home"] {
|
2
|
-
height:
|
3
|
-
}
|
2
|
+
height: 400px;
|
3
|
+
}
|
4
|
+
|
5
|
+
.home-search-area {
|
6
|
+
text-align: center;
|
7
|
+
}
|
8
|
+
|
9
|
+
.home-facet-label {
|
10
|
+
background: $gray-light;
|
11
|
+
border-radius: .25em;
|
12
|
+
color: #fff;
|
13
|
+
font-size: 1.4em;
|
14
|
+
line-height: 2em;
|
15
|
+
padding: .2em .6em .3em;
|
16
|
+
text-align: center;
|
17
|
+
|
18
|
+
&:hover {
|
19
|
+
color: #fff;
|
20
|
+
text-decoration: none;
|
21
|
+
}
|
22
|
+
}
|
@@ -1,34 +1,58 @@
|
|
1
1
|
.leaflet-control.opacity-control {
|
2
|
-
background: #
|
3
|
-
border:
|
4
|
-
|
5
|
-
border-radius: 3px;
|
2
|
+
background-color: #a9acb1;
|
3
|
+
border-radius: 15px;
|
4
|
+
display: block;
|
6
5
|
height: 200px;
|
7
|
-
|
8
|
-
|
9
|
-
top:
|
10
|
-
width:
|
11
|
-
z-index: 999;
|
6
|
+
left: 10px;
|
7
|
+
position: relative;
|
8
|
+
top: 15px;
|
9
|
+
width: 5px;
|
12
10
|
|
13
11
|
.opacity-handle {
|
14
|
-
background: #
|
15
|
-
|
16
|
-
|
12
|
+
background-color: #fff;
|
13
|
+
border-radius: 100%;
|
14
|
+
cursor: ns-resize;
|
15
|
+
font-size: 10px;
|
16
|
+
height: 24px;
|
17
|
+
left: -10px;
|
18
|
+
line-height: 24px;
|
17
19
|
position: absolute;
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
cursor: ns-resize;
|
25
|
-
}
|
20
|
+
text-align: center;
|
21
|
+
top: 0;
|
22
|
+
width: 24px;
|
23
|
+
|
24
|
+
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
|
25
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
|
26
26
|
}
|
27
27
|
|
28
28
|
.opacity-bottom {
|
29
|
-
|
30
|
-
|
29
|
+
background-color: #017afd;
|
30
|
+
border-radius: 15px;
|
31
|
+
display: block;
|
32
|
+
height: 138px;
|
33
|
+
left: 0px;
|
34
|
+
position: relative;
|
35
|
+
top: 62px;
|
36
|
+
width: 5px;
|
37
|
+
}
|
38
|
+
|
39
|
+
// Area underneath slider to prevent unintentioned map clicks
|
40
|
+
.opacity-area {
|
41
|
+
padding: 14px;
|
42
|
+
cursor: default;
|
43
|
+
height: 200px;
|
44
|
+
left: -12px;
|
31
45
|
position: absolute;
|
32
|
-
|
46
|
+
top: 0px;
|
47
|
+
width: 20px;
|
33
48
|
}
|
34
49
|
}
|
50
|
+
|
51
|
+
.opacity-control.unselectable {
|
52
|
+
-webkit-touch-callout: none;
|
53
|
+
-webkit-user-select: none;
|
54
|
+
-khtml-user-select: none;
|
55
|
+
-moz-user-select: none;
|
56
|
+
-ms-user-select: none;
|
57
|
+
user-select: none;
|
58
|
+
}
|
@@ -47,6 +47,10 @@ module GeoblacklightHelper
|
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
+
def render_facet_tags(facet)
|
51
|
+
render_facet_limit(facets_from_request(facet).first, partial: 'facet_tag_item', layout: 'facet_tag_layout')
|
52
|
+
end
|
53
|
+
|
50
54
|
def layer_type_image(type)
|
51
55
|
content_tag :span, '', class: "geoblacklight-icon geoblacklight-#{type.downcase}"
|
52
56
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= yield %>
|
@@ -1,3 +1,18 @@
|
|
1
|
-
<div
|
2
|
-
|
1
|
+
<div class='jumbotron'>
|
2
|
+
<div class='home-search-area'>
|
3
|
+
<%= content_tag :h2, t('geoblacklight.home.headline') %>
|
4
|
+
<%= content_tag :h3, t('geoblacklight.home.search_heading') %>
|
5
|
+
<%= render_search_bar %>
|
6
|
+
</div>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class='row'>
|
10
|
+
<div class='col-md-6 text-center'>
|
11
|
+
<%= content_tag :h4, t('geoblacklight.home.category_heading') %>
|
12
|
+
<%= render_facet_tags [:dc_subject_sm] %>
|
13
|
+
</div>
|
14
|
+
<div class='col-md-6 text-center'>
|
15
|
+
<%= content_tag :h4, t('geoblacklight.home.map_heading') %>
|
16
|
+
<%= content_tag :div, '', id: 'map', data: { map: 'home', 'catalog-path'=> catalog_index_path , 'map-bbox' => params[:bbox]} %>
|
17
|
+
</div>
|
3
18
|
</div>
|
@@ -16,7 +16,7 @@
|
|
16
16
|
<div class='col-md-12 more-info-area'>
|
17
17
|
<div class='collapse' data-collapse-target="<%= document['uuid'] %>">
|
18
18
|
<small>
|
19
|
-
<%= document['solr_year_i'] %>. <i><%= document['dc_creator_sm'].nil?? '' : document['dc_creator_sm'].join(', ') %></i>. <%= snippit(document['dc_description_s']) %>. <%= document['dc_publisher_s']
|
19
|
+
<%= document['solr_year_i'] %>. <i><%= document['dc_creator_sm'].nil?? '' : document['dc_creator_sm'].join(', ') %></i>. <%= snippit(document['dc_description_s']) %>. <%= document['dc_publisher_s'] %>.
|
20
20
|
</small>
|
21
21
|
</div>
|
22
22
|
</div>
|
@@ -16,7 +16,7 @@
|
|
16
16
|
<dd id="" itemprop="description"><%= abstract_truncator(document['dc_description_s']) %> </dd>
|
17
17
|
<% unless document['dct_isPartOf_sm'].nil? %>
|
18
18
|
<dt>Collection</dt>
|
19
|
-
<dd itemprop="isPartOf"><%= document['dct_isPartOf_sm'].sort.join(', ') %> </dd>
|
19
|
+
<dd itemprop="isPartOf"><%= document['dct_isPartOf_sm'].sort.uniq.join(', ') %> </dd>
|
20
20
|
<% end %>
|
21
21
|
<% if document['dct_provenance_s'] == 'Stanford' and not document['dc_identifier_s'].nil? %>
|
22
22
|
<dt>Citation</dt>
|
@@ -24,15 +24,15 @@
|
|
24
24
|
<% end %>
|
25
25
|
<% unless document['dct_spatial_sm'].nil? %>
|
26
26
|
<dt>Places</dt>
|
27
|
-
<dd itemprop="spatial"><%= document['dct_spatial_sm'].sort.join(', ') %> </dd>
|
27
|
+
<dd itemprop="spatial"><%= document['dct_spatial_sm'].sort.uniq.join(', ') %> </dd>
|
28
28
|
<% end %>
|
29
29
|
<% unless document['dc_subject_sm'].nil? %>
|
30
30
|
<dt>Subjects</dt>
|
31
|
-
<dd itemprop="keywords"><%= document['dc_subject_sm'].sort.join(', ') %> </dd>
|
31
|
+
<dd itemprop="keywords"><%= document['dc_subject_sm'].sort.uniq.join(', ') %> </dd>
|
32
32
|
<% end %>
|
33
33
|
<% unless document['dct_temporal_sm'].nil? %>
|
34
34
|
<dt>Years</dt>
|
35
|
-
<dd itemprop="temporal"><%= document['dct_temporal_sm'].sort.join(', ') %> </dd>
|
35
|
+
<dd itemprop="temporal"><%= document['dct_temporal_sm'].sort.uniq.join(', ') %> </dd>
|
36
36
|
<% end %>
|
37
37
|
</dl>
|
38
38
|
</div>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<% unless has_search_parameters? %>
|
2
|
+
<%# if there are no input/search related params, display the "home" partial -%>
|
3
|
+
<%= render 'home' %>
|
4
|
+
<% else %>
|
5
|
+
<div id="sidebar" class="col-md-3 col-sm-4">
|
6
|
+
<%= render 'search_sidebar' %>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div id="content" class="col-md-9 col-sm-8">
|
10
|
+
<%= render 'search_results' %>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<div id="header-navbar" class="navbar navbar-inverse navbar-static-top" role="navigation">
|
2
|
+
<div class="container">
|
3
|
+
<div class="navbar-header">
|
4
|
+
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#user-util-collapse">
|
5
|
+
<span class="sr-only">Toggle navigation</span>
|
6
|
+
<span class="icon-bar"></span>
|
7
|
+
<span class="icon-bar"></span>
|
8
|
+
<span class="icon-bar"></span>
|
9
|
+
</button>
|
10
|
+
<%= link_to application_name, root_path, class: "navbar-brand" %>
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<div class="collapse navbar-collapse" id="user-util-collapse">
|
14
|
+
<%= render :partial=>'/user_util_links' %>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<% unless current_page?(root_url) %>
|
20
|
+
<div id="search-navbar" class="navbar navbar-default navbar-static-top" role="navigation">
|
21
|
+
<div class="container">
|
22
|
+
<%= render_search_bar %>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
<% end %>
|
@@ -3,5 +3,10 @@ en:
|
|
3
3
|
download:
|
4
4
|
success: 'Your file %{title} is ready for download'
|
5
5
|
error: 'Sorry, the requested file could not be downloaded'
|
6
|
+
home:
|
7
|
+
headline: 'Explore and discover...'
|
8
|
+
search_heading: 'Find the maps and data you need'
|
9
|
+
category_heading: 'Find by category'
|
10
|
+
map_heading: 'Find by location'
|
6
11
|
tools:
|
7
12
|
login_to_view: 'Login to view and download'
|
@@ -4,29 +4,24 @@ feature 'Home page', js: true do # use js: true for tests which require js, but
|
|
4
4
|
before do
|
5
5
|
visit root_path
|
6
6
|
end
|
7
|
-
scenario '
|
8
|
-
|
9
|
-
|
10
|
-
expect(page).to have_css
|
11
|
-
expect(page).to have_css
|
12
|
-
expect(page).to have_css
|
13
|
-
expect(page).to have_css('div.panel.facet_limit', text: 'Year')
|
14
|
-
expect(page).to have_css('div.panel.facet_limit', text: 'Access')
|
15
|
-
expect(page).to have_css('div.panel.facet_limit', text: 'Data type')
|
16
|
-
expect(page).to have_css('div.panel.facet_limit', text: 'Format')
|
17
|
-
expect(page).to have_css('div.panel.facet_limit', text: 'Language')
|
7
|
+
scenario 'search bar' do
|
8
|
+
expect(page).to_not have_css '#search-navbar'
|
9
|
+
within '.jumbotron' do
|
10
|
+
expect(page).to have_css 'h2', text: 'Explore and discover...'
|
11
|
+
expect(page).to have_css 'h3', text: 'Find the maps and data you need'
|
12
|
+
expect(page).to have_css 'form.search-query-form'
|
18
13
|
end
|
19
|
-
|
20
|
-
|
21
|
-
expect(page).to have_css
|
22
|
-
|
23
|
-
expect(page).to have_css
|
24
|
-
expect(page).to have_css
|
14
|
+
end
|
15
|
+
scenario 'find by category' do
|
16
|
+
expect(page).to have_css '.home-facet-label', count: 7
|
17
|
+
click_link 'Census'
|
18
|
+
expect(page).to have_css '.filterName', text: 'Subject'
|
19
|
+
expect(page).to have_css '.filterValue', text: 'Census'
|
25
20
|
end
|
26
21
|
scenario 'map should be visible' do
|
27
|
-
within '#
|
22
|
+
within '#main-container' do
|
28
23
|
expect(page).to have_css('#map')
|
29
|
-
expect(page).to have_css('img.leaflet-tile', count:
|
24
|
+
expect(page).to have_css('img.leaflet-tile', count: 4)
|
30
25
|
end
|
31
26
|
end
|
32
27
|
scenario 'clicking map search should create a spatial search' do
|
@@ -37,13 +32,4 @@ feature 'Home page', js: true do # use js: true for tests which require js, but
|
|
37
32
|
end
|
38
33
|
expect(page).to have_css '#documents'
|
39
34
|
end
|
40
|
-
|
41
|
-
scenario 'clicking map search should retain current search parameters' do
|
42
|
-
visit '/?f[dc_subject_sm][]=polygon&f[dc_subject_sm][]=boundaries'
|
43
|
-
find('#map').double_click
|
44
|
-
within '#appliedParams' do
|
45
|
-
expect(page).to have_content('Subject polygon')
|
46
|
-
expect(page).to have_content('Subject boundaries')
|
47
|
-
end
|
48
|
-
end
|
49
35
|
end
|
@@ -2,17 +2,39 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
feature 'Index view', js: true do
|
4
4
|
before do
|
5
|
-
visit catalog_index_path(
|
5
|
+
visit catalog_index_path(q: '*')
|
6
6
|
end
|
7
7
|
|
8
8
|
scenario 'should have documents and map on page' do
|
9
|
+
visit catalog_index_path(f: { dct_provenance_s: ['Stanford']})
|
9
10
|
expect(page).to have_css('#documents')
|
10
11
|
expect(page).to have_css(".document", count: 2)
|
11
12
|
expect(page).to have_css('#map')
|
12
13
|
end
|
13
14
|
|
15
|
+
scenario 'should have facets listed correctly' do
|
16
|
+
within '#facet-panel-collapse' do
|
17
|
+
expect(page).to have_css('div.panel.facet_limit', text: 'Institution')
|
18
|
+
expect(page).to have_css('div.panel.facet_limit', text: 'Publisher')
|
19
|
+
expect(page).to have_css('div.panel.facet_limit', text: 'Subject')
|
20
|
+
expect(page).to have_css('div.panel.facet_limit', text: 'Place')
|
21
|
+
expect(page).to have_css('div.panel.facet_limit', text: 'Year')
|
22
|
+
expect(page).to have_css('div.panel.facet_limit', text: 'Access')
|
23
|
+
expect(page).to have_css('div.panel.facet_limit', text: 'Data type')
|
24
|
+
expect(page).to have_css('div.panel.facet_limit', text: 'Format')
|
25
|
+
expect(page).to have_css('div.panel.facet_limit', text: 'Language')
|
26
|
+
end
|
27
|
+
click_link 'Institution'
|
28
|
+
expect(page).to have_css('a.facet_select', text: 'Harvard', visible: true)
|
29
|
+
expect(page).to have_css('a.facet_select', text: 'Tufts', visible: true)
|
30
|
+
expect(page).to have_css('a.facet_select', text: 'MIT', visible: true)
|
31
|
+
expect(page).to have_css('a.facet_select', text: 'MassGIS', visible: true)
|
32
|
+
expect(page).to have_css('a.facet_select', text: 'Stanford', visible: true)
|
33
|
+
end
|
34
|
+
|
14
35
|
scenario 'hover on record should produce bounding box on map' do
|
15
36
|
# Needed to find an svg element on the page
|
37
|
+
visit catalog_index_path(f: { dct_provenance_s: ['Stanford']})
|
16
38
|
expect(Nokogiri::HTML.parse(page.body).css('path').length).to eq 0
|
17
39
|
find('.documentHeader', match: :first).trigger(:mouseover)
|
18
40
|
expect(Nokogiri::HTML.parse(page.body).css('path').length).to eq 1
|
@@ -32,4 +54,12 @@ feature 'Index view', js: true do
|
|
32
54
|
expect(find('.page_entries')).to have_content('1 - 10')
|
33
55
|
end
|
34
56
|
|
57
|
+
scenario 'clicking map search should retain current search parameters' do
|
58
|
+
visit '/?f[dc_subject_sm][]=polygon&f[dc_subject_sm][]=boundaries'
|
59
|
+
find('#map').double_click
|
60
|
+
within '#appliedParams' do
|
61
|
+
expect(page).to have_content('Subject polygon')
|
62
|
+
expect(page).to have_content('Subject boundaries')
|
63
|
+
end
|
64
|
+
end
|
35
65
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: geoblacklight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Darren Hardy
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-11-
|
12
|
+
date: 2014-11-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: blacklight
|
@@ -267,7 +267,6 @@ files:
|
|
267
267
|
- app/assets/javascripts/geoblacklight/modules/home.js
|
268
268
|
- app/assets/javascripts/geoblacklight/modules/item.js
|
269
269
|
- app/assets/javascripts/geoblacklight/modules/layer_opacity.js
|
270
|
-
- app/assets/javascripts/geoblacklight/modules/map-view.js
|
271
270
|
- app/assets/javascripts/geoblacklight/modules/results.js
|
272
271
|
- app/assets/stylesheets/geoblacklight/_geoblacklight.css.scss
|
273
272
|
- app/assets/stylesheets/geoblacklight/_styles.css.scss
|
@@ -282,12 +281,16 @@ files:
|
|
282
281
|
- app/controllers/wms_controller.rb
|
283
282
|
- app/helpers/geoblacklight_helper.rb
|
284
283
|
- app/views/catalog/_document_split.html.erb
|
284
|
+
- app/views/catalog/_facet_tag_item.html.erb
|
285
|
+
- app/views/catalog/_facet_tag_layout.html.erb
|
285
286
|
- app/views/catalog/_home_text.html.erb
|
286
287
|
- app/views/catalog/_index_split_default.html.erb
|
287
288
|
- app/views/catalog/_show_default.html.erb
|
288
289
|
- app/views/catalog/_show_header_default.html.erb
|
289
290
|
- app/views/catalog/_show_sidebar.html.erb
|
290
291
|
- app/views/catalog/_upper_metadata.html.erb
|
292
|
+
- app/views/catalog/index.html.erb
|
293
|
+
- app/views/shared/_header_navbar.html.erb
|
291
294
|
- config/initializers/rails_config.rb
|
292
295
|
- config/jetty.yml
|
293
296
|
- config/locales/geoblacklight.en.yml
|
@@ -304,7 +307,6 @@ files:
|
|
304
307
|
- lib/geoblacklight/download/kmz_download.rb
|
305
308
|
- lib/geoblacklight/download/shapefile_download.rb
|
306
309
|
- lib/geoblacklight/engine.rb
|
307
|
-
- lib/geoblacklight/fixtures_indexer.rb
|
308
310
|
- lib/geoblacklight/solr_document.rb
|
309
311
|
- lib/geoblacklight/version.rb
|
310
312
|
- lib/geoblacklight/view_helper_override.rb
|
@@ -318,7 +320,6 @@ files:
|
|
318
320
|
- spec/features/layer_inspection_spec.rb
|
319
321
|
- spec/features/layer_preview_spec.rb
|
320
322
|
- spec/features/split_view.html.erb_spec.rb
|
321
|
-
- spec/fixtures/test-berkeley-fields.json
|
322
323
|
- spec/lib/geoblacklight/controller_override_spec.rb
|
323
324
|
- spec/lib/geoblacklight/download/kmz_download_spec.rb
|
324
325
|
- spec/lib/geoblacklight/download/shapefile_download_spec.rb
|
@@ -367,7 +368,6 @@ test_files:
|
|
367
368
|
- spec/features/layer_inspection_spec.rb
|
368
369
|
- spec/features/layer_preview_spec.rb
|
369
370
|
- spec/features/split_view.html.erb_spec.rb
|
370
|
-
- spec/fixtures/test-berkeley-fields.json
|
371
371
|
- spec/lib/geoblacklight/controller_override_spec.rb
|
372
372
|
- spec/lib/geoblacklight/download/kmz_download_spec.rb
|
373
373
|
- spec/lib/geoblacklight/download/shapefile_download_spec.rb
|
@@ -1,211 +0,0 @@
|
|
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
|
-
var basemap = L.tileLayer('http://otile{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.png', {
|
34
|
-
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">',
|
35
|
-
maxZoom: 18,
|
36
|
-
subdomains: '1234' // see http://developer.mapquest.com/web/products/open/map
|
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 );
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require "#{Rails.root}/spec/fixtures/geoblacklight_schema"
|
2
|
-
|
3
|
-
class FixturesIndexer
|
4
|
-
def self.run
|
5
|
-
FixturesIndexer.new.run
|
6
|
-
end
|
7
|
-
def initialize
|
8
|
-
@solr = Blacklight.solr
|
9
|
-
end
|
10
|
-
def run
|
11
|
-
index
|
12
|
-
commit
|
13
|
-
end
|
14
|
-
def fixtures
|
15
|
-
@fixtures ||= JSON::parse(File.read("#{Rails.root}/spec/fixtures/geoblacklight_schema/transformed.json"))
|
16
|
-
# @fixtures ||= file_list.map do |file|
|
17
|
-
# fixture_template = ERB.new(File.read(file))
|
18
|
-
# rendered_template = fixture_template.result(binding)
|
19
|
-
# YAML::load rendered_template
|
20
|
-
# end
|
21
|
-
end
|
22
|
-
def file_list
|
23
|
-
# data = JSON::parse(File.read("#{Rails.root}/spec/fixtures/geoblacklight_schema/transformed.json"))
|
24
|
-
# @file_list ||= Dir["#{Rails.root}/spec/fixtures/solr_documents/*.yml"]
|
25
|
-
end
|
26
|
-
|
27
|
-
private
|
28
|
-
def index
|
29
|
-
@solr.add fixtures
|
30
|
-
end
|
31
|
-
def commit
|
32
|
-
@solr.commit
|
33
|
-
end
|
34
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
[
|
2
|
-
{
|
3
|
-
"uuid": "http://ark.cdlib.org/ark:/28722/bk0012h5z5n",
|
4
|
-
"dc_description_s": "Field boundaries for Napa County.",
|
5
|
-
"dc_format_s": "Shapefile",
|
6
|
-
"dc_identifier_s": "http://ark.cdlib.org/ark:/28722/bk0012h5z5n",
|
7
|
-
"dc_language_s": "English",
|
8
|
-
"dc_publisher_s": "UC Berkeley Libraries",
|
9
|
-
"dc_rights_s": "Public",
|
10
|
-
"dc_subject_sm": [
|
11
|
-
"boundaries",
|
12
|
-
"farming"
|
13
|
-
],
|
14
|
-
"dc_title_s": "Field Boundaries",
|
15
|
-
"dc_type_s": "Dataset",
|
16
|
-
"dct_references_s": "{\"http://www.opengis.net/def/serviceType/ogc/wfs\":\"http://gis.lib.berkeley.edu:8080/geoserver/wfs\",\"http://www.opengis.net/def/serviceType/ogc/wms\":\"http://gis.lib.berkeley.edu:8080/geoserver/wms\"}",
|
17
|
-
"dct_spatial_sm": [
|
18
|
-
"Napa County",
|
19
|
-
"American Canyon",
|
20
|
-
"Yountville",
|
21
|
-
"St Helena",
|
22
|
-
"Calistoga"
|
23
|
-
],
|
24
|
-
"dct_temporal_sm": [
|
25
|
-
"2007"
|
26
|
-
],
|
27
|
-
"dct_issued_s": "2000",
|
28
|
-
"dct_provenance_s": "Berkeley",
|
29
|
-
"georss_box_s": "38.157173 -122.647473 38.861126 -122.084131",
|
30
|
-
"georss_polygon_s": "38.861126 -122.647473 38.861126 -122.084131 38.157173 -122.084131 38.157173 -122.647473 38.861126 -122.647473",
|
31
|
-
"layer_slug_s": "berkeley-fields",
|
32
|
-
"layer_id_s": "UCB:fields",
|
33
|
-
"layer_geom_type_s": "Polygon",
|
34
|
-
"layer_modified_dt": "2014-05-27T18:09:33Z",
|
35
|
-
"solr_bbox": "-122.647473 38.157173 -122.084131 38.861126",
|
36
|
-
"solr_ne_pt": "38.861126,-122.084131",
|
37
|
-
"solr_sw_pt": "38.157173,-122.647473",
|
38
|
-
"solr_geom": "ENVELOPE(-122.647473, -122.084131, 38.861126, 38.157173)",
|
39
|
-
"solr_year_i": 2007,
|
40
|
-
"solr_issued_dt": "2000-01-01T00:00:00Z",
|
41
|
-
"solr_wms_url": "http://gis.lib.berkeley.edu:8080/geoserver/wms",
|
42
|
-
"solr_wfs_url": "http://gis.lib.berkeley.edu:8080/geoserver/wfs"
|
43
|
-
}
|
44
|
-
]
|