From 91e10e189719f5056bc3aa26b4962fa0962b2796 Mon Sep 17 00:00:00 2001 From: Vicente Mendoza Date: Wed, 17 Jan 2018 13:15:35 +0100 Subject: [PATCH] new map on budget homepage --- app/assets/javascripts/map.js.coffee | 14 ++++++++++++-- app/controllers/budgets_controller.rb | 2 ++ app/helpers/map_locations_helper.rb | 22 +++++++++++++--------- app/views/budgets/index.html.erb | 2 +- 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/app/assets/javascripts/map.js.coffee b/app/assets/javascripts/map.js.coffee index 28ac34f29..853debfa3 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') + addMarkerInvestemts = $(element).data('marker-investments-coordenates') 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 && !addMarkerInvestemts marker = createMarker(markerLatitude, markerLongitude) if editable @@ -81,6 +86,11 @@ App.Map = map.on 'zoomend', updateFormfields map.on 'click', moveOrPlaceMarker + if addMarkerInvestemts + for i in addMarkerInvestemts + 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 4f215c46f..35089fae2 100644 --- a/app/controllers/budgets_controller.rb +++ b/app/controllers/budgets_controller.rb @@ -15,6 +15,8 @@ class BudgetsController < ApplicationController def index @budgets = @budgets.order(:created_at) + budgets_map_locations = Budget.where.not(phase: 'drafting').map{ |budget| budget.investments.map{|investment| investment.map_location}}.flatten.compact + @budgets_coordenates = budgets_map_locations.map{ |ml| {lat: ml.latitude, long: ml.longitude, investment_title: ml.investment.title , investment_id: ml.investment.id, budget_id: ml.investment.budget.id}} end end diff --git a/app/helpers/map_locations_helper.rb b/app/helpers/map_locations_helper.rb index 85b02e28c..4dd825006 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_coordenates=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_coordenates) map += map_location_remove_marker(map_location, remove_marker_label) if editable map end @@ -44,23 +45,26 @@ module MapLocationsHelper end end + private - def prepare_map_settings(map_location, editable, parent_class) + def prepare_map_settings(map_location, editable, parent_class,marker_investments_coordenates=nil) options = { map: "", - map_center_latitude: map_location_latitude(map_location), - map_center_longitude: map_location_longitude(map_location), - map_zoom: map_location_zoom(map_location), 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, + map_center_latitude: map_location_latitude(map_location), + map_center_longitude: map_location_longitude(map_location), + map_zoom: map_location_zoom(map_location), + marker_latitude: map_location_latitude(map_location.latitude), + marker_longitude: map_location_longitude(map_location.longitude), + marker_investments_coordenates: marker_investments_coordenates, 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_coordenates: marker_investments_coordenates } end diff --git a/app/views/budgets/index.html.erb b/app/views/budgets/index.html.erb index 0ccc8bcef..658ea2be6 100644 --- a/app/views/budgets/index.html.erb +++ b/app/views/budgets/index.html.erb @@ -4,7 +4,7 @@ <% end %> <%= render "shared/section_header", i18n_namespace: "budgets.index.section_header", image: "budgets" %> - +<%= render_map(nil, "budgets",false,nil, @budgets_coordenates) %>