geoblacklight 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +7 -1
  3. data/app/assets/fonts/geoblacklight.eot +0 -0
  4. data/app/assets/fonts/geoblacklight.svg +57 -21
  5. data/app/assets/fonts/geoblacklight.ttf +0 -0
  6. data/app/assets/fonts/geoblacklight.woff +0 -0
  7. data/app/assets/javascripts/geoblacklight/modules/geosearch.js +52 -15
  8. data/app/assets/javascripts/geoblacklight/modules/home.js +9 -6
  9. data/app/assets/javascripts/geoblacklight/modules/results.js +19 -10
  10. data/app/assets/stylesheets/geoblacklight/_geoblacklight.css.scss +1 -0
  11. data/app/assets/stylesheets/geoblacklight/modules/geosearch.css.scss +29 -0
  12. data/app/assets/stylesheets/geoblacklight/modules/home.css.scss +1 -1
  13. data/app/assets/stylesheets/geoblacklight/modules/icons.css.scss +19 -4
  14. data/app/controllers/download_controller.rb +4 -0
  15. data/app/helpers/geoblacklight_helper.rb +8 -0
  16. data/app/views/catalog/_facet_tag_item.html.erb +1 -1
  17. data/app/views/catalog/_facet_tag_layout.html.erb +2 -1
  18. data/app/views/catalog/_home_text.html.erb +12 -8
  19. data/app/views/catalog/_show_default.html.erb +1 -1
  20. data/app/views/catalog/_show_sidebar.html.erb +3 -3
  21. data/app/views/catalog/_upper_metadata.html.erb +2 -2
  22. data/config/locales/geoblacklight.en.yml +1 -1
  23. data/lib/geoblacklight.rb +8 -1
  24. data/lib/geoblacklight/download.rb +10 -7
  25. data/lib/geoblacklight/download/geojson_download.rb +20 -0
  26. data/lib/geoblacklight/download/geotiff_download.rb +18 -0
  27. data/lib/geoblacklight/download/kmz_download.rb +1 -1
  28. data/lib/geoblacklight/download/shapefile_download.rb +1 -1
  29. data/lib/geoblacklight/exceptions.rb +6 -0
  30. data/lib/geoblacklight/references.rb +3 -1
  31. data/lib/geoblacklight/version.rb +1 -1
  32. data/lib/tasks/geoblacklight.rake +4 -0
  33. data/spec/features/home_page_spec.rb +2 -2
  34. data/spec/features/saved_searches_spec.rb +1 -2
  35. data/spec/helpers/geoblacklight_helpers_spec.rb +16 -0
  36. data/spec/lib/geoblacklight/download/geojson_download_spec.rb +14 -0
  37. data/spec/lib/geoblacklight/download/geotiff_download_spec.rb +15 -0
  38. data/spec/lib/geoblacklight/download_spec.rb +6 -6
  39. data/spec/lib/geoblacklight/references_spec.rb +2 -2
  40. metadata +12 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 567c21f3752e5b7c91f8dcb100a2c0d93333b48b
4
- data.tar.gz: a5cbdded6456236c0f516dafe9e76d34042ebc68
3
+ metadata.gz: 16b55f272d121ee2d812f798e81bb54c81c6cd26
4
+ data.tar.gz: 50704f9e6eed51f0c8ef30d349a8985ba5a12b64
5
5
  SHA512:
6
- metadata.gz: fa9384f5fdf9c6c19ae43789c79afb6bafb92ed2fe3425ef2694a81887f60d9e1ae833faa437c92f8052ec3065d728094884ab355da264fa74c1614809f2207d
7
- data.tar.gz: bcc7b6e80ae7ee42d17ec94b5c448c488ea2c5b266f10568638b3639b0b1716e8fca9f78bd690b79c6e594ee8303cb0bc12963ff2b879f36967c8f62d239e7ce
6
+ metadata.gz: 292aab24138e8c5d7ac59a8daae5075cdb8d7c4d381472093ca54153deb9847b22161206665a83e46b80c4da85ae086af490e29b413f30e986032715a370e9b1
7
+ data.tar.gz: 562da646f3e4e8d7507de4007b896e0c52b7310b9551deb4f8e6d7fc318c898d13e7ae629b6d1cf7cb1c0bf20d2efa625dbf0e415efc11cd1815f49d0a46cfb9
data/Rakefile CHANGED
@@ -1,4 +1,9 @@
1
- require "bundler/gem_tasks"
1
+ begin
2
+ require 'bundler/gem_tasks'
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
2
7
 
3
8
  BLACKLIGHT_JETTY_VERSION = '4.10.0'
4
9
  ZIP_URL = "https://github.com/projectblacklight/blacklight-jetty/archive/v#{BLACKLIGHT_JETTY_VERSION}.zip"
@@ -16,6 +21,7 @@ desc "Load fixtures"
16
21
  task :fixtures => ['engine_cart:generate'] do
17
22
  EngineCart.within_test_app do
18
23
  system "rake geoblacklight:solr:seed RAILS_ENV=test"
24
+ system 'rake geoblacklight:downloads:mkdir'
19
25
  end
20
26
  end
21
27
 
Binary file
@@ -1,13 +1,13 @@
1
1
  <?xml version="1.0" standalone="no"?>
2
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
3
  <!--
4
- 2014-11-14: Created.
4
+ 2014-11-26: Created.
5
5
  -->
6
6
  <svg xmlns="http://www.w3.org/2000/svg">
7
7
  <metadata>
