From b7b7d560c26c263b456e9f65d60312422eac175a Mon Sep 17 00:00:00 2001 From: Cess Date: Mon, 1 Jul 2019 22:16:50 +0300 Subject: [PATCH 01/23] view map page --- app/assets/stylesheets/style.scss | 15 +- app/controllers/front_ui_controller.rb | 8 + app/views/front_ui/view_map.html.erb | 240 +++++++++++++++++++++++++ 3 files changed, 259 insertions(+), 4 deletions(-) create mode 100644 app/views/front_ui/view_map.html.erb diff --git a/app/assets/stylesheets/style.scss b/app/assets/stylesheets/style.scss index 928fcb116..3cb0b950f 100644 --- a/app/assets/stylesheets/style.scss +++ b/app/assets/stylesheets/style.scss @@ -246,11 +246,14 @@ label small { font-size: 0.7em; color: gray } - .fa { - font-size: 6em; - padding-bottom: 20px; - } } + +.fa-industry, .fa-globe, .fa-binoculars{ + font-size: 6em; + padding-bottom: 20px; + color: gray; +} + #all-maps { img { display: block; @@ -258,3 +261,7 @@ label small { height: 200px; } } + +#light-blue { + background-color: lightblue; +} diff --git a/app/controllers/front_ui_controller.rb b/app/controllers/front_ui_controller.rb index 7eb43482d..4a244ddfe 100644 --- a/app/controllers/front_ui_controller.rb +++ b/app/controllers/front_ui_controller.rb @@ -42,6 +42,14 @@ def save_location render nothing: true end + def view_map + # @map = Map.find_by(slug: params[:id]) + @map= Map.last + @map.zoom ||= 12 + @embed = true + # render template: 'maps/show' + end + def about; end def location diff --git a/app/views/front_ui/view_map.html.erb b/app/views/front_ui/view_map.html.erb new file mode 100644 index 000000000..d10739cd5 --- /dev/null +++ b/app/views/front_ui/view_map.html.erb @@ -0,0 +1,240 @@ +<%= stylesheet_link_tag "/lib/leaflet/dist/leaflet.css" %> +<%= stylesheet_link_tag "/lib/leaflet-environmental-layers/dist/LeafletEnvironmentalLayers.css" %> +<%= javascript_include_tag('/lib/leaflet-environmental-layers/dist/LeafletEnvironmentalLayers.js') %> +<%= javascript_include_tag('/lib/leaflet-environmental-layers/dist/windRoseLayer.js') %> +<%= javascript_include_tag('/lib/leaflet-fullhash/leaflet-fullHash.js') %> +<%= javascript_include_tag('https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js') %> +<%= stylesheet_link_tag "https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css" %> + +<%= javascript_include_tag('/lib/leaflet-spin/example/spin/dist/spin.min.js') %> +<%= javascript_include_tag('/lib/leaflet-spin/example/leaflet.spin.min.js') %> + +
+
+


+
+
+ +

Make your own map

+

Use a kite, balloon, pole or drone to take an aerial photo and tell your own visual story of the place

+
+
+ +

Environmental data
near here

+

A range of groups publish environmental data here. Read more or share your own map data

+
+
+

+ + + + + + <%= link_to 'Frac Tracker', 'https://www.fractracker.org', target: :_blank %>     Oil and gas infrastructure +

+
+

+ + + + + + <%= link_to 'JusticeMap', 'https://www.justicemap.org/', target: :_blank%>     Race, ethnicity & demographic data +

+
+

+ + + + + + <%= link_to 'OdorLog.com', '#' , target: :_blank%>   Community reports of odors +

+
+

+ + + + + + <%= link_to 'OpenAQ Air', 'https://openaq.org', target: :_blank%>     Quality data from various sources +

+
+

+ + + + + + <%= link_to 'Toxic Release', 'https://www.epa.gov/toxics-release-inventory-tri-program', target: :blank %>     Inventory US gov't collected data from polluting industry +

+
+

+ + + + + + <%= link_to 'SkyTruth Alerts', 'https://alerts.skytruth.org/', target: :blank%>     Recent state-level reports of pollution +

