Update distance unit in trip page

This commit is contained in:
Eugene Burmakin 2025-05-19 19:10:07 +02:00
parent 1b0de3e3af
commit 6defd4d8d0
5 changed files with 15 additions and 15 deletions

View file

@ -17,7 +17,7 @@ class TripsController < ApplicationController
@photo_sources = @trip.photo_sources
if @trip.path.blank? || @trip.distance.blank? || @trip.visited_countries.blank?
Trips::CalculateAllJob.perform_later(@trip.id)
Trips::CalculateAllJob.perform_later(@trip.id, current_user.safe_settings.distance_unit)
end
end

View file

@ -3,9 +3,9 @@
class Trips::CalculateAllJob < ApplicationJob
queue_as :default
def perform(trip_id)
def perform(trip_id, distance_unit = 'km')
Trips::CalculatePathJob.perform_later(trip_id)
Trips::CalculateDistanceJob.perform_later(trip_id)
Trips::CalculateCountriesJob.perform_later(trip_id)
Trips::CalculateDistanceJob.perform_later(trip_id, distance_unit)
Trips::CalculateCountriesJob.perform_later(trip_id, distance_unit)
end
end

View file

@ -3,23 +3,23 @@
class Trips::CalculateCountriesJob < ApplicationJob
queue_as :default
def perform(trip_id)
def perform(trip_id, distance_unit)
trip = Trip.find(trip_id)
trip.calculate_countries
trip.save!
broadcast_update(trip)
broadcast_update(trip, distance_unit)
end
private
def broadcast_update(trip)
def broadcast_update(trip, distance_unit)
Turbo::StreamsChannel.broadcast_update_to(
"trip_#{trip.id}",
target: "trip_countries",
partial: "trips/countries",
locals: { trip: trip }
locals: { trip: trip, distance_unit: distance_unit }
)
end
end

View file

@ -11,7 +11,7 @@ class Trip < ApplicationRecord
after_update :enqueue_calculation_jobs, if: -> { saved_change_to_started_at? || saved_change_to_ended_at? }
def enqueue_calculation_jobs
Trips::CalculateAllJob.perform_later(id)
Trips::CalculateAllJob.perform_later(id, user.safe_settings.distance_unit)
end
def points

View file

@ -2,23 +2,23 @@
<div class="card bg-base-200 shadow-lg">
<div class="card-body p-4">
<div class="stat-title text-xs">Distance</div>
<div class="stat-value text-lg"><%= @trip.distance %> <%= current_user.safe_settings.distance_unit %></div>
<div class="stat-value text-lg"><%= trip.distance %> <%= distance_unit %></div>
</div>
</div>
<div class="card bg-base-200 shadow-lg">
<div class="card-body p-4">
<div class="stat-title text-xs">Duration</div>
<div class="stat-value text-lg"><%= trip_duration(@trip) %></div>
<div class="stat-value text-lg"><%= trip_duration(trip) %></div>
</div>
</div>
<div class="card bg-base-200 shadow-lg">
<div class="card-body p-4">
<div class="stat-title text-xs">Countries</div>
<div class="stat-value text-lg">
<% if @trip.countries.any? %>
<%= @trip.countries.join(', ') %>
<% elsif @trip.visited_countries.present? %>
<%= @trip.visited_countries.join(', ') %>
<% if trip.countries.any? %>
<%= trip.countries.join(', ') %>
<% elsif trip.visited_countries.present? %>
<%= trip.visited_countries.join(', ') %>
<% else %>
<span>Countries are being calculated...</span>
<span class="loading loading-dots loading-sm"></span>