8
- Created by FontForge 20120731 at Fri Nov 14 11:24:15 2014
9
- By Eliot Jordan
10
- Created by Eliot Jordan with FontForge 2.0 (http://fontforge.sf.net)
8
+ Created by FontForge 20120731 at Wed Nov 26 11:31:08 2014
9
+ By Jack Reed
10
+ Created by Jack Reed with FontForge 2.0 (http://fontforge.sf.net)
11
11
  </metadata>
12
12
  <defs>
13
13
  <font id="geoblacklight" horiz-adv-x="512" >
@@ -22,9 +22,19 @@ Created by Eliot Jordan with FontForge 2.0 (http://fontforge.sf.net)
22
22
  bbox="-0.12793 -82.7842 512.128 487.36"
23
23
  underline-thickness="25.6"
24
24
  underline-position="-51.2"
25
- unicode-range="U+F101-F111"
25
+ unicode-range="U+F101-F117"
26
26
  />
27
27
  <missing-glyph />
28
+ <glyph glyph-name="uniF113" unicode="&#xf113;"
29
+ d="M170.666 213.334c0 35.3428 28.6455 64 64 64c35.3535 0 64 -28.6572 64 -64c0 -35.3438 -28.6465 -64 -64 -64c-35.3545 0 -64 28.6562 -64 64zM277.332 213.334c0 23.5312 -19.1465 42.666 -42.666 42.666s-42.666 -19.1348 -42.666 -42.666
30
+ c0 -23.5332 19.1445 -42.668 42.666 -42.668c23.5195 0 42.666 19.1348 42.666 42.668zM276.187 334.312c37.25 -12.7812 66.667 -42.208 79.458 -79.458l-21.875 -2.73926c-10.834 27.5947 -32.7285 49.4893 -60.3115 60.3223zM398.646 260.229l-21.335 -2.66699
31
+ c-14.5615 46.833 -51.5811 83.8652 -98.415 98.417l2.66797 21.3438c56.5176 -16.1338 100.957 -60.583 117.082 -117.094zM170.666 -12.2715c-98.458 27.8857 -170.666 118.22 -170.666 225.605c0 129.604 105.062 234.666 234.666 234.666
32
+ c129.604 0 234.668 -105.062 234.668 -234.666c0 -22.2188 -3.29297 -43.625 -9.0625 -64h-44.8125c7.12305 20.0518 11.207 41.5303 11.207 64c0 105.864 -86.125 192 -192 192c-105.874 0 -192 -86.1357 -192 -192c0 -83.3975 53.542 -154.354 128 -180.803v-44.8027v0z
33
+ M185.916 119.386c-4.39648 -5.82422 -7.91602 -12.2412 -10.458 -19.209c-28.7295 15.0635 -51.1045 40.5322 -61.7715 71.6143l21.875 2.74023c9.45801 -24.0723 27.627 -43.3125 50.3545 -55.1455zM92.0215 169.092c12.4785 -40.1328 41.5205 -72.9355 79.0205 -90.6953
34
+ c-0.0615234 -1.26074 -0.375 -2.44922 -0.375 -3.72949v-19.2178c-48.2285 19.5723 -85.5 60.333 -99.9785 110.968zM458.541 20.0098c0 -14.5918 -6.18848 -25.5605 -19.542 -25.5605h-15.3545v53.7705h12.291c16.4805 -0.000976562 22.6055 -10.376 22.6055 -28.21z
35
+ M308.124 20.0098c0 -14.6758 -6.22949 -25.5605 -19.5205 -25.5605h-15.376v53.7705h12.3125c16.501 -0.000976562 22.584 -10.376 22.584 -28.21zM480 106.666c17.666 0 32 -14.3213 32 -32v-106.666c0 -17.6768 -14.334 -32 -32 -32h-234.666
36
+ c-17.667 0 -32 14.3232 -32 32v106.666c0 17.6787 14.333 32 32 32h234.666zM289.813 -21.332c23.167 0 35.54 17.5605 35.54 43.1455c0 27.2061 -14.375 42.1865 -35.54 42.1865h-33.8135v-85.332h33.8135zM373.729 -21.332l25.9805 85.332h-17.7285l-17.709 -60h-0.166016
37
+ l-17.459 60h-17.6875l25.3545 -85.332h19.415zM440.209 -21.332c23.166 0 35.541 17.5605 35.541 43.1455c0 27.2061 -14.3535 42.1865 -35.541 42.1865h-33.793v-85.332h33.793z" />
28
38
  <glyph glyph-name="uniF10D" unicode="&#xf10d;"
29
39
  d="M0 448zM437.024 373.024c48.3516 -48.3525 74.9756 -112.641 74.9756 -181.024s-26.624 -132.672 -74.9756 -181.024c-48.3525 -48.3516 -112.641 -74.9756 -181.024 -74.9756s-132.672 26.624 -181.024 74.9756c-48.3516 48.3525 -74.9756 112.641 -74.9756 181.024
30
40
  s26.624 132.672 74.9756 181.024c48.3525 48.3516 112.641 74.9756 181.024 74.9756s132.672 -26.624 181.024 -74.9756zM414.384 33.5996c31.5361 31.5361 52.4961 70.8008 61.1357 113.536c-6.73535 -9.91992 -13.1836 -13.5996 -17.168 8.6084
@@ -35,6 +45,22 @@ c14.9756 6.54395 -24.4326 25.5039 -3.13672 22.0635c10.4648 0.576172 45.6641 12.9
35
45
  c7.95215 3.4082 15.5684 5.26367 21.376 4.73633c12.0322 -13.8887 34.2725 -16.3047 35.4404 1.66406c-29.792 14.2715 -62.6406 21.8076 -96.6406 21.8076c-48.8154 0 -95.2314 -15.5039 -133.647 -44.1924c10.3203 -4.73535 16.1914 -10.624 6.24023 -18.1436
36
46
  c-7.72852 -23.0244 -39.0889 -53.9365 -66.6084 -49.5684c-14.2881 -24.6396 -23.7119 -51.8076 -27.7275 -80.2715c23.0557 -7.63184 28.3672 -22.7207 23.4238 -27.7764c-11.7441 -10.2402 -18.96 -24.7676 -22.6885 -40.6562
37
47
  c7.50391 -45.9199 29.0879 -88.2393 62.6406 -121.792c42.3037 -42.3037 98.5596 -65.5996 158.384 -65.5996s116.08 23.2959 158.384 65.5996h-0.0322266z" />
48
+ <glyph glyph-name="uniF115" unicode="&#xf115;"
49
+ d="M510.24 200.88c9.75195 -56.752 -31.0322 -100.376 -50.7998 -148.544c-6.28809 -15.208 -11.792 -35.6318 -10.8008 -53.2236c0 0 -161.655 0 -190.456 -0.0166016h-2.19141h-2.2002c-28.7998 0.0166016 -190.472 0.0166016 -190.472 0.0166016
50
+ c1 17.5918 -4.49609 38.0156 -10.7686 53.2236c-19.7842 48.168 -60.5518 91.7842 -50.8076 148.528c5.42383 31.5117 30.8877 53.4639 62.0479 55.9678c55.6719 4.48828 103.736 -25.3203 157.728 -34.8477c4.32812 -0.744141 10.1367 8.43945 15.3926 13.6953
51
+ c-25.0557 18.8887 -21.6562 55.8799 7.35156 71.8721c2.00879 2.2959 1.27246 23.6006 0.136719 24.5684c-2.36816 1.96777 -20.8564 -1.58398 -23.4961 0.704102c-2.61621 2.2793 -2.08789 24.4717 -0.416016 26.6074c1.6875 2.13672 22.5273 -0.151367 23.7041 1.27246
52
+ c1.17578 1.45605 -0.576172 21.3994 1.3916 22.9844c1.40039 1.12793 7.19238 1.23926 10.416 1.21582c3.21582 0.03125 9 -0.0878906 10.3916 -1.21582c1.95996 -1.57617 0.216797 -21.5283 1.38477 -22.9844c1.19141 -1.42383 22.0312 0.864258 23.7119 -1.27246
53
+ c1.67969 -2.12793 2.21582 -24.3281 -0.416016 -26.584c-2.64062 -2.30371 -21.1201 1.26465 -23.5039 -0.704102c-1.14453 -0.967773 -1.87207 -22.2871 0.12793 -24.5752c29.0156 -15.9844 32.4238 -52.9922 7.38379 -71.8721
54
+ c5.22363 -5.24805 11.04 -14.4482 15.3604 -13.6963c54.0156 9.55176 102.071 39.3359 157.752 34.8477c31.168 -2.51953 56.6152 -24.4561 62.0479 -55.9678zM232.968 75.2236c3.48047 19.8887 -4.8877 59.3447 -13.2715 77.8721
55
+ c-17.9521 39.7842 -7.07227 37.3359 -12.04 40.4082c-20.2402 12.5762 -54.5762 23.0322 -80.6162 30.7764c-24.8564 7.37598 -49.0957 12.3594 -72.1836 3.55176c-37.8965 -14.4561 -29.1924 -62.6719 -14.7529 -92.1523
56
+ c19.6484 -40.0801 52.7441 -97.9756 79.4404 -105.472c14.3125 -4 23.2881 1.94434 23.248 13.5039c-0.0244141 9.0957 -1.53613 17.9844 -7.25586 22.3359c0 0 -27.584 0.175781 -30.4082 2.64062c-2.83984 2.46387 -5.04785 19.0156 -4.53613 22.3516
57
+ c0.520508 3.32031 30.0566 -2.7041 31.624 0.496094c1.56836 3.20801 -7.5918 22.04 -5.95215 25.248c1.6084 3.16016 23.9199 -0.167969 23.9199 -0.167969c2.88867 -1.38379 5.52051 -23.9365 8.32031 -26.248c2.83203 -2.32812 23.9277 0.807617 26.5605 -1.49609
58
+ c2.64746 -2.36816 7.15918 -20.5918 5.49512 -22.8799c-1.66309 -2.33594 -25.0234 1.23145 -26.9434 -1.26465c-2.27246 -7.35938 4.80762 -19.8633 13.4873 -27.4316c6.28027 -5.52832 13.2246 -8.80762 21.8564 -8.75977
59
+ c13.1602 0.103516 28.9922 18.1914 34.0078 46.6875zM392.448 30.2002c-14.3203 -4 -23.2881 1.94336 -23.2646 13.5039c0.0400391 9.0957 1.53613 17.9844 7.27246 22.3359c0 0 27.584 0.175781 30.4082 2.63965c2.81543 2.46387 5.04004 19.0166 4.52734 22.3604
60
+ c-0.511719 3.31152 -30.0713 -2.71191 -31.624 0.496094c-1.55957 3.20801 7.59277 22.04 5.97656 25.248c-1.65625 3.16016 -23.9365 -0.167969 -23.9365 -0.167969c-2.8877 -1.38379 -5.51172 -23.9365 -8.33594 -26.248
61
+ c-2.82324 -2.30371 -23.9121 0.832031 -26.5596 -1.49609c-2.63965 -2.36816 -7.13574 -20.5918 -5.48047 -22.8799c1.64844 -2.33594 25.0166 1.22363 26.9521 -1.26465c2.26465 -7.35938 -4.81543 -19.8555 -13.5039 -27.4316
62
+ c-6.28027 -5.51953 -13.2002 -8.80762 -21.8477 -8.75977c-13.168 0.103516 -28.9844 18.1914 -33.9922 46.6875c-3.50391 19.8799 4.87207 59.3447 13.2158 77.8643c17.9766 39.7842 7.08789 37.3359 12.04 40.4082c20.248 12.5762 54.6006 23.0322 80.624 30.7764
63
+ c24.8643 7.36719 49.0879 12.376 72.2002 3.55176c37.8799 -14.4561 29.168 -62.6719 14.7363 -92.1523c-19.6328 -40.0801 -52.7363 -97.9756 -79.4082 -105.472z" />
38
64
  <glyph glyph-name="uniF107" unicode="&#xf107;"
39
65
  d="M24.3184 346.672v77.0098h77.0098v-77.0098h-77.0098zM0 322.354h125.646v125.646h-125.646v-125.646zM410.671 346.672v77.0098h77.0117v-77.0098h-77.0117zM386.353 322.354h125.648v125.646h-125.648v-125.646zM24.3184 -39.6807v77.0117h77.0098v-77.0117h-77.0098z
40
66
  M0 -63.999h125.646v125.648h-125.646v-125.648zM410.671 -39.6807v77.0098h77.0117v-77.0098h-77.0117zM386.353 -63.999h125.648v125.646h-125.648v-125.646zM113.487 409.495v-48.6367h285.024v48.6367h-285.024zM113.487 8.23633v-48.6367h285.024v48.6367h-285.024z
@@ -44,8 +70,16 @@ d="M323.564 341.075c0 20.1901 -7.1429 37.4281 -21.4287 51.7139s-31.5241 21.4287
44
70
  c14.2858 -14.2852 31.5238 -21.4277 51.7139 -21.4277c20.1908 0 37.429 7.14258 51.7148 21.4277c14.2858 14.2858 21.4287 31.5241 21.4287 51.7148zM396.707 341.075c0 -20.7617 -3.1429 -37.8092 -9.42871 -51.1426l-104 -221.144
45
71
  c-3.04753 -6.28581 -7.57129 -11.238 -13.5713 -14.8564c-6 -3.61914 -12.4287 -5.42871 -19.2861 -5.42871c-6.85677 0 -13.2852 1.80957 -19.2852 5.42871c-6 3.61849 -10.4287 8.57064 -13.2861 14.8564l-104.285 221.144
46
72
  c-6.28581 13.3333 -9.42871 30.3809 -9.42871 51.1426c0 40.3809 14.2858 74.8571 42.8574 103.429c28.571 28.571 63.0469 42.8564 103.428 42.8564c40.3815 0 74.8577 -14.2855 103.429 -42.8564c28.5716 -28.5716 42.8574 -63.0479 42.8574 -103.429z" />
47
- <glyph glyph-name="uniF10A" unicode="&#xf10a;"
48
- d="M0 448zM0 384h512v-416h-512v416zM480 0v352h-448v-352h448zM352 272c0 26.5117 21.4883 48 48 48s48 -21.4883 48 -48s-21.4883 -48 -48 -48s-48 21.4883 -48 48zM448 32h-384l96 256l128 -160l64 48z" />
73
+ <glyph glyph-name="uniF112" unicode="&#xf112;"
74
+ d="M185.916 119.387c-4.39648 -5.8252 -7.91602 -12.2422 -10.458 -19.209c-28.7295 15.0625 -51.1045 40.5303 -61.7715 71.6133l21.875 2.74023c9.45801 -24.0723 27.627 -43.3125 50.3545 -55.1445zM92.0215 169.093c12.4785 -40.1338 41.5205 -72.9365 79.0205 -90.6963
75
+ c-0.0615234 -1.26074 -0.375 -2.4502 -0.375 -3.73047v-19.2178c-48.2285 19.5732 -85.5 60.333 -99.9785 110.969zM398.646 260.229l-21.333 -2.66504c-14.5625 46.833 -51.582 83.8643 -98.417 98.417l2.66699 21.3428c56.5205 -16.1367 100.955 -60.584 117.083 -117.095
76
+ zM276.188 334.312c37.25 -12.7803 66.665 -42.2061 79.458 -79.458l-21.875 -2.73926c-10.835 27.5947 -32.7305 49.4893 -60.3125 60.3223zM234.667 149.334c-35.3555 0 -64 28.6562 -64 64s28.6445 64 64 64c35.3545 0 64 -28.6562 64 -64
77
+ c-0.000976562 -35.3438 -28.6455 -64 -64 -64zM234.667 170.666c23.5215 0 42.667 19.1348 42.667 42.667c0 23.5303 -19.1455 42.667 -42.667 42.667c-23.5225 0 -42.667 -19.1357 -42.667 -42.667c0 -23.5322 19.1465 -42.667 42.667 -42.667zM403.875 46.9805
78
+ c16.3535 0 25.0215 -7.80273 25.0215 -26.959c0 -14.377 -7.14648 -24.4492 -21.6465 -24.4492h-17v51.4082h13.625zM512 74.666v-106.666c0 -17.6768 -14.334 -32 -32 -32h-234.667c-17.666 0 -32 14.3232 -32 32v106.666c0 17.6787 14.334 32 32 32h234.667
79
+ c17.666 0 32 -14.3213 32 -32zM358.146 11.9062h-18.4609c-1.45703 -10.9062 -7.9375 -18.2812 -19.7051 -18.2812c-15.7295 0 -23.5645 11.8438 -23.5645 27.3018c0 15.9287 7.5625 27.9883 23.5645 27.9883c10.123 0 17.7705 -6.82129 18.9775 -14.2705h18.46
80
+ c-2.27148 18.9912 -18.5439 29.3555 -37.4395 29.3555c-26.3965 0 -42.6455 -18.4688 -42.6455 -43.0732c0 -24.5293 16.6475 -42.2598 42.6455 -42.2598c22.4385 0 36.418 13.7402 38.168 33.2393zM448 21.7402c0 25.8525 -15.791 40.3105 -39.3965 40.3105h-37.4375
81
+ v-81.5615h37.4375c25.0215 0.000976562 39.3965 16.167 39.3965 41.251zM42.667 213.333c0 -83.3965 53.541 -154.354 128 -180.802v-44.8027c-98.459 27.8848 -170.667 118.219 -170.667 225.604c0 129.605 105.062 234.667 234.667 234.667
82
+ c129.604 0 234.667 -105.062 234.668 -234.667c0 -22.2188 -3.29199 -43.626 -9.0625 -64h-44.8125c7.12402 20.0527 11.207 41.5312 11.207 64c0 105.865 -86.125 192 -192 192s-192 -86.1348 -192 -192z" />
49
83
  <glyph glyph-name="uniF111" unicode="&#xf111;"
50
84
  d="M236.241 -53.5957c-39.2422 19.7959 -84 51.4355 -114.856 81.1934c-67.5645 65.1572 -106.971 141.55 -119.299 231.273c-2.74121 19.9512 -1.61914 107.34 1.52637 118.825l1.40332 5.12305l15.5615 -5.44434c30.9717 -10.8359 71.543 -14.4951 101.728 -9.1748
51
85
  c43.5264 7.67285 86.2246 31.6787 117.77 66.2139c6.83691 7.4834 13.2295 13.6074 14.207 13.6074s4.1875 -2.86133 7.13184 -6.3584c10.2627 -12.1855 32.1816 -31.8555 45.915 -41.2041c39.8291 -27.1123 85.4346 -38.8242 131.687 -33.8174
@@ -61,6 +95,14 @@ c3.10742 0 9.52832 11.0459 17.7236 26.1514c17.0039 31.3496 27.6318 59.1309 36.16
61
95
  M160.501 -0.358398c28.1416 -21.1934 53.5537 -37.5586 77.5508 -49.9316c7.70117 -3.97168 14.251 -7.27832 15.9443 -7.27832c2.50488 0 15.248 6.43652 30.0918 14.5684c28.1689 15.4277 61.5088 39.1455 92.6777 65.9229l8.38379 7.2041l-131.033 94.418
62
96
  l-64.5205 -46.4805c-34.7969 -25.0664 -64.3545 -45.7471 -64.2881 -47.8936c0.105469 -3.06934 18.708 -18.1143 35.1934 -30.5293zM161.964 1.58398c-14.8516 11.1846 -31.0029 24.9629 -33.8848 28.3955c5.11133 4.125 31.376 23.375 62.9375 46.1113l63.0996 45.457
63
97
  l127.106 -91.5889l-6.04199 -5.19141c-31.0557 -26.6807 -64.2979 -50.3193 -92.2607 -65.6357c-14.2607 -7.81152 -26.8184 -13.8145 -28.8838 -14.2617c-1.31836 0.357422 -7.87695 3.39355 -14.8701 7.00098c-23.8408 12.2939 -49.1416 28.5801 -77.2021 49.7129z" />
98
+ <glyph glyph-name="uniF116" unicode="&#xf116;"
99
+ d="M479.392 117.504h31.96v-77.6475h-152.151v77.6475h27.3359l-46.6963 77.624l-18.1035 -30.1123h17.3594v-77.6318h-166.823v77.6318h17.3594l-18.1035 30.1123l-46.6963 -77.624h27.3359v-77.6475h-152.168v77.6475h31.9756l89.6406 148.992h-24.6885v77.6475h149.2
100
+ v-77.6475h-24.6875l34.2314 -56.9199l34.2559 56.9199h-24.6875v77.6475h149.2v-77.6475h-24.6885zM404.472 334.192h-129.279v-57.752h32.3438l-51.8643 -86.168l-51.8398 86.168h32.3359v57.752h-129.288v-57.752h32.3359l-101.624 -168.904h-27.6396v-57.7363h132.264
101
+ v57.7363h-34.9922l64.2959 106.88l35.7129 -59.3682h-25.0244v-57.7275h146.928v57.7275h-25.0078l35.7119 59.3682l64.2881 -106.88h-34.9844v-57.7363h132.265v57.7363h-27.6484l-101.616 168.904h32.3281v57.752zM394.512 324.24v-37.8398h-39.9834l113.6 -188.816
102
+ h23.3203v-37.832h-112.36v37.832h42.6396l-81.8955 136.144l-53.3125 -88.624h32.6562v-37.8154h-127.016v37.8154h32.6719l-53.3125 88.624l-81.9033 -136.144h42.6396v-37.832h-112.352v37.832h23.3115l113.592 188.816h-39.9756v37.8398h109.376v-37.8398h-39.9922
103
+ l69.4482 -115.44l69.4639 115.44h-39.9922v37.8398h109.376z" />
104
+ <glyph glyph-name="uniF104" unicode="&#xf104;"
105
+ d="M107.952 448h-107.952v-512h107.952v512zM283.759 448h-107.951v-348.53h107.951v348.53zM459.566 448h-107.952v-512h107.952v512z" />
64
106
  <glyph glyph-name="uniF106" unicode="&#xf106;"
65
107
  d="M88.1523 256.52h41.7598l6.42383 -225.407h-53.7998l5.61621 225.407v0zM48.7842 23.0078h414.432v-29.0234h24.832v-28.9766h24.0801v-29.0078h-512.256v28.9922h24.0801v28.9922h24.832v29.0234v0zM484.824 319.456v0v-17.7285h-457.664v17.7285l228.824 108.424z
66
108
  M71.2725 293.632h369.447v-29h-369.447v29v0zM381.272 256.52h41.7754l6.42383 -225.407h-53.8154zM283.56 256.52h41.7686l6.42383 -225.407h-53.8076l5.61523 225.407v0zM185.856 256.52h41.7676l6.42383 -225.424h-53.8076z" />
@@ -69,6 +111,9 @@ d="M0 448zM0 352l160 64v-384l-160 -64v384zM352 352v-384l-160 53.3281v384zM512 41
69
111
  <glyph glyph-name="uniF103" unicode="&#xf103;"
70
112
  d="M18.7842 429.216h216.285h216.285v-162.951c0 -215.741 -136.625 -302.743 -216.285 -349.049c-79.6611 46.3057 -216.285 133.308 -216.285 349.049v162.951zM120.218 383.598v-45.082h14.9609v-215.748h-14.9609v-45.082h77.2832v45.082h-14.9609v84.1934h105.057
71
113
  v-84.1934h-14.959v-45.082h77.2822v45.082h-14.96v215.748h14.96v45.082h-77.2822v-45.082h14.96v-84.1934h-105.057v84.1934h14.96v45.082h-77.2832z" />
114
+ <glyph glyph-name="uniF117" unicode="&#xf117;"
115
+ d="M47.7275 91.7842c-1.33594 17.9199 0 43.3682 0 55.6875l26.1602 300.528h98.3604l-27.376 -302.848c-5.87207 -66.168 20.168 -112.336 85.3359 -112.336c66.5518 0 102.832 47.1279 108.48 105.664l27.7031 309.52h98.4805l-27.5039 -305.6
116
+ c-10.168 -118.152 -88.5039 -206.4 -214.376 -206.4c-98.5205 0 -162.128 63.8076 -175.265 155.784z" />
72
117
  <glyph glyph-name="uniF101" unicode="&#xf101;"
73
118
  d="M7.83594 46.3564c0.90625 2.98145 3.26367 7.5498 5.60938 10.5586c4.52148 5.7959 11.9014 12.0781 21.9326 18.6719c15.4697 10.168 29.9355 16.6025 48.3701 21.5117c26.7402 7.12305 55.084 7.71973 79.5498 7.71973l1.30664 -0.00195312
74
119
  c32.5635 -0.0292969 102.191 -4.13379 153.03 -7.13184c26.6807 -1.57031 47.7539 -2.81445 55.0947 -2.96484l1.31348 -0.03125c2.14844 -0.0556641 5.73926 -0.149414 10.0479 -0.149414c31.0244 0 41.6182 4.85645 46.4004 7.60254
@@ -96,22 +141,13 @@ c0 -0.00195312 5.03711 11.5781 0.0878906 14.3076z" />
96
141
  <glyph glyph-name="uniF108" unicode="&#xf108;"
97
142
  d="M410.671 346.672v77.0098h77.0117v-77.0098h-77.0117zM386.353 322.354h125.648v125.646h-125.648v-125.646zM24.3184 -39.6807v77.0117h77.0098v-77.0117h-77.0098zM0 -63.999h125.646v125.648h-125.646v-125.648zM96.291 66.6865l34.3926 -34.3926l285.022 285.022
98
143
  l-34.3926 34.3926z" />
99
- <glyph glyph-name="uniF104" unicode="&#xf104;"
100
- d="M107.952 448h-107.952v-512h107.952v512zM283.759 448h-107.951v-348.53h107.951v348.53zM459.566 448h-107.952v-512h107.952v512z" />
144
+ <glyph glyph-name="uniF10A" unicode="&#xf10a;"
145
+ d="M0 448zM0 384h512v-416h-512v416zM480 0v352h-448v-352h448zM352 272c0 26.5117 21.4883 48 48 48s48 -21.4883 48 -48s-21.4883 -48 -48 -48s-48 21.4883 -48 48zM448 32h-384l96 256l128 -160l64 48z" />
101
146
  <glyph glyph-name="uniF102" unicode="&#xf102;"
102
- d="M92.2803 367.832l71.1113 70.6562h187.185l69.1436 -70.7207l-0.015625 -99.8477h-123.456v46.6396h-75.0078v-67.6875h135.527l62.9521 -60.7998v-183.864l-61.7998 -61.7119h-203.464l-62.04 62.5283v99.3438h133.392v-41.1602h75.9121v63.1123l-147.655 -0.0166016
103
- l-61.7842 61.7998v181.729zM100.272 364.168v-174.848l56.9512 -56.9766s137.712 0 152.48 0.0078125v-79.5596c-12.9043 0 -79.4404 0 -92.3604 -0.0244141v41.168h-116.943v-87.6396l57.1279 -57.7842h196.783l56.9521 56.96v177.08l-58.2637 55.9121h-140.24
104
- c0.0078125 12.6318 0.0078125 71.4883 0 84.1279h91.4727v-46.6396h107.031v88.168l-64.3115 65.9355h-180.488zM169.832 421.232h173.776l59.4561 -61.1602l-0.0166016 -76.4805h-90.5518v46.6406h-107.937l0.00878906 -100.601h144.976l53.5205 -51l-0.0166016 -170.296
105
- l-52.0635 -52.1758h-190.088l-52.2324 53.0234v75.9199h100.479v-41.1514h108.824l0.0166016 96.0322h-157.312l-52.1201 52.1357v167.952zM287.544 162.936c0 -0.03125 -0.0634766 -0.167969 -0.328125 -0.463867c0.12793 0.152344 0.255859 0.320312 0.328125 0.463867z
106
- M92.2803 367.832l71.1201 70.6562h187.176l69.1436 -70.7207l-0.015625 -99.8477h-123.464v46.6396h-75v-67.6875h135.527l62.9521 -60.7998v-183.864l-61.792 -61.7119h-203.472l-62.04 62.5283v99.3438h133.392v-41.1602h75.9199v63.1123l-147.663 -0.0166016
107
- l-61.7842 61.7998v181.729zM100.264 364.168v-174.848l56.9521 -56.9766s137.72 0 152.488 0.0078125v-79.5596c-12.9121 0 -79.4404 0 -92.3604 -0.0244141v41.168h-116.943v-87.6396l57.1279 -57.7842h196.792l56.9434 56.96v177.08l-58.2559 55.9121h-140.24
108
- c0.00878906 12.6318 0.00878906 71.4883 0 84.1279h91.4805v-46.6396h107.024v88.168l-64.3125 65.9355h-180.496zM169.832 421.232h173.768l59.4561 -61.1602l-0.015625 -76.4805h-90.5361v46.6406h-107.944l0.00878906 -100.601h144.976l53.5117 -51l-0.015625 -170.296
109
- l-52.0557 -52.1758h-190.088l-52.2402 53.0234v75.9199h100.487v-41.1514h108.824l0.0166016 96.0322h-157.312l-52.1279 52.1357v167.952zM287.552 162.936c0 -0.03125 -0.0634766 -0.167969 -0.34375 -0.463867c0.143555 0.152344 0.272461 0.320312 0.34375 0.463867z
110
- M92.2803 367.832l71.1113 70.6562h187.185l69.1436 -70.7207l-0.015625 -99.8477h-123.456v46.6396h-75.0078v-67.6875h135.527l62.9521 -60.7998v-183.864l-61.7998 -61.7119h-203.464l-62.04 62.5283v99.3438h133.392v-41.1602h75.9121v63.1123l-147.655 -0.0166016
111
- l-61.7842 61.7998v181.729zM100.272 364.168v-174.848l56.9512 -56.9766s137.712 0 152.48 0.0078125v-79.5596c-12.9043 0 -79.4404 0 -92.3604 -0.0244141v41.168h-116.943v-87.6396l57.1279 -57.7842h196.783l56.9521 56.96v177.08l-58.2637 55.9121h-140.24
147
+ d="M92.2803 367.832l71.1113 70.6562h187.185l69.1436 -70.7207l-0.015625 -99.8477h-123.456v46.6396h-75.0078v-67.6875h135.527l62.9521 -60.7998v-183.872l-61.7998 -61.7041h-203.464l-62.04 62.5283v99.3438h133.392v-41.168h75.9121v63.1201l-147.655 -0.0166016
148
+ l-61.7842 61.8086v181.72zM100.272 364.168v-174.848l56.9512 -56.9766s137.712 0 152.48 0.0078125v-79.5518c-12.9043 0 -79.4404 0 -92.3604 -0.0322266v41.168h-116.943v-87.6396l57.1279 -57.7842h196.783l56.9521 56.9521v177.08l-58.2637 55.9199h-140.24
112
149
  c0.0078125 12.6318 0.0078125 71.4883 0 84.1279h91.4727v-46.6396h107.031v88.168l-64.3115 65.9355h-180.488zM169.832 421.232h173.776l59.4561 -61.1602l-0.0166016 -76.4805h-90.5518v46.6406h-107.937l0.00878906 -100.601h144.976l53.5205 -51l-0.0166016 -170.296
113
- l-52.0635 -52.1758h-190.088l-52.2324 53.0234v75.9199h100.479v-41.1514h108.824l0.0166016 96.0322h-157.312l-52.1201 52.1357v167.952zM287.544 162.936c0 -0.03125 -0.0634766 -0.167969 -0.328125 -0.463867c0.12793 0.152344 0.255859 0.320312 0.328125 0.463867z
114
- " />
150
+ l-52.0635 -52.1758h-190.088l-52.2324 53.0234v75.9287h100.479v-41.1602h108.824l0.0166016 96.0322h-157.312l-52.1201 52.1357v167.952z" />
115
151
  <glyph glyph-name="uniF105" unicode="&#xf105;"
116
152
  d="M73.3057 366.146v-116.948h-73.3057v198.802h458.019v-198.802h-72.0498v116.314h-97.7275v-357.704h78.6797v-71.8086h-276.963v71.8086h78.6846v358.338h-95.3369z" />
117
153
  </font>
Binary file
Binary file
@@ -22,38 +22,71 @@
22
22
  L.Control.GeoSearch = L.Control.extend({
23
23
 
24
24
  options: {
25
- button: false
25
+ dynamic: true,
26
+ baseUrl: '',
27
+ searcher: function() {
28
+ History.pushState(null, document.title, this.getSearchUrl());
29
+ },
30
+ delay: 800,
31
+ staticButton: '<a class="btn btn-primary">Redo Search Here <span class="glyphicon glyphicon-repeat"></span></a>',
32
+ dynamicButton: '<label><input type="checkbox" checked> Search When I Move the Map</label>'
26
33
  },
27
34
 
28
- initialize: function(searcher, options) {
35
+ initialize: function(options) {
29
36
  L.Util.setOptions(this, options);
30
- this._searcher = L.Util.bind(searcher, this);
37
+ this.$staticButton = $(this.options.staticButton);
38
+ this.$dynamicButton = $(this.options.dynamicButton);
31
39
  },
32
40
 
33
41
  onAdd: function(map) {
34
- var container = L.DomUtil.create('div', 'leaflet-bar leaflet-control');
42
+ var $container = $('<div class="leaflet-control search-control"></div>'),
43
+ staticSearcher, dynamicSearcher;
35
44
  this._map = map;
36
45
 
37
- if (this.options.button === true) {
38
- this.link = L.DomUtil.create('a', 'leaflet-bar-part search-control',
39
- container);
40
- this.link.href = '';
41
- this.icon = L.DomUtil.create('i', 'glyphicon glyphicon-search',
42
- this.link);
46
+ staticSearcher = L.Util.bind(function() {
47
+ this.$staticButton.hide();
48
+ this.$dynamicButton.show();
49
+ this.options.searcher.apply(this);
50
+ }, this);
51
+
52
+ dynamicSearcher = GeoBlacklight.debounce(function() {
53
+ if (this.options.dynamic) {
54
+ this.options.searcher.apply(this);
55
+ }
56
+ }, this.options.delay);
57
+
58
+ this.$staticButton.on('click', staticSearcher);
59
+
60
+ $container.on("change", "input[type=checkbox]",
61
+ L.Util.bind(function() {
62
+ this.options.dynamic = !this.options.dynamic;
63
+ }, this)
64
+ );
65
+
66
+ if (this.options.dynamic) {
67
+ this.$staticButton.hide();
68
+ } else {
69
+ this.$dynamicButton.hide();
43
70
  }
44
71
 
45
- map.on("moveend", this._search, this);
72
+ map.on("moveend", dynamicSearcher, this);
73
+ map.on("movestart", function() {
74
+ if (!this.options.dynamic) {
75
+ this.$dynamicButton.hide();
76
+ this.$staticButton.show();
77
+ }
78
+ }, this);
46
79
 
47
- return container;
80
+ $container.append(this.$staticButton, this.$dynamicButton);
81
+ return $container.get(0);
48
82
  },
49
83
 
50
- _search: function() {
84
+ getSearchUrl: function() {
51
85
  var params = this.filterParams(['bbox', 'page']),
52
86
  bounds = L.boundsToBbox(this._map.getBounds());
53
87
 
54
88
  params.push('bbox=' + encodeURIComponent(bounds.join(' ')));
55
-
56
- this._searcher(params.join('&'));
89
+ return this.options.baseUrl + '?' + params.join('&');
57
90
  },
58
91
 
59
92
  filterParams: function(filterList) {
@@ -74,4 +107,8 @@
74
107
 
75
108
  });
76
109
 
110
+ L.control.geosearch = function(options) {
111
+ return new L.Control.GeoSearch(options);
112
+ };
113
+
77
114
  }(this);
@@ -1,11 +1,14 @@
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(),
5
- search;
6
- search = new L.Control.GeoSearch(function(querystring) {
7
- this.link.href = data.catalogPath + '?' + querystring;
8
- }, { button: true });
9
- geoblacklight.map.addControl(search);
4
+ data = $(this).data();
5
+ geoblacklight.map.addControl(L.control.geosearch({
6
+ baseUrl: data.catalogPath,
7
+ dynamic: false,
8
+ searcher: function() {
9
+ window.location.href = this.getSearchUrl();
10
+ },
11
+ staticButton: '<a class="btn btn-primary">Search Here</a>'
12
+ }));
10
13
  });
11
14
  });
@@ -1,13 +1,17 @@
1
1
  Blacklight.onLoad(function() {
2
+ var historySupported = !!(window.history && window.history.pushState);
2
3
 
3
- History.Adapter.bind(window, 'statechange', function() {
4
- var state = History.getState();
5
- updatePage(state.url);
6
- });
4
+ if (historySupported) {
5
+ History.Adapter.bind(window, 'statechange', function() {
6
+ var state = History.getState();
7
+ updatePage(state.url);
8
+ });
9
+ }
7
10
 
8
11
  $('[data-map="index"]').each(function() {
9
12
  var data = $(this).data(),
10
- dynamicSearcher, geoblacklight, search, bbox;
13
+ opts = { baseUrl: data.catalogPath },
14
+ geoblacklight, bbox;
11
15
 
12
16
  if (typeof data.mapBbox === "string") {
13
17
  bbox = L.bboxToBounds(data.mapBbox);
@@ -21,12 +25,17 @@ Blacklight.onLoad(function() {
21
25
  });
22
26
  }
23
27
 
24
- dynamicSearcher = GeoBlacklight.debounce(function(querystring) {
25
- History.pushState(null, null, data.catalogPath + '?' + querystring);
26
- }, 800);
28
+ if (!historySupported) {
29
+ $.extend(opts, {
30
+ dynamic: false,
31
+ searcher: function() {
32
+ window.location.href = this.getSearchUrl();
33
+ }
34
+ });
35
+ }
36
+
27
37
  geoblacklight = new GeoBlacklight(this, { bbox: bbox }).setHoverListeners();
28
- search = new L.Control.GeoSearch(dynamicSearcher);
29
- geoblacklight.map.addControl(search);
38
+ geoblacklight.map.addControl(L.control.geosearch(opts));
30
39
  });
31
40
 
32
41
  function updatePage(url) {
@@ -20,3 +20,4 @@
20
20
  @import 'modules/item';
21
21
  @import 'modules/layer_opacity';
22
22
  @import 'modules/results';
23
+ @import 'modules/geosearch';
@@ -0,0 +1,29 @@
1
+ .search-control {
2
+ background-color: #FFF;
3
+ border-radius: 4px;
4
+ box-shadow: 0 1px 5px rgba(0,0,0,0.65);
5
+ }
6
+
7
+ .search-control a {
8
+ color: #FFF
9
+ }
10
+
11
+ .search-control label {
12
+ margin: 6px 12px;
13
+ font-size: 14px;
14
+ display: block;
15
+ padding-left: 15px;
16
+ text-indent: -15px;
17
+ font-weight: normal;
18
+ cursor: pointer;
19
+ }
20
+
21
+ .search-control input[type="checkbox"] {
22
+ width: 13px;
23
+ height: 13px;
24
+ padding: 0;
25
+ margin: 0;
26
+ vertical-align: middle;
27
+ position: relative;
28
+ top: -1px;
29
+ }
@@ -13,7 +13,7 @@
13
13
  .category-block {
14
14
  @extend .col-md-6;
15
15
  @extend .text-center;
16
- min-height: 200px;
16
+ min-height: 240px;
17
17
 
18
18
  .category-icon {
19
19
  font-size: 6em;
@@ -7,9 +7,9 @@
7
7
  font-family: "geoblacklight";
8
8
  src: font-url("geoblacklight.eot");
9
9
  src: font-url("geoblacklight.eot?#iefix") format("embedded-opentype"),
10
- font-url("geoblacklight.woff") format("woff"),
11
- font-url("geoblacklight.ttf") format("truetype"),
12
- font-url("geoblacklight.svg#geoblacklight") format("svg");
10
+ font-url("geoblacklight.woff") format("woff"),
11
+ font-url("geoblacklight.ttf") format("truetype"),
12
+ font-url("geoblacklight.svg#geoblacklight") format("svg");
13
13
  font-weight: normal;
14
14
  font-style: normal;
15
15
  }
@@ -25,10 +25,14 @@
25
25
 
26
26
  [data-icon]:before,
27
27
  .geoblacklight-berkeley:before,
28
+ .geoblacklight-cd-rom:before,
29
+ .geoblacklight-columbia:before,
30
+ .geoblacklight-dvd-rom:before,
28
31
  .geoblacklight-harvard:before,
29
32
  .geoblacklight-image:before,
30
33
  .geoblacklight-line:before,
31
34
  .geoblacklight-massgis:before,
35
+ .geoblacklight-minnesota:before,
32
36
  .geoblacklight-mit:before,
33
37
  .geoblacklight-paper-map:before,
34
38
  .geoblacklight-point:before,
@@ -36,7 +40,8 @@
36
40
  .geoblacklight-princeton:before,
37
41
  .geoblacklight-raster:before,
38
42
  .geoblacklight-stanford:before,
39
- .geoblacklight-tufts:before {
43
+ .geoblacklight-tufts:before,
44
+ .geoblacklight-ucla:before {
40
45
  display: inline-block;
41
46
  font-family: "geoblacklight";
42
47
  font-style: normal;
@@ -52,10 +57,14 @@
52
57
  }
53
58
 
54
59
  .geoblacklight-berkeley:before { content: "\f101"; }
60
+ .geoblacklight-cd-rom:before { content: "\f112"; }
61
+ .geoblacklight-columbia:before { content: "\f115"; }
62
+ .geoblacklight-dvd-rom:before { content: "\f113"; }
55
63
  .geoblacklight-harvard:before { content: "\f103"; }
56
64
  .geoblacklight-image:before { content: "\f10a"; }
57
65
  .geoblacklight-line:before { content: "\f108"; }
58
66
  .geoblacklight-massgis:before { content: "\f106"; }
67
+ .geoblacklight-minnesota:before { content: "\f116"; }
59
68
  .geoblacklight-mit:before { content: "\f104"; }
60
69
  .geoblacklight-paper-map:before { content: "\f110"; }
61
70
  .geoblacklight-point:before { content: "\f109"; }
@@ -64,12 +73,17 @@
64
73
  .geoblacklight-raster:before { content: "\f10d"; }
65
74
  .geoblacklight-stanford:before { content: "\f102"; }
66
75
  .geoblacklight-tufts:before { content: "\f105"; }
76
+ .geoblacklight-ucla:before { content: "\f117"; }
67
77
 
68
78
  $font-geoblacklight-berkeley: "\f101";
79
+ $font-geoblacklight-cd-rom: "\f112";
80
+ $font-geoblacklight-columbia: "\f115";
81
+ $font-geoblacklight-dvd-rom: "\f113";
69
82
  $font-geoblacklight-harvard: "\f103";
70
83
  $font-geoblacklight-image: "\f10a";
71
84
  $font-geoblacklight-line: "\f108";
72
85
  $font-geoblacklight-massgis: "\f106";
86
+ $font-geoblacklight-minnesota: "\f116";
73
87
  $font-geoblacklight-mit: "\f104";
74
88
  $font-geoblacklight-paper-map: "\f110";
75
89
  $font-geoblacklight-point: "\f109";
@@ -78,3 +92,4 @@ $font-geoblacklight-princeton: "\f111";
78
92
  $font-geoblacklight-raster: "\f10d";
79
93
  $font-geoblacklight-stanford: "\f102";
80
94
  $font-geoblacklight-tufts: "\f105";
95
+ $font-geoblacklight-ucla: "\f117";
@@ -27,6 +27,10 @@ class DownloadController < ApplicationController
27
27
  response = ShapefileDownload.new(@document).get
28
28
  when 'kmz'
29
29
  response = KmzDownload.new(@document).get
30
+ when 'geojson'
31
+ response = GeojsonDownload.new(@document).get
32
+ when 'geotiff'
33
+ response = GeotiffDownload.new(@document).get
30
34
  end
31
35
  response
32
36
  end
@@ -69,4 +69,12 @@ module GeoblacklightHelper
69
69
  ""
70
70
  end
71
71
  end
72
+
73
+ ##
74
+ # Renders an unique array of search links based off of terms
75
+ # passed in using the facet parameter
76
+ #
77
+ def render_facet_links(facet, items)
78
+ items.uniq.map { |item| link_to item, catalog_index_path(f: { "#{facet}" => [item] }) }.join(', ').html_safe
79
+ end
72
80
  end
@@ -1,3 +1,3 @@
1
1
  <% display_facet.items.each do |item| %>
2
- <%= link_to item.value, catalog_index_path({f: {"#{facet_field.field}" => [item.value]}}), class: 'home-facet-link' %><%= "," unless item == display_facet.items.last %>
2
+ <%= link_to item.value, catalog_index_path({f: {"#{facet_field.field}" => [item.value]}}), class: 'home-facet-link' %><%= "," %>
3
3
  <% end %>
@@ -1 +1,2 @@
1
- <%= yield %>
1
+ <%= yield %>
2
+ <%= link_to t('blacklight.search.facets.more'), catalog_facet_path(display_facet.name), class: 'more_facets_link' %>
@@ -6,38 +6,42 @@
6
6
  </div>
7
7
  </div>
8
8
 
9
- <div class='row'>
10
- <div class='col-md-6'>
11
- <%= content_tag :h4, t('geoblacklight.home.category_heading'), class: 'text-center' %>
12
- <div class='row'>
9
+ <div class='container'>
10
+ <div class='row'>
11
+ <div class='col-md-6'>
12
+ <%= content_tag :h4, t('geoblacklight.home.category_heading'), class: 'text-center' %>
13
13
  <div class='category-block'>
14
14
  <div class='category-icon'>
15
15
  <span class='glyphicon glyphicon-home'></span>
16
16
  </div>
17
+ <h3>Institution</h3>
17
18
  <%= render_facet_tags [:dct_provenance_s] %>
18
19
  </div>
19
20
  <div class='category-block'>
20
21
  <div class='category-icon'>
21
22
  <span class='glyphicon glyphicon-download'></span>
22
23
  </div>
24
+ <h3>Data type</h3>
23
25
  <%= render_facet_tags [:layer_geom_type_s] %>
24
26
  </div>
25
27
  <div class='category-block'>
26
28
  <div class='category-icon'>
27
29
  <span class='glyphicon glyphicon-globe'></span>
28
30
  </div>
31
+ <h3>Placename</h3>
29
32
  <%= render_facet_tags [:dct_spatial_sm] %>
30
33
  </div>
31
34
  <div class='category-block'>
32
35
  <div class='category-icon'>
33
36
  <span class='glyphicon glyphicon-tags'></span>
34
37
  </div>
38
+ <h3>Subject</h3>
35
39
  <%= render_facet_tags [:dc_subject_sm] %>
36
40
  </div>
37
41
  </div>
38
- </div>
39
- <div class='col-md-6 text-center'>
40
- <%= content_tag :h4, t('geoblacklight.home.map_heading') %>
41
- <%= content_tag :div, '', id: 'map', data: { map: 'home', 'catalog-path'=> catalog_index_path , 'map-bbox' => params[:bbox]} %>
42
+ <div class='col-md-6 text-center'>
43
+ <%= content_tag :h4, t('geoblacklight.home.map_heading') %>
44
+ <%= content_tag :div, '', id: 'map', data: { map: 'home', 'catalog-path'=> catalog_index_path , 'map-bbox' => params[:bbox]} %>
45
+ </div>
42
46
  </div>
43
47
  </div>
@@ -4,7 +4,7 @@
4
4
 
5
5
  <div class='row'>
6
6
  <div class="col-md-8">
7
- <%= content_tag :div, id: 'map', data: { map: 'item', 'catalog-path'=> catalog_index_path , 'map-bbox' => document[:solr_bbox], 'layer-id' => document[:layer_id_s], 'wms-url' => document[:solr_wms_url], available: document_available? } do %>
7
+ <%= content_tag :div, id: 'map', data: { map: 'item', 'catalog-path'=> catalog_index_path , 'map-bbox' => document[:solr_bbox], 'layer-id' => document[:layer_id_s], 'wms-url' => document.references.wms.endpoint, available: document_available? } do %>
8
8
  <% end %>
9
9
  </div>
10
10
  <div id='table-container' class='col-md-4'><div id='attribute-table' ></div></div>
@@ -19,9 +19,9 @@
19
19
  </a>
20
20
  </ul>
21
21
  <% if document_downloadable? %>
22
- <div class='btn-group'>
22
+ <div class='btn-group' itemprop='distribution' itemscope='itemscope' itemtype='http://schema.org/DataDownload'>
23
23
  <% unless document.direct_download.blank? %>
24
- <%= link_to("Download #{@document[:dc_format_s]}", document.direct_download[:download], class: 'btn btn-default') %>
24
+ <%= link_to("Download #{@document[:dc_format_s]}", document.direct_download[:download], class: 'btn btn-default', 'contentUrl' => document.direct_download[:download]) %>
25
25
  <% else %>
26
26
  <%= link_to("Download #{document.download_types.first[0].capitalize}", '', data: { download_path: "#{download_path(document[:layer_slug_s], type: document.download_types.first[0])}"}, class: 'btn btn-default') %>
27
27
  <% end %>
@@ -33,7 +33,7 @@
33
33
  <% unless document.direct_download.blank? %>
34
34
  <li role="presentation" class="dropdown-header">Original</li>
35
35
  <li>
36
- <%= link_to("Download #{@document[:dc_format_s]}", document.direct_download[:download]) %>
36
+ <%= link_to("Download #{@document[:dc_format_s]}", document.direct_download[:download], 'contentUrl' => document.direct_download[:download]) %>
37
37
  </li>
38
38
  <% end %>
39
39
  <li role="presentation" class="dropdown-header">Projected</li>
@@ -24,11 +24,11 @@
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.uniq.join(', ') %>&nbsp;</dd>
27
+ <dd itemprop="spatial"><%= render_facet_links('dct_spatial_sm', document['dct_spatial_sm']) %>&nbsp;</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.uniq.join(', ') %>&nbsp;</dd>
31
+ <dd itemprop="keywords"><%= render_facet_links('dc_subject_sm', document['dc_subject_sm']) %>&nbsp;</dd>
32
32
  <% end %>
33
33
  <% unless document['dct_temporal_sm'].nil? %>
34
34
  <dt>Years</dt>
@@ -6,7 +6,7 @@ en:
6
6
  home:
7
7
  headline: 'Explore and discover...'
8
8
  search_heading: 'Find the maps and data you need'
9
- category_heading: 'Find by category'
9
+ category_heading: 'Find by...'
10
10
  map_heading: 'Find by location'
11
11
  tools:
12
12
  login_to_view: 'Login to view and download'
data/lib/geoblacklight.rb CHANGED
@@ -4,12 +4,15 @@ module Geoblacklight
4
4
  require 'geoblacklight/config'
5
5
  require 'geoblacklight/constants'
6
6
  require 'geoblacklight/controller_override'
7
+ require 'geoblacklight/exceptions'
7
8
  require 'geoblacklight/view_helper_override'
8
9
  require 'geoblacklight/solr_document'
9
10
  require 'geoblacklight/wms_layer'
10
11
  require 'geoblacklight/download'
11
- require 'geoblacklight/download/shapefile_download'
12
+ require 'geoblacklight/download/geojson_download'
13
+ require 'geoblacklight/download/geotiff_download'
12
14
  require 'geoblacklight/download/kmz_download'
15
+ require 'geoblacklight/download/shapefile_download'
13
16
  require 'geoblacklight/reference'
14
17
  require 'geoblacklight/references'
15
18
  def self.inject!
@@ -22,4 +25,8 @@ module Geoblacklight
22
25
  SavedSearchesController.send(:helper, Geoblacklight::ViewHelperOverride) unless
23
26
  SavedSearchesController.helpers.is_a?(Geoblacklight::ViewHelperOverride)
24
27
  end
28
+
29
+ def self.logger
30
+ ::Rails.logger
31
+ end
25
32
  end
@@ -34,30 +34,33 @@ class Download
34
34
  if download.headers['content-type'] == @options[:content_type]
35
35
  file.write download.body
36
36
  else
37
- fail 'Wrong type of download'
37
+ fail Geoblacklight::Exceptions::WrongDownloadFormat
38
38
  end
39
39
  end
40
40
  File.rename("#{file_path}.tmp", file_path)
41
41
  file_name
42
- rescue
42
+ rescue Geoblacklight::Exceptions::WrongDownloadFormat => error
43
+ Geoblacklight.logger.error "#{error} expected #{@options[:content_type]} received #{download.headers['content-type']}"
43
44
  File.delete("#{file_path}.tmp")
44
45
  nil
45
46
  end
46
47
 
47
48
  def initiate_download
48
- conn = Faraday.new(url: @document[@options[:service_type]])
49
+ url = @document.references.send(@options[:service_type]).endpoint
50
+ url += '/reflect' if @options[:reflect]
51
+ conn = Faraday.new(url: url)
49
52
  conn.get do |request|
50
53
  request.params = @options[:request_params]
51
54
  request.options = {
52
- timeout: 10,
53
- open_timeout: 10
55
+ timeout: 16,
56
+ open_timeout: 16
54
57
  }
55
58
  end
56
59
  rescue Faraday::Error::ConnectionFailed => error
57
- puts error
60
+ Geoblacklight.logger.error error
58
61
  nil
59
62
  rescue Faraday::Error::TimeoutError => error
60
- puts error
63
+ Geoblacklight.logger.error error
61
64
  nil
62
65
  end
63
66
  end
@@ -0,0 +1,20 @@
1
+ class GeojsonDownload < Download
2
+ GEOJSON_DOWNLOAD_PARAMS = {
3
+ service: 'wfs',
4
+ version: '2.0.0',
5
+ request: 'GetFeature',
6
+ srsName: 'EPSG:4326',
7
+ outputformat: 'application/json'
8
+ }
9
+
10
+ def initialize(document)
11
+ request_params = GEOJSON_DOWNLOAD_PARAMS.merge(typeName: document[:layer_id_s])
12
+ super(document, {
13
+ type: 'geojson',
14
+ extension: 'json',
15
+ request_params: request_params,
16
+ content_type: 'application/json',
17
+ service_type: 'wfs'
18
+ })
19
+ end
20
+ end
@@ -0,0 +1,18 @@
1
+ class GeotiffDownload < Download
2
+ GEOTIFF_DOWNLOAD_PARAMS = {
3
+ format: 'image/geotiff',
4
+ width: 4096
5
+ }
6
+
7
+ def initialize(document)
8
+ request_params = GEOTIFF_DOWNLOAD_PARAMS.merge(layers: document[:layer_id_s])
9
+ super(document, {
10
+ type: 'geotiff',
11
+ extension: 'tif',
12
+ request_params: request_params,
13
+ content_type: 'image/geotiff',
14
+ service_type: 'wms',
15
+ reflect: true
16
+ })
17
+ end
18
+ end
@@ -8,7 +8,7 @@ class KmzDownload < Download
8
8
  extension: 'kmz',
9
9
  request_params: request_params,
10
10
  content_type: 'application/vnd.google-earth.kmz',
11
- service_type: :solr_wms_url
11
+ service_type: 'wms'
12
12
  })
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ class ShapefileDownload < Download
8
8
  extension: 'zip',
9
9
  request_params: request_params,
10
10
  content_type: 'application/zip',
11
- service_type: :solr_wfs_url
11
+ service_type: 'wfs'
12
12
  })
13
13
  end
14
14
  end
@@ -0,0 +1,6 @@
1
+ module Geoblacklight
2
+ module Exceptions
3
+ class WrongDownloadFormat < StandardError
4
+ end
5
+ end
6
+ end
@@ -42,7 +42,9 @@ module Geoblacklight
42
42
  def downloads_by_format
43
43
  case format
44
44
  when 'Shapefile'
45
- { shapefile: wfs.to_hash, kmz: wms.to_hash }
45
+ { shapefile: wfs.to_hash, kmz: wms.to_hash, geojson: wfs.to_hash }
46
+ when 'GeoTIFF'
47
+ { geotiff: wms.to_hash } if wms.present?
46
48
  end
47
49
  end
48
50
 
@@ -1,3 +1,3 @@
1
1
  module Geoblacklight
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -24,5 +24,9 @@ namespace :geoblacklight do
24
24
  task delete: :environment do
25
25
  FileUtils.rm_rf Dir.glob("#{Rails.root}/tmp/cache/downloads/*")
26
26
  end
27
+ desc 'Create download directory'
28
+ task mkdir: :environment do
29
+ FileUtils.mkdir_p Dir.glob("#{Rails.root}/tmp/cache/downloads")
30
+ end
27
31
  end
28
32
  end
@@ -15,6 +15,7 @@ feature 'Home page', js: true do # use js: true for tests which require js, but
15
15
  scenario 'find by category' do
16
16
  expect(page).to have_css '.category-block', count: 4
17
17
  expect(page).to have_css '.home-facet-link', count: 28
18
+ expect(page).to have_css 'a.more_facets_link', count: 4
18
19
  click_link 'Census'
19
20
  expect(page).to have_css '.filterName', text: 'Subject'
20
21
  expect(page).to have_css '.filterValue', text: 'Census'
@@ -26,9 +27,8 @@ feature 'Home page', js: true do # use js: true for tests which require js, but
26
27
  end
27
28
  end
28
29
  scenario 'clicking map search should create a spatial search' do
29
- find('#map').double_click
30
30
  within '#map' do
31
- find('a.search-control').click
31
+ find('.search-control a').click
32
32
  expect(page.current_url).to match /bbox=/
33
33
  end
34
34
  expect(page).to have_css '#documents'
@@ -3,9 +3,8 @@ require 'spec_helper'
3
3
  feature 'saved searches' do
4
4
  scenario 'list spatial search', js: true do
5
5
  visit root_path
6
- find('#map').double_click
7
6
  within '#map' do
8
- find('a.search-control').click
7
+ find('.search-control a').click
9
8
  expect(page.current_url).to match /bbox=/
10
9
  end
11
10
  visit search_history_path
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe GeoblacklightHelper do
4
+ include GeoblacklightHelper
5
+ include ActionView::Helpers::UrlHelper
6
+ describe '#render_facet_links' do
7
+ it 'should contain unique links' do
8
+ expect(self).to receive(:catalog_index_path).exactly(3).times.and_return("http://example.com/catalog?f[dc_subject_sm][]=category")
9
+ html = Capybara.string(render_facet_links('dc_subject_sm', ['Test', 'Test', 'Earth', 'Science']))
10
+ expect(html).to have_css 'a', count: 3
11
+ expect(html).to have_css 'a', text: 'Test', count: 1
12
+ expect(html).to have_css 'a', text: 'Earth', count: 1
13
+ expect(html).to have_css 'a', text: 'Science', count: 1
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe GeojsonDownload do
4
+ let(:document) { SolrDocument.new(layer_slug_s: 'test', solr_wfs_url: 'http://www.example.com/wfs', layer_id_s: 'stanford-test', solr_bbox: '-180 -90 180 90') }
5
+ let(:download) { GeojsonDownload.new(document) }
6
+ describe '#initialize' do
7
+ it 'should initialize as a GeojsonDownload object with specific options' do
8
+ expect(download).to be_an GeojsonDownload
9
+ options = download.instance_variable_get(:@options)
10
+ expect(options[:content_type]).to eq 'application/json'
11
+ expect(options[:request_params][:typeName]).to eq 'stanford-test'
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe GeotiffDownload do
4
+ let(:document) { SolrDocument.new(layer_slug_s: 'test', layer_id_s: 'stanford-test', solr_bbox: '-180 -90 180 90') }
5
+ let(:download) { GeotiffDownload.new(document) }
6
+ describe '#initialize' do
7
+ it 'should initialize as a GeotiffDownload object with specific options' do
8
+ expect(download).to be_an GeotiffDownload
9
+ options = download.instance_variable_get(:@options)
10
+ expect(options[:content_type]).to eq 'image/geotiff'
11
+ expect(options[:request_params][:layers]).to eq 'stanford-test'
12
+ expect(options[:reflect]).to be_truthy
13
+ end
14
+ end
15
+ end
@@ -4,8 +4,8 @@ describe Download do
4
4
  let(:response) { double('response') }
5
5
  let(:get) { double('get') }
6
6
  let(:body) { double('body') }
7
- let(:document) { SolrDocument.new(layer_slug_s: 'test', solr_wms_url: 'http://www.example.com/wms') }
8
- let(:options) { { type: 'shapefile', extension: 'zip', service_type: :solr_wms_url, content_type: 'application/zip' } }
7
+ let(:document) { SolrDocument.new(layer_slug_s: 'test', dct_references_s: {'http://www.opengis.net/def/serviceType/ogc/wms' => 'http://www.example.com/wms'}.to_json) }
8
+ let(:options) { { type: 'shapefile', extension: 'zip', service_type: 'wms', content_type: 'application/zip' } }
9
9
  let(:download) { Download.new(document, options) }
10
10
 
11
11
  describe '#initialize' do
@@ -42,14 +42,14 @@ describe Download do
42
42
  expect(download).to receive(:download_exists?).and_return(false)
43
43
  expect(download).to receive(:initiate_download).and_return('')
44
44
  expect(File).to receive(:open).with("#{download.file_path}.tmp", 'wb').and_return('')
45
- expect(File).to receive(:delete).with("#{download.file_path}.tmp").and_return(nil)
46
- expect(download.get).to eq nil
45
+ expect(File).to receive(:rename)
46
+ expect(download.get).to eq 'test-shapefile.zip'
47
47
  end
48
48
  end
49
49
  describe '#create_download_file' do
50
50
  it 'should create the file in fs and delete it if the content headers are not correct' do
51
- expect(download).to receive(:initiate_download).and_return('')
52
- expect(File).to receive(:open).with("#{download.file_path}.tmp", 'wb').and_return('')
51
+ bad_file = OpenStruct.new(headers: { 'content-type' => 'bad/file' })
52
+ expect(download).to receive(:initiate_download).and_return(bad_file)
53
53
  expect(File).to receive(:delete).with("#{download.file_path}.tmp").and_return(nil)
54
54
  expect(download.create_download_file).to eq nil
55
55
  end
@@ -86,13 +86,13 @@ describe Geoblacklight::References do
86
86
  it 'should return available downloads by format' do
87
87
  types = complex_shapefile.download_types
88
88
  expect(types.first[1]).to eq wfs: 'http://hgl.harvard.edu:8080/geoserver/wfs'
89
- expect(types.count).to eq 2
89
+ expect(types.count).to eq 3
90
90
  expect(direct_download_only.download_types).to be_nil
91
91
  end
92
92
  it 'should only return available downloads if no direct is present' do
93
93
  types = typical_ogp_shapefile.download_types
94
94
  expect(types.first[1]).to eq wfs: "http://hgl.harvard.edu:8080/geoserver/wfs"
95
- expect(types.count).to eq 2
95
+ expect(types.count).to eq 3
96
96
  end
97
97
  end
98
98
  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.1.0
4
+ version: 0.2.0
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-25 00:00:00.000000000 Z
12
+ date: 2014-12-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: blacklight
@@ -271,6 +271,7 @@ files:
271
271
  - app/assets/stylesheets/geoblacklight/_geoblacklight.css.scss
272
272
  - app/assets/stylesheets/geoblacklight/_styles.css.scss
273
273
  - app/assets/stylesheets/geoblacklight/application.css.scss
274
+ - app/assets/stylesheets/geoblacklight/modules/geosearch.css.scss
274
275
  - app/assets/stylesheets/geoblacklight/modules/home.css.scss
275
276
  - app/assets/stylesheets/geoblacklight/modules/icon-customization.css.scss
276
277
  - app/assets/stylesheets/geoblacklight/modules/icons.css.scss
@@ -306,9 +307,12 @@ files:
306
307
  - lib/geoblacklight/constants.rb
307
308
  - lib/geoblacklight/controller_override.rb
308
309
  - lib/geoblacklight/download.rb
310
+ - lib/geoblacklight/download/geojson_download.rb
311
+ - lib/geoblacklight/download/geotiff_download.rb
309
312
  - lib/geoblacklight/download/kmz_download.rb
310
313
  - lib/geoblacklight/download/shapefile_download.rb
311
314
  - lib/geoblacklight/engine.rb
315
+ - lib/geoblacklight/exceptions.rb
312
316
  - lib/geoblacklight/reference.rb
313
317
  - lib/geoblacklight/references.rb
314
318
  - lib/geoblacklight/solr_document.rb
@@ -335,7 +339,10 @@ files:
335
339
  - spec/fixtures/test-dct-references6.json
336
340
  - spec/fixtures/test-dct-references7.json
337
341
  - spec/fixtures/test-dct-references8.json
342
+ - spec/helpers/geoblacklight_helpers_spec.rb
338
343
  - spec/lib/geoblacklight/controller_override_spec.rb
344
+ - spec/lib/geoblacklight/download/geojson_download_spec.rb
345
+ - spec/lib/geoblacklight/download/geotiff_download_spec.rb
339
346
  - spec/lib/geoblacklight/download/kmz_download_spec.rb
340
347
  - spec/lib/geoblacklight/download/shapefile_download_spec.rb
341
348
  - spec/lib/geoblacklight/download_spec.rb
@@ -396,7 +403,10 @@ test_files:
396
403
  - spec/fixtures/test-dct-references6.json
397
404
  - spec/fixtures/test-dct-references7.json
398
405
  - spec/fixtures/test-dct-references8.json
406
+ - spec/helpers/geoblacklight_helpers_spec.rb
399
407
  - spec/lib/geoblacklight/controller_override_spec.rb
408
+ - spec/lib/geoblacklight/download/geojson_download_spec.rb
409
+ - spec/lib/geoblacklight/download/geotiff_download_spec.rb
400
410
  - spec/lib/geoblacklight/download/kmz_download_spec.rb
401
411
  - spec/lib/geoblacklight/download/shapefile_download_spec.rb
402
412
  - spec/lib/geoblacklight/download_spec.rb