diff --git a/app/assets/javascripts/map.js b/app/assets/javascripts/map.js index 4b2e4a5a2..396ac5418 100644 --- a/app/assets/javascripts/map.js +++ b/app/assets/javascripts/map.js @@ -172,7 +172,7 @@ if (App.Map.validCoordinates(coordinates)) { marker = createMarker(coordinates.lat, coordinates.long); marker.options.id = coordinates.investment_id; - marker.on("click", App.Map.openMarkerPopup); + marker.bindPopup(App.Map.getPopupContent(coordinates)); } }); } @@ -217,19 +217,8 @@ polygon.addTo(map); }, - openMarkerPopup: function(e) { - var marker = e.target; - $.ajax("/investments/" + marker.options.id + "/json_data", { - type: "GET", - dataType: "json", - success: function(data) { - e.target.bindPopup(App.Map.getPopupContent(data)).openPopup(); - } - }); - }, getPopupContent: function(data) { - return "" + - data.investment_title + ""; + return "" + data.title + ""; }, validZoom: function(zoom) { return App.Map.isNumeric(zoom); diff --git a/app/components/budgets/investments/map_component.rb b/app/components/budgets/investments/map_component.rb index 897524ca2..43253dfed 100644 --- a/app/components/budgets/investments/map_component.rb +++ b/app/components/budgets/investments/map_component.rb @@ -18,7 +18,7 @@ class Budgets::Investments::MapComponent < ApplicationComponent end def coordinates - MapLocation.where(investment: investments).map(&:json_data) + MapLocation.investments_json_data(investments.unscope(:order)) end def geozones_data diff --git a/app/components/budgets/map_component.rb b/app/components/budgets/map_component.rb index dcbc427d6..ccf3719d1 100644 --- a/app/components/budgets/map_component.rb +++ b/app/components/budgets/map_component.rb @@ -19,7 +19,7 @@ class Budgets::MapComponent < ApplicationComponent investments = budget.investments end - MapLocation.where(investment_id: investments).map(&:json_data) + MapLocation.investments_json_data(investments) end def geozones_data diff --git a/app/controllers/budgets/investments_controller.rb b/app/controllers/budgets/investments_controller.rb index 84277042f..c192827c4 100644 --- a/app/controllers/budgets/investments_controller.rb +++ b/app/controllers/budgets/investments_controller.rb @@ -11,12 +11,11 @@ module Budgets PER_PAGE = 10 - before_action :authenticate_user!, except: [:index, :show, :json_data] - before_action :load_budget, except: :json_data + before_action :authenticate_user!, except: [:index, :show] + before_action :load_budget - authorize_resource :budget, except: :json_data - load_and_authorize_resource :investment, through: :budget, class: "Budget::Investment", - except: :json_data + authorize_resource :budget + load_and_authorize_resource :investment, through: :budget, class: "Budget::Investment" before_action :load_ballot, only: [:index, :show] before_action :load_heading, only: [:index, :show] @@ -25,8 +24,6 @@ module Budgets before_action :set_default_investment_filter, only: :index before_action :set_view, only: :index - skip_authorization_check only: :json_data - feature_flag :budgets has_orders %w[most_voted newest oldest], only: :show @@ -91,19 +88,6 @@ module Budgets super end - def json_data - investment = Budget::Investment.find(params[:id]) - data = { - investment_id: investment.id, - investment_title: investment.title, - budget_id: investment.budget.id - }.to_json - - respond_to do |format| - format.json { render json: data } - end - end - private def resource_model diff --git a/app/models/abilities/everyone.rb b/app/models/abilities/everyone.rb index 7052c48d5..252ce3896 100644 --- a/app/models/abilities/everyone.rb +++ b/app/models/abilities/everyone.rb @@ -14,7 +14,7 @@ module Abilities can [:read, :welcome], Budget can [:read], Budget can [:read], Budget::Group - can [:read, :print, :json_data], Budget::Investment + can [:read, :print], Budget::Investment can :read_results, Budget, id: Budget.finished.results_enabled.ids can :read_stats, Budget, id: Budget.valuating_or_later.stats_enabled.ids can :read_executions, Budget, phase: "finished" diff --git a/app/models/map_location.rb b/app/models/map_location.rb index 6ed4fc9cc..7adc6d639 100644 --- a/app/models/map_location.rb +++ b/app/models/map_location.rb @@ -24,4 +24,23 @@ class MapLocation < ApplicationRecord longitude: (heading.longitude.to_f if heading.longitude.present?) ) end + + def self.investments_json_data(investments) + return [] unless investments.any? + + budget_id = investments.first.budget_id + + data = investments.joins(:map_location) + .with_fallback_translation + .pluck(:id, :title, :latitude, :longitude) + + data.map do |values| + { + title: values[1], + link: "/budgets/#{budget_id}/investments/#{values[0]}", + lat: values[2], + long: values[3] + } + end + end end diff --git a/config/routes/budget.rb b/config/routes/budget.rb index 6d173af87..f6054d95f 100644 --- a/config/routes/budget.rb +++ b/config/routes/budget.rb @@ -23,6 +23,3 @@ end resolve "Budget::Investment" do |investment, options| [investment.budget, :investment, options.merge(id: investment)] end - -get "investments/:id/json_data", action: :json_data, controller: "budgets/investments" -get "/budgets/:budget_id/investments/:id/json_data", action: :json_data, controller: "budgets/investments"