Merge pull request #2337 from wairbut-m2c/budget_map

Budget map
This commit is contained in:
BertoCQ
2018-01-18 01:41:53 +01:00
committed by GitHub
6 changed files with 48 additions and 14 deletions

View File

@@ -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 = "<a href='/budgets/#{budget}/investments/#{investment}'>#{title}</a>"
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()
$('.js-location-map-remove-marker').toggle()

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -79,10 +79,7 @@
<div id="map">
<h3><%= t("budgets.index.map") %></h3>
<!--
Pending to include here the map from
https://github.com/consul/consul/issues/2300
-->
<%= render_map(nil, "budgets", false, nil, @budgets_coordinates) %>
</div>
<p>

View File

@@ -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")