diff --git a/app/models/point.rb b/app/models/point.rb index 150d653c..21600b19 100644 --- a/app/models/point.rb +++ b/app/models/point.rb @@ -66,20 +66,6 @@ class Point < ApplicationRecord Country.containing_point(lon, lat) end - def self.normalize_timestamp(timestamp) - case timestamp - when Integer - timestamp - when String, Numeric, DateTime, Time - timestamp.to_i - when nil - raise ArgumentError, 'Timestamp cannot be nil' - else - raise ArgumentError, "Cannot convert timestamp to integer: #{timestamp.class}" - end - end - - private # rubocop:disable Metrics/MethodLength Metrics/AbcSize diff --git a/app/models/stat.rb b/app/models/stat.rb index 0fa4e5e5..03a3fbfd 100644 --- a/app/models/stat.rb +++ b/app/models/stat.rb @@ -40,7 +40,7 @@ class Stat < ApplicationRecord timespan.to_a.map.with_index(1) do |day, index| daily_points = filter_points_for_day(monthly_points, day) # Calculate distance in meters for consistent storage - distance_meters = Point.total_distance(daily_points, :m) + distance_meters = Point.total_distance(daily_points, :km) [index, distance_meters.round] end end diff --git a/app/services/immich/import_geodata.rb b/app/services/immich/import_geodata.rb index 658e44c5..9f9679ee 100644 --- a/app/services/immich/import_geodata.rb +++ b/app/services/immich/import_geodata.rb @@ -56,7 +56,7 @@ class Immich::ImportGeodata latitude: asset['exifInfo']['latitude'], longitude: asset['exifInfo']['longitude'], lonlat: "SRID=4326;POINT(#{asset['exifInfo']['longitude']} #{asset['exifInfo']['latitude']})", - timestamp: Point.normalize_timestamp(asset['exifInfo']['dateTimeOriginal']) + timestamp: Time.zone.parse(asset['exifInfo']['dateTimeOriginal']).to_i } end diff --git a/app/services/photoprism/import_geodata.rb b/app/services/photoprism/import_geodata.rb index 464400da..c31946c1 100644 --- a/app/services/photoprism/import_geodata.rb +++ b/app/services/photoprism/import_geodata.rb @@ -66,7 +66,7 @@ class Photoprism::ImportGeodata latitude: asset['Lat'], longitude: asset['Lng'], lonlat: "SRID=4326;POINT(#{asset['Lng']} #{asset['Lat']})", - timestamp: Point.normalize_timestamp(asset['TakenAt']) + timestamp: Time.zone.parse(asset['TakenAt']).to_i } end diff --git a/app/views/stats/_stat.html.erb b/app/views/stats/_stat.html.erb index f052b2df..470d3438 100644 --- a/app/views/stats/_stat.html.erb +++ b/app/views/stats/_stat.html.erb @@ -18,11 +18,13 @@ <%= countries_and_cities_stat_for_month(stat) %> - ", - data-user-settings="<%= current_user.safe_settings.default_settings.to_json %>"> + <%= area_chart( + stat.daily_distance.map { |day, distance_meters| + [day, Stat.convert_distance(distance_meters, current_user.safe_settings.distance_unit).round(2)] + }, + height: '200px', + suffix: " #{current_user.safe_settings.distance_unit}", + xtitle: 'Day', + ytitle: 'Distance' + ) %>