diff --git a/app/assets/javascripts/map.js b/app/assets/javascripts/map.js
index 2315ae1cf..4b2e4a5a2 100644
--- a/app/assets/javascripts/map.js
+++ b/app/assets/javascripts/map.js
@@ -211,7 +211,10 @@
className: "map-polygon"
});
- polygon.bindPopup(geozone.headings.join("
"));
+ if (geozone.headings !== undefined) {
+ polygon.bindPopup(geozone.headings.join("
"));
+ }
+
polygon.addTo(map);
},
openMarkerPopup: function(e) {
diff --git a/app/components/budgets/investments/map_component.html.erb b/app/components/budgets/investments/map_component.html.erb
index d8961a740..7e2d99ebb 100644
--- a/app/components/budgets/investments/map_component.html.erb
+++ b/app/components/budgets/investments/map_component.html.erb
@@ -1,3 +1,3 @@
- <%= render_map(map_location, investments_coordinates: coordinates) %>
+ <%= render_map(map_location, investments_coordinates: coordinates, geozones_data: geozones_data) %>
diff --git a/app/components/budgets/investments/map_component.rb b/app/components/budgets/investments/map_component.rb
index c843c38a4..897524ca2 100644
--- a/app/components/budgets/investments/map_component.rb
+++ b/app/components/budgets/investments/map_component.rb
@@ -20,4 +20,15 @@ class Budgets::Investments::MapComponent < ApplicationComponent
def coordinates
MapLocation.where(investment: investments).map(&:json_data)
end
+
+ def geozones_data
+ return unless heading.geozone.present?
+
+ [
+ {
+ outline_points: heading.geozone.outline_points,
+ color: heading.geozone.color
+ }
+ ]
+ end
end
diff --git a/spec/system/budgets/investments_spec.rb b/spec/system/budgets/investments_spec.rb
index ddb01b30d..0aa50b97a 100644
--- a/spec/system/budgets/investments_spec.rb
+++ b/spec/system/budgets/investments_spec.rb
@@ -1698,6 +1698,27 @@ describe "Budget Investments" do
end
end
+ scenario "Shows the polygon associated to the current heading" do
+ triangle = '{ "geometry": { "type": "Polygon", "coordinates": [[-0.1,51.5],[-0.2,51.4],[-0.3,51.6]] } }'
+ rectangle = '{ "geometry": { "type": "Polygon", "coordinates": [[-0.1,51.5],[-0.2,51.5],[-0.2,51.6],[-0.1,51.6]] } }'
+
+ park = create(:geozone, geojson: triangle, color: "#03ee03")
+ square = create(:geozone, geojson: rectangle, color: "#ff04ff")
+
+ group = create(:budget_group)
+ green_areas = create(:budget_heading, group: group, geozone: park, latitude: 51.5, longitude: -0.2)
+ create(:budget_heading, group: group, geozone: square, latitude: 51.5, longitude: -0.2)
+
+ visit budget_investments_path(group.budget, heading_id: green_areas)
+
+ expect(page).to have_css ".map-polygon[fill='#03ee03']"
+ expect(page).not_to have_css ".map-polygon[fill='#ff04ff']"
+
+ find(".map-polygon").click
+
+ expect(page).not_to have_css ".leaflet-popup"
+ end
+
scenario "Shows all investments and not only the ones on the current page" do
stub_const("#{Budgets::InvestmentsController}::PER_PAGE", 2)