Files
grecia/app/models/map_location.rb
Senén Rodero Rodríguez 3fa3c90db6 Fix map markers navigation for keyboard users
By using the bindPopup function instead of the click event
popups work when using the keyboard.

Note that now we are loading all the map markers in the first
request in a single query to the database (needed when there
is a lot or markers to show). Because of that we removed the
AJAX endpoint.
2023-06-26 20:33:35 +02:00

47 lines
1.2 KiB
Ruby

class MapLocation < ApplicationRecord
belongs_to :proposal, touch: true
belongs_to :investment, class_name: "Budget::Investment", touch: true
validates :longitude, :latitude, :zoom, presence: true, numericality: true
def available?
latitude.present? && longitude.present? && zoom.present?
end
def json_data
{
investment_id: investment_id,
proposal_id: proposal_id,
lat: latitude,
long: longitude
}
end
def self.from_heading(heading)
new(
zoom: Budget::Heading::OSM_DISTRICT_LEVEL_ZOOM,
latitude: (heading.latitude.to_f if heading.latitude.present?),
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