+ +
+

+

+
+
+
+
+

Featured Mappers

+
+ <%= render :partial => 'featured_mappers', :locals => { :mappers => @mappers } %> +
+
+
+
+ + + + +

+

Ask a question

+
+

Get help from others and share ideas with the PublicLab Community

+
+

<%= link_to "Ask a question", '#', class: "btn btn-lg btn-primary" %>

+
+
+ +
+

Projects/ Requests for observations

+
+

Community observations and moitoring are a key source of environmental data. Help add to one of the [projects] here. Read more or post your oen call for input

+

<%= link_to "Post an Observation", '#', class: "btn btn-outline-secondary btn-lg" %>

+ +
+
+
+ + From 13b6cda0127a5252ee8751e15394f0292d3d5a73 Mon Sep 17 00:00:00 2001 From: Cess Date: Fri, 5 Jul 2019 20:53:48 +0300 Subject: [PATCH 02/23] view map routing and styling --- app/assets/stylesheets/style.scss | 2 +- app/controllers/front_ui_controller.rb | 8 ++-- app/views/front_ui/_featured_mappers.html.erb | 4 +- app/views/front_ui/view_map.html.erb | 42 +++++++++++++------ config/routes.rb | 17 ++++---- 5 files changed, 47 insertions(+), 26 deletions(-) diff --git a/app/assets/stylesheets/style.scss b/app/assets/stylesheets/style.scss index 3cb0b950f..1b5137dcd 100644 --- a/app/assets/stylesheets/style.scss +++ b/app/assets/stylesheets/style.scss @@ -249,7 +249,7 @@ label small { } .fa-industry, .fa-globe, .fa-binoculars{ - font-size: 6em; + font-size: 4em; padding-bottom: 20px; color: gray; } diff --git a/app/controllers/front_ui_controller.rb b/app/controllers/front_ui_controller.rb index 4a244ddfe..4b250fafe 100644 --- a/app/controllers/front_ui_controller.rb +++ b/app/controllers/front_ui_controller.rb @@ -43,11 +43,11 @@ def save_location end def view_map - # @map = Map.find_by(slug: params[:id]) - @map= Map.last + @map = Map.find_by(slug: params[:id]) @map.zoom ||= 12 - @embed = true - # render template: 'maps/show' + @mappers = User.where(login: Map.featured.collect(&:author)) + .sample(4) + @unpaginated = true end def about; end diff --git a/app/views/front_ui/_featured_mappers.html.erb b/app/views/front_ui/_featured_mappers.html.erb index fd81a0567..b81413f07 100644 --- a/app/views/front_ui/_featured_mappers.html.erb +++ b/app/views/front_ui/_featured_mappers.html.erb @@ -1,11 +1,11 @@
<% mappers.each do |user| %>
-
+
<%= image_tag(profile_image(user), class: "img-icon card-img-top mx-auto") %>
@<%= user.login %>
-

<%= user.maps.count %> +

<%= user.maps.count %> maps near <%= user.maps.first.location %>

diff --git a/app/views/front_ui/view_map.html.erb b/app/views/front_ui/view_map.html.erb index d10739cd5..33fd39768 100644 --- a/app/views/front_ui/view_map.html.erb +++ b/app/views/front_ui/view_map.html.erb @@ -11,12 +11,27 @@
-


+ +
+

a Community Atlas of

+

Nairobi

+
+

Make your own map

Use a kite, balloon, pole or drone to take an aerial photo and tell your own visual story of the place

+

+

+ + Get a mapping kit + + + Add your images + +

+
@@ -83,25 +98,28 @@

-
-
-

Featured Mappers

+
+ +
+
+
+ <%= render :partial => 'featured_mappers', :locals => { :mappers => @mappers } %>
- <%= render :partial => 'featured_mappers', :locals => { :mappers => @mappers } %> -
+
+
-
+
- + - +

Ask a question


Get help from others and share ideas with the PublicLab Community

-
-

<%= link_to "Ask a question", '#', class: "btn btn-lg btn-primary" %>

+
+

