diff --git a/app/assets/javascripts/map.js.coffee b/app/assets/javascripts/map.js.coffee index 28ac34f29..26f2c259b 100644 --- a/app/assets/javascripts/map.js.coffee +++ b/app/assets/javascripts/map.js.coffee @@ -24,6 +24,7 @@ App.Map = longitudeInputSelector = $(element).data('longitude-input-selector') zoomInputSelector = $(element).data('zoom-input-selector') removeMarkerSelector = $(element).data('marker-remove-selector') + addMarkerInvestments = $(element).data('marker-investments-coordinates') editable = $(element).data('marker-editable') marker = null; markerIcon = L.divIcon( @@ -69,11 +70,15 @@ App.Map = $(zoomInputSelector).val '' return + contentPopup = (title,investment,budget) -> + content = "#{title}" + return content + mapCenterLatLng = new (L.LatLng)(mapCenterLatitude, mapCenterLongitude) map = L.map(element.id).setView(mapCenterLatLng, zoom) L.tileLayer(mapTilesProvider, attribution: mapAttribution).addTo map - if markerLatitude && markerLongitude + if markerLatitude && markerLongitude && !addMarkerInvestments marker = createMarker(markerLatitude, markerLongitude) if editable @@ -81,6 +86,11 @@ App.Map = map.on 'zoomend', updateFormfields map.on 'click', moveOrPlaceMarker + if addMarkerInvestments + for i in addMarkerInvestments + add_marker=createMarker(i.lat , i.long) + add_marker.bindPopup(contentPopup(i.investment_title, i.investment_id, i.budget_id)) + toogleMap: -> $('.map').toggle() - $('.js-location-map-remove-marker').toggle() \ No newline at end of file + $('.js-location-map-remove-marker').toggle() diff --git a/app/controllers/budgets_controller.rb b/app/controllers/budgets_controller.rb index c0cb86565..52b735188 100644 --- a/app/controllers/budgets_controller.rb +++ b/app/controllers/budgets_controller.rb @@ -16,6 +16,7 @@ class BudgetsController < ApplicationController def index @budgets = @budgets.order(:created_at) @budget = current_budget + @budgets_coordinates = current_budget_map_locations end end diff --git a/app/helpers/budgets_helper.rb b/app/helpers/budgets_helper.rb index 5e1949775..8ace7ccfb 100644 --- a/app/helpers/budgets_helper.rb +++ b/app/helpers/budgets_helper.rb @@ -53,4 +53,16 @@ module BudgetsHelper !budget.drafting? || current_user&.administrator? end + def current_budget_map_locations + current_budget.investments.map do |investment| + next unless investment.map_location.present? + { + lat: investment.map_location.latitude, + long: investment.map_location.longitude, + investment_title: investment.title, + investment_id: investment.id, + budget_id: current_budget.id + } + end.flatten.compact + end end diff --git a/app/helpers/map_locations_helper.rb b/app/helpers/map_locations_helper.rb index 85b02e28c..a471d1b8d 100644 --- a/app/helpers/map_locations_helper.rb +++ b/app/helpers/map_locations_helper.rb @@ -24,11 +24,12 @@ module MapLocationsHelper "remove-marker-link-#{dom_id(map_location)}" end - def render_map(map_location, parent_class, editable, remove_marker_label) + def render_map(map_location, parent_class, editable, remove_marker_label, investments_coordinates=nil) + map_location = MapLocation.new if map_location.nil? map = content_tag_for :div, map_location, class: "map", - data: prepare_map_settings(map_location, editable, parent_class) + data: prepare_map_settings(map_location, editable, parent_class, investments_coordinates) map += map_location_remove_marker(map_location, remove_marker_label) if editable map end @@ -46,7 +47,7 @@ module MapLocationsHelper private - def prepare_map_settings(map_location, editable, parent_class) + def prepare_map_settings(map_location, editable, parent_class, investments_coordinates=nil) options = { map: "", map_center_latitude: map_location_latitude(map_location), @@ -55,13 +56,15 @@ module MapLocationsHelper map_tiles_provider: Rails.application.secrets.map_tiles_provider, map_tiles_provider_attribution: Rails.application.secrets.map_tiles_provider_attribution, marker_editable: editable, - marker_latitude: map_location.latitude, - marker_longitude: map_location.longitude, marker_remove_selector: "##{map_location_remove_marker_link_id(map_location)}", latitude_input_selector: "##{map_location_input_id(parent_class, 'latitude')}", longitude_input_selector: "##{map_location_input_id(parent_class, 'longitude')}", - zoom_input_selector: "##{map_location_input_id(parent_class, 'zoom')}" + zoom_input_selector: "##{map_location_input_id(parent_class, 'zoom')}", + marker_investments_coordinates: investments_coordinates } + options[:marker_latitude] = map_location.latitude if map_location.latitude.present? + options[:marker_longitude] = map_location.longitude if map_location.longitude.present? + options end end diff --git a/app/views/budgets/index.html.erb b/app/views/budgets/index.html.erb index 793ded774..dd86ecb71 100644 --- a/app/views/budgets/index.html.erb +++ b/app/views/budgets/index.html.erb @@ -79,10 +79,7 @@

<%= t("budgets.index.map") %>

- + <%= render_map(nil, "budgets", false, nil, @budgets_coordinates) %>

diff --git a/db/dev_seeds.rb b/db/dev_seeds.rb index cc36569c8..940771d5b 100644 --- a/db/dev_seeds.rb +++ b/db/dev_seeds.rb @@ -64,8 +64,8 @@ section "Creating Settings" do Setting.create(key: 'verification_offices_url', value: 'http://oficinas-atencion-ciudadano.url/') Setting.create(key: 'min_age_to_participate', value: '16') Setting.create(key: 'proposal_improvement_path', value: nil) - Setting.create(key: 'map_latitude', value: 51.48) - Setting.create(key: 'map_longitude', value: 0.0) + Setting.create(key: 'map_latitude', value: 40.41) + Setting.create(key: 'map_longitude', value: -3.7) Setting.create(key: 'map_zoom', value: 10) Setting.create(key: 'related_content_score_threshold', value: -0.3) end @@ -451,6 +451,17 @@ section "Creating Investments" do end end +section "Geolocating Investments" do + Budget.all.each do |budget| + budget.investments.each do |investment| + MapLocation.create(latitude: 40.4167278 + rand(-10..10)/100.to_f, + longitude: -3.7055274 + rand(-10..10)/100.to_f, + zoom: 10, + investment_id: investment.id) + end + end +end + section "Balloting Investments" do Budget.balloting.last.investments.each do |investment| investment.update(selected: true, feasibility: "feasible")