<%= link_to "Ask a question", 'https://publiclab.org/questions/new', target: 'blank', class: "btn btn-lg btn-primary" %>

@@ -109,7 +127,7 @@

Projects/ Requests for observations


Community observations and moitoring are a key source of environmental data. Help add to one of the [projects] here. Read more or post your oen call for input

-

<%= link_to "Post an Observation", '#', class: "btn btn-outline-secondary btn-lg" %>

+

<%= link_to "Post an Observation", 'https://publiclab.org/post', target: 'blank', class: "btn btn-outline-secondary btn-lg" %>

diff --git a/config/routes.rb b/config/routes.rb index 15c1ded21..7becad656 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,6 @@ Mapknitter::Application.routes.draw do +<<<<<<< HEAD root to: 'front_ui#index' mount ActionCable.server => '/cable' @@ -12,23 +13,25 @@ get 'gallery', to: 'front_ui#gallery' get 'location' => 'front_ui#location' post 'save_location', to: 'front_ui#save_location' - + get 'legacy', to: 'maps#index' # remove once new front page is stable - + get 'external_url_test', to: 'export#external_url_test' - + + get 'm/:id' => 'front_ui#view_map' + # since rails 3.2, we use this to log in: get 'sessions/create', to: 'sessions#create' get 'local/:login', to: 'sessions#local' get 'logout', to: 'sessions#logout' get 'login', to: 'sessions#new' - - + + resources :users, :sessions, :maps, :images, :comments, :tags - + # redirect legacy route: get 'tag/:id', to: redirect('/tags/%{id}') - + # Registered user pages: get 'register', to: 'users#create' get 'signup', to: 'users#new' From 9d2a9e2dc7c7dc491bf27dc27ef14836482c3039 Mon Sep 17 00:00:00 2001 From: Cess Date: Fri, 5 Jul 2019 22:38:39 +0300 Subject: [PATCH 03/23] improve map view --- app/views/front_ui/view_map.html.erb | 142 ++++----------------------- 1 file changed, 18 insertions(+), 124 deletions(-) diff --git a/app/views/front_ui/view_map.html.erb b/app/views/front_ui/view_map.html.erb index 33fd39768..a6c7f5855 100644 --- a/app/views/front_ui/view_map.html.erb +++ b/app/views/front_ui/view_map.html.erb @@ -10,11 +10,12 @@ <%= javascript_include_tag('/lib/leaflet-spin/example/leaflet.spin.min.js') %>
-
+

a Community Atlas of

-

Nairobi

+

<%= @map.location %>

+

<%= link_to "@#{@map.author}", "/profile/#{@map.author}" %>



@@ -109,7 +110,7 @@
-
+
@@ -121,7 +122,7 @@

<%= link_to "Ask a question", 'https://publiclab.org/questions/new', target: 'blank', class: "btn btn-lg btn-primary" %>

-
+

Projects/ Requests for observations

@@ -133,126 +134,19 @@
- + Mapknitterunique.addControl(new L.Control.Fullscreen()); + L.marker([lat, lon]).addTo(Mapknitterunique); + From 65547ab64e8c72622f0a75ee8a48c3dd97b3e08d Mon Sep 17 00:00:00 2001 From: Cess Date: Fri, 5 Jul 2019 23:32:27 +0300 Subject: [PATCH 04/23] style mappers --- app/controllers/front_ui_controller.rb | 3 ++- app/views/front_ui/view_map.html.erb | 12 +++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/controllers/front_ui_controller.rb b/app/controllers/front_ui_controller.rb index 4b250fafe..1012b3cb1 100644 --- a/app/controllers/front_ui_controller.rb +++ b/app/controllers/front_ui_controller.rb @@ -45,7 +45,8 @@ def save_location def view_map @map = Map.find_by(slug: params[:id]) @map.zoom ||= 12 - @mappers = User.where(login: Map.featured.collect(&:author)) + @mappers = User.where(login: Map.maps_nearby(lat: @map.lat, lon: @map.lon, dist: 30) + .collect(&:author)) .sample(4) @unpaginated = true end diff --git a/app/views/front_ui/view_map.html.erb b/app/views/front_ui/view_map.html.erb index a6c7f5855..8c96ef4fc 100644 --- a/app/views/front_ui/view_map.html.erb +++ b/app/views/front_ui/view_map.html.erb @@ -95,18 +95,16 @@

-

-

- -
+

+

-
- <%= render :partial => 'featured_mappers', :locals => { :mappers => @mappers } %> -
+ <%= render :partial => 'featured_mappers', :locals => { :mappers => @mappers } %>
+

+
From 409e539e05e3371dd32d62e9c335040dcfdd00db Mon Sep 17 00:00:00 2001 From: Cess Date: Sat, 6 Jul 2019 01:45:48 +0300 Subject: [PATCH 05/23] add edit map button --- app/views/front_ui/view_map.html.erb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/views/front_ui/view_map.html.erb b/app/views/front_ui/view_map.html.erb index 8c96ef4fc..c8ef0c6e1 100644 --- a/app/views/front_ui/view_map.html.erb +++ b/app/views/front_ui/view_map.html.erb @@ -9,9 +9,12 @@ <%= javascript_include_tag('/lib/leaflet-spin/example/spin/dist/spin.min.js') %> <%= javascript_include_tag('/lib/leaflet-spin/example/leaflet.spin.min.js') %> -
-
- +
+ +
+ <%# <%= link_to 'Edit this map', '#', class: 'btn btn-primary', id: 'edit-map' %1> %>

a Community Atlas of

<%= @map.location %>

From a56b8842d5d8a62fda7857812e80afe68c7fe97d Mon Sep 17 00:00:00 2001 From: Cess Date: Sat, 6 Jul 2019 02:11:13 +0300 Subject: [PATCH 06/23] test view map action --- test/controllers/front_ui_controller_test.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/controllers/front_ui_controller_test.rb b/test/controllers/front_ui_controller_test.rb index b3d6cab0b..de042a1c9 100644 --- a/test/controllers/front_ui_controller_test.rb +++ b/test/controllers/front_ui_controller_test.rb @@ -46,4 +46,12 @@ def teardown assert @maps.collect(&:name).include?('Cubbon Park') end + test 'view map page' do + map = maps(:saugus) + get :view_map, id: map.slug + + assert_response :success + assert assigns(:mappers) + assert_template 'front_ui/view_map' + end end From 94336786a6b174a45377ad9cb68433e33c7a75db Mon Sep 17 00:00:00 2001 From: Cess Date: Tue, 9 Jul 2019 19:54:04 +0300 Subject: [PATCH 07/23] Enhance view page --- app/assets/images/baloon.png | Bin 0 -> 14090 bytes app/assets/images/binoculars.png | Bin 0 -> 30771 bytes app/assets/images/quiz.png | Bin 0 -> 13154 bytes app/assets/stylesheets/style.scss | 17 +---- app/views/front_ui/view_map.html.erb | 107 ++++++--------------------- 5 files changed, 22 insertions(+), 102 deletions(-) create mode 100644 app/assets/images/baloon.png create mode 100644 app/assets/images/binoculars.png create mode 100644 app/assets/images/quiz.png diff --git a/app/assets/images/baloon.png b/app/assets/images/baloon.png new file mode 100644 index 0000000000000000000000000000000000000000..43c3306f788c50555e81ca4e57bdde811042455a GIT binary patch literal 14090 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/binoculars.png b/app/assets/images/binoculars.png new file mode 100644 index 0000000000000000000000000000000000000000..3fb2043cee049ece11583ae8798fd2b6b6cbd378 GIT binary patch literal 30771 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 G|GxkwNIHuE literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/style.scss b/app/assets/stylesheets/style.scss index 1b5137dcd..89f6372d5 100644 --- a/app/assets/stylesheets/style.scss +++ b/app/assets/stylesheets/style.scss @@ -230,7 +230,6 @@ label small { letter-spacing: -0.2px; } - .item-description { font-size: 18px; font-weight: 300; @@ -240,20 +239,6 @@ label small { color: #a2aaad; } - -#info { - .fa-stack { - font-size: 0.7em; - color: gray - } -} - -.fa-industry, .fa-globe, .fa-binoculars{ - font-size: 4em; - padding-bottom: 20px; - color: gray; -} - #all-maps { img { display: block; @@ -263,5 +248,5 @@ label small { } #light-blue { - background-color: lightblue; + background-color: #d0e2f2; } diff --git a/app/views/front_ui/view_map.html.erb b/app/views/front_ui/view_map.html.erb index c8ef0c6e1..7ea1eb419 100644 --- a/app/views/front_ui/view_map.html.erb +++ b/app/views/front_ui/view_map.html.erb @@ -10,94 +10,32 @@ <%= javascript_include_tag('/lib/leaflet-spin/example/leaflet.spin.min.js') %>
- -
- <%# <%= link_to 'Edit this map', '#', class: 'btn btn-primary', id: 'edit-map' %1> %> + + + +

a Community Atlas of

<%= @map.location %>

<%= link_to "@#{@map.author}", "/profile/#{@map.author}" %>

-

-
-
- +
+
+

Make your own map

Use a kite, balloon, pole or drone to take an aerial photo and tell your own visual story of the place



- - Get a mapping kit - - - Add your images - -

+ + Get a mapping kit + + + Add your images + +

-
-
- -

Environmental data
near here

-

A range of groups publish environmental data here. Read more or share your own map data

-
-
-

- - - - - - <%= link_to 'Frac Tracker', 'https://www.fractracker.org', target: :_blank %>     Oil and gas infrastructure -

-
-

- - - - - - <%= link_to 'JusticeMap', 'https://www.justicemap.org/', target: :_blank%>     Race, ethnicity & demographic data -

-
-

- - - - - - <%= link_to 'OdorLog.com', '#' , target: :_blank%>   Community reports of odors -

-
-

- - - - - - <%= link_to 'OpenAQ Air', 'https://openaq.org', target: :_blank%>     Quality data from various sources -

-
-

- - - - - - <%= link_to 'Toxic Release', 'https://www.epa.gov/toxics-release-inventory-tri-program', target: :blank %>     Inventory US gov't collected data from polluting industry -

-
-

- - - - - - <%= link_to 'SkyTruth Alerts', 'https://alerts.skytruth.org/', target: :blank%>     Recent state-level reports of pollution -

- -
@@ -112,19 +50,16 @@
- - - - -

+ +

Ask a question

-
+

Get help from others and share ideas with the PublicLab Community

-
+

<%= link_to "Ask a question", 'https://publiclab.org/questions/new', target: 'blank', class: "btn btn-lg btn-primary" %>

- +

Projects/ Requests for observations


From 8202f04b9519f90d06f3be2b00305b02e06ee195 Mon Sep 17 00:00:00 2001 From: Cess Date: Tue, 9 Jul 2019 22:16:44 +0300 Subject: [PATCH 08/23] show nearby maps --- app/assets/stylesheets/style.scss | 2 +- app/controllers/front_ui_controller.rb | 5 ++--- app/views/front_ui/_maps.html.erb | 3 ++- app/views/front_ui/view_map.html.erb | 13 ++++++++++--- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/assets/stylesheets/style.scss b/app/assets/stylesheets/style.scss index 89f6372d5..413c7a441 100644 --- a/app/assets/stylesheets/style.scss +++ b/app/assets/stylesheets/style.scss @@ -247,6 +247,6 @@ label small { } } -#light-blue { +.light-blue { background-color: #d0e2f2; } diff --git a/app/controllers/front_ui_controller.rb b/app/controllers/front_ui_controller.rb index 1012b3cb1..d6341c049 100644 --- a/app/controllers/front_ui_controller.rb +++ b/app/controllers/front_ui_controller.rb @@ -45,9 +45,8 @@ def save_location def view_map @map = Map.find_by(slug: params[:id]) @map.zoom ||= 12 - @mappers = User.where(login: Map.maps_nearby(lat: @map.lat, lon: @map.lon, dist: 30) - .collect(&:author)) - .sample(4) + @maps = Map.maps_nearby(lat: @map.lat, lon: @map.lon, dist: 10) + .sample(4) @unpaginated = true end diff --git a/app/views/front_ui/_maps.html.erb b/app/views/front_ui/_maps.html.erb index 852f1237e..78b3df10a 100644 --- a/app/views/front_ui/_maps.html.erb +++ b/app/views/front_ui/_maps.html.erb @@ -1,8 +1,9 @@
+<<<<<<< HEAD <% maps.each do |map| %> <% warp = map.placed_warpables.first %>
-

-
+
+
+

Nearby Maps

+

- <%= render :partial => 'featured_mappers', :locals => { :mappers => @mappers } %> + <%= render :partial => 'front_ui/maps', :locals => { :maps => @maps } %>


From e46a3a7d21b5969c6a0c2f1d13300f876b0ca7b7 Mon Sep 17 00:00:00 2001 From: Cess Date: Tue, 9 Jul 2019 23:53:44 +0300 Subject: [PATCH 09/23] change div to class --- app/assets/stylesheets/style.scss | 2 +- app/views/front_ui/gallery.html.erb | 2 +- app/views/front_ui/view_map.html.erb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/assets/stylesheets/style.scss b/app/assets/stylesheets/style.scss index 413c7a441..12db7fd41 100644 --- a/app/assets/stylesheets/style.scss +++ b/app/assets/stylesheets/style.scss @@ -239,7 +239,7 @@ label small { color: #a2aaad; } -#all-maps { +.all-maps { img { display: block; width: 200px; diff --git a/app/views/front_ui/gallery.html.erb b/app/views/front_ui/gallery.html.erb index e266e12fa..476fe33fb 100644 --- a/app/views/front_ui/gallery.html.erb +++ b/app/views/front_ui/gallery.html.erb @@ -1,4 +1,4 @@ -
+
<% if params[:q].present? %>

<%= @title %>


diff --git a/app/views/front_ui/view_map.html.erb b/app/views/front_ui/view_map.html.erb index 91a137eed..5f563b66b 100644 --- a/app/views/front_ui/view_map.html.erb +++ b/app/views/front_ui/view_map.html.erb @@ -44,7 +44,7 @@


-
+

Nearby Maps


From 8cb3c6724554a97fff760c3b78eb18e9a2cc393b Mon Sep 17 00:00:00 2001 From: Cess Date: Tue, 9 Jul 2019 23:55:39 +0300 Subject: [PATCH 10/23] update tests --- test/controllers/front_ui_controller_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/controllers/front_ui_controller_test.rb b/test/controllers/front_ui_controller_test.rb index de042a1c9..b2c3fdd78 100644 --- a/test/controllers/front_ui_controller_test.rb +++ b/test/controllers/front_ui_controller_test.rb @@ -51,7 +51,7 @@ def teardown get :view_map, id: map.slug assert_response :success - assert assigns(:mappers) + assert assigns(:maps) assert_template 'front_ui/view_map' end end From 900a7d82e6bc764f540d80eddcc7cb4f58e7673e Mon Sep 17 00:00:00 2001 From: Cess Date: Wed, 10 Jul 2019 11:41:06 +0300 Subject: [PATCH 11/23] move view_map to maps controller --- app/controllers/front_ui_controller.rb | 8 -------- app/controllers/maps_controller.rb | 10 +++++++++- app/views/{front_ui => maps}/view_map.html.erb | 2 +- config/routes.rb | 1 - test/controllers/maps_controller_test.rb | 8 ++++++++ 5 files changed, 18 insertions(+), 11 deletions(-) rename app/views/{front_ui => maps}/view_map.html.erb (97%) diff --git a/app/controllers/front_ui_controller.rb b/app/controllers/front_ui_controller.rb index d6341c049..7eb43482d 100644 --- a/app/controllers/front_ui_controller.rb +++ b/app/controllers/front_ui_controller.rb @@ -42,14 +42,6 @@ def save_location render nothing: true end - def view_map - @map = Map.find_by(slug: params[:id]) - @map.zoom ||= 12 - @maps = Map.maps_nearby(lat: @map.lat, lon: @map.lon, dist: 10) - .sample(4) - @unpaginated = true - end - def about; end def location diff --git a/app/controllers/maps_controller.rb b/app/controllers/maps_controller.rb index e8373d418..c87bca2fd 100644 --- a/app/controllers/maps_controller.rb +++ b/app/controllers/maps_controller.rb @@ -4,7 +4,7 @@ class MapsController < ApplicationController protect_from_forgery except: :export before_action :require_login, only: %i(edit update destroy) - before_action :find_map, only: %i(show annotate embed edit update images destroy archive) + before_action :find_map, only: %i(show annotate embed edit update images destroy archive view_map) layout 'knitter2' @@ -63,6 +63,14 @@ def show @resolution = 5 if @resolution < 5 # soft-set min res end + def view_map + @map.zoom ||= 12 + @maps = Map.maps_nearby(lat: @map.lat, lon: @map.lon, dist: 10) + .sample(4) + @unpaginated = true + render template: 'maps/view_map', layout: 'application' + end + def archive if logged_in? && current_user.can_delete?(@map) @map.archived = true diff --git a/app/views/front_ui/view_map.html.erb b/app/views/maps/view_map.html.erb similarity index 97% rename from app/views/front_ui/view_map.html.erb rename to app/views/maps/view_map.html.erb index 5f563b66b..851044de8 100644 --- a/app/views/front_ui/view_map.html.erb +++ b/app/views/maps/view_map.html.erb @@ -23,7 +23,7 @@

a Community Atlas of

<%= @map.location %>

-

<%= link_to "@#{@map.author}", "/profile/#{@map.author}" %>

+

<%= link_to "@#{@map.author}", "/profile/#{@map.author}" unless @map.author == 'anonymous' %>

diff --git a/config/routes.rb b/config/routes.rb index 7becad656..43ab62dde 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,6 +1,5 @@ Mapknitter::Application.routes.draw do -<<<<<<< HEAD root to: 'front_ui#index' mount ActionCable.server => '/cable' diff --git a/test/controllers/maps_controller_test.rb b/test/controllers/maps_controller_test.rb index 2f12a2725..7b4e0cf60 100644 --- a/test/controllers/maps_controller_test.rb +++ b/test/controllers/maps_controller_test.rb @@ -311,4 +311,12 @@ def export_anonmymous_map get :featured assert_response :success end + + test 'view map page' do + get :view_map, id: @map.slug + + assert_response :success + assert assigns(:maps) + assert_template 'maps/view_map' + end end From eed90328d4f3138da6c6087c1404d6a821a5b130 Mon Sep 17 00:00:00 2001 From: Cess Date: Thu, 11 Jul 2019 13:40:58 +0300 Subject: [PATCH 12/23] show images on top of map --- app/controllers/maps_controller.rb | 2 +- app/views/front_ui/_maps.html.erb | 1 - app/views/maps/view_map.html.erb | 45 +++++++++++++++--------------- 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/app/controllers/maps_controller.rb b/app/controllers/maps_controller.rb index c87bca2fd..00e5bb260 100644 --- a/app/controllers/maps_controller.rb +++ b/app/controllers/maps_controller.rb @@ -68,7 +68,7 @@ def view_map @maps = Map.maps_nearby(lat: @map.lat, lon: @map.lon, dist: 10) .sample(4) @unpaginated = true - render template: 'maps/view_map', layout: 'application' + render layout: 'application' end def archive diff --git a/app/views/front_ui/_maps.html.erb b/app/views/front_ui/_maps.html.erb index 78b3df10a..56bc7c651 100644 --- a/app/views/front_ui/_maps.html.erb +++ b/app/views/front_ui/_maps.html.erb @@ -1,5 +1,4 @@
-<<<<<<< HEAD <% maps.each do |map| %> <% warp = map.placed_warpables.first %>
diff --git a/app/views/maps/view_map.html.erb b/app/views/maps/view_map.html.erb index 851044de8..97f173084 100644 --- a/app/views/maps/view_map.html.erb +++ b/app/views/maps/view_map.html.erb @@ -1,15 +1,13 @@ <%= stylesheet_link_tag "/lib/leaflet/dist/leaflet.css" %> -<%= stylesheet_link_tag "/lib/leaflet-environmental-layers/dist/LeafletEnvironmentalLayers.css" %> -<%= javascript_include_tag('/lib/leaflet-environmental-layers/dist/LeafletEnvironmentalLayers.js') %> -<%= javascript_include_tag('/lib/leaflet-environmental-layers/dist/windRoseLayer.js') %> -<%= javascript_include_tag('/lib/leaflet-fullhash/leaflet-fullHash.js') %> -<%= javascript_include_tag('https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js') %> <%= stylesheet_link_tag "https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css" %> -<%= javascript_include_tag('/lib/leaflet-spin/example/spin/dist/spin.min.js') %> -<%= javascript_include_tag('/lib/leaflet-spin/example/leaflet.spin.min.js') %> +<%= javascript_include_tag 'maps' %> +<%= javascript_include_tag '//api.tiles.mapbox.com/mapbox.js/plugins/leaflet-omnivore/v0.3.1/leaflet-omnivore.min.js' %> +<%= javascript_include_tag "https://maps.googleapis.com/maps/api/js?key=AIzaSyAxlBXzYwdeaOMKZgx_UNBp2qBtdD0L_9g" %> +<%= javascript_include_tag 'https://unpkg.com/leaflet.gridlayer.googlemutant@0.7.0/Leaflet.GoogleMutant.js' %> +<%= javascript_include_tag '/lib/image-sequencer/dist/image-sequencer.js' %> -
+
- + From edc56e25850b3144114d0e3b72d50bbc5e5ff392 Mon Sep 17 00:00:00 2001 From: Cess Date: Sun, 28 Jul 2019 12:12:39 +0300 Subject: [PATCH 13/23] fix filename typo --- app/assets/images/{baloon.png => balloon1.png} | Bin app/views/maps/view_map.html.erb | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename app/assets/images/{baloon.png => balloon1.png} (100%) diff --git a/app/assets/images/baloon.png b/app/assets/images/balloon1.png similarity index 100% rename from app/assets/images/baloon.png rename to app/assets/images/balloon1.png diff --git a/app/views/maps/view_map.html.erb b/app/views/maps/view_map.html.erb index 97f173084..53ab97f63 100644 --- a/app/views/maps/view_map.html.erb +++ b/app/views/maps/view_map.html.erb @@ -25,7 +25,7 @@
- +

Make your own map

Use a kite, balloon, pole or drone to take an aerial photo and tell your own visual story of the place



From 774e8394c999b2fe1df0e7097c3f5023975be148 Mon Sep 17 00:00:00 2001 From: Cess Date: Sun, 28 Jul 2019 22:05:49 +0300 Subject: [PATCH 14/23] fix typo --- app/views/maps/view_map.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/maps/view_map.html.erb b/app/views/maps/view_map.html.erb index 53ab97f63..0a7a1fd0a 100644 --- a/app/views/maps/view_map.html.erb +++ b/app/views/maps/view_map.html.erb @@ -68,7 +68,7 @@

Projects/ Requests for observations


-

Community observations and moitoring are a key source of environmental data. Help add to one of the [projects] here. Read more or post your oen call for input

+

Community observations and monitoring are a key source of environmental data. Help add to one of the [projects] here. Read more or post your oen call for input

<%= link_to "Post an Observation", 'https://publiclab.org/post', target: 'blank', class: "btn btn-outline-secondary btn-lg" %>

From 39aabde728f06a988ca5295664fa94c62431c268 Mon Sep 17 00:00:00 2001 From: Cess Date: Thu, 8 Aug 2019 13:59:32 +0300 Subject: [PATCH 15/23] Fix mobile view --- app/views/maps/view_map.html.erb | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/app/views/maps/view_map.html.erb b/app/views/maps/view_map.html.erb index 0a7a1fd0a..9a36291c0 100644 --- a/app/views/maps/view_map.html.erb +++ b/app/views/maps/view_map.html.erb @@ -8,15 +8,21 @@ <%= javascript_include_tag '/lib/image-sequencer/dist/image-sequencer.js' %>
- -