From ebee2149820772c3b2bf823fb80b33b2f360c1b4 Mon Sep 17 00:00:00 2001 From: Eugene Burmakin Date: Thu, 7 Nov 2024 13:07:54 +0100 Subject: [PATCH] Add live map enabled setting --- app/controllers/api/v1/settings_controller.rb | 2 +- .../controllers/imports_controller.js | 5 +++++ app/javascript/controllers/maps_controller.js | 18 +++++++++++++++++- app/services/immich/import_parser.rb | 2 +- ...7112451_add_live_map_enabled_to_settings.rb | 14 ++++++++++++++ db/data_schema.rb | 2 +- db/schema.rb | 5 ++++- 7 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 db/data/20241107112451_add_live_map_enabled_to_settings.rb diff --git a/app/controllers/api/v1/settings_controller.rb b/app/controllers/api/v1/settings_controller.rb index 4834178f..660f88e0 100644 --- a/app/controllers/api/v1/settings_controller.rb +++ b/app/controllers/api/v1/settings_controller.rb @@ -31,7 +31,7 @@ class Api::V1::SettingsController < ApiController params.require(:settings).permit( :meters_between_routes, :minutes_between_routes, :fog_of_war_meters, :time_threshold_minutes, :merge_threshold_minutes, :route_opacity, - :preferred_map_layer, :points_rendering_mode + :preferred_map_layer, :points_rendering_mode, :live_map_enabled ) end end diff --git a/app/javascript/controllers/imports_controller.js b/app/javascript/controllers/imports_controller.js index fe302ac7..f6259a03 100644 --- a/app/javascript/controllers/imports_controller.js +++ b/app/javascript/controllers/imports_controller.js @@ -5,6 +5,11 @@ export default class extends Controller { static targets = ["index"]; connect() { + if (!this.hasIndexTarget) { + console.log("No index target found, skipping subscription") + return + } + console.log("Imports controller connected", { hasIndexTarget: this.hasIndexTarget, element: this.element, diff --git a/app/javascript/controllers/maps_controller.js b/app/javascript/controllers/maps_controller.js index 025f9655..404d8f69 100644 --- a/app/javascript/controllers/maps_controller.js +++ b/app/javascript/controllers/maps_controller.js @@ -44,6 +44,7 @@ export default class extends Controller { this.routeOpacity = parseFloat(this.userSettings.route_opacity) || 0.6; this.distanceUnit = this.element.dataset.distance_unit || "km"; this.pointsRenderingMode = this.userSettings.points_rendering_mode || "raw"; + this.liveMapEnabled = this.userSettings.liveMapEnabled || false; this.countryCodesMap = countryCodesMap(); this.center = this.markers[this.markers.length - 1] || [52.514568, 13.350111]; @@ -551,6 +552,12 @@ export default class extends Controller { Simplified + + `; @@ -583,6 +590,14 @@ export default class extends Controller { } } + liveMapEnabledChecked(value) { + if (value === this.pointsRenderingMode) { + return 'checked'; + } else { + return ''; + } + } + updateSettings(event) { event.preventDefault(); @@ -597,7 +612,8 @@ export default class extends Controller { minutes_between_routes: event.target.minutes_between_routes.value, time_threshold_minutes: event.target.time_threshold_minutes.value, merge_threshold_minutes: event.target.merge_threshold_minutes.value, - points_rendering_mode: event.target.points_rendering_mode.value + points_rendering_mode: event.target.points_rendering_mode.value, + live_map_enabled: event.target.live_map_enabled.checked }, }), }) diff --git a/app/services/immich/import_parser.rb b/app/services/immich/import_parser.rb index 5d74c9d3..b0a2a38c 100644 --- a/app/services/immich/import_parser.rb +++ b/app/services/immich/import_parser.rb @@ -15,7 +15,7 @@ class Immich::ImportParser json.each.with_index(1) { |point, index| create_point(point, index) } end - def create_point(point) + def create_point(point, index) return 0 if point['latitude'].blank? || point['longitude'].blank? || point['timestamp'].blank? return 0 if point_exists?(point, point['timestamp']) diff --git a/db/data/20241107112451_add_live_map_enabled_to_settings.rb b/db/data/20241107112451_add_live_map_enabled_to_settings.rb new file mode 100644 index 00000000..74cd3b2a --- /dev/null +++ b/db/data/20241107112451_add_live_map_enabled_to_settings.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddLiveMapEnabledToSettings < ActiveRecord::Migration[7.2] + def up + User.find_each do |user| + user.settings = user.settings.merge(live_map_enabled: false) + user.save! + end + end + + def down + raise ActiveRecord::IrreversibleMigration + end +end diff --git a/db/data_schema.rb b/db/data_schema.rb index 8dfd037d..e14cf9d4 100644 --- a/db/data_schema.rb +++ b/db/data_schema.rb @@ -1 +1 @@ -DataMigrate::Data.define(version: 20240730130922) +DataMigrate::Data.define(version: 20241107112451) diff --git a/db/schema.rb b/db/schema.rb index 0eb33448..46ceb3d4 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.2].define(version: 2024_08_22_092405) do +ActiveRecord::Schema[7.2].define(version: 2024_10_30_152025) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -53,6 +53,9 @@ ActiveRecord::Schema[7.2].define(version: 2024_08_22_092405) do t.index ["user_id"], name: "index_areas_on_user_id" end + create_table "data_migrations", primary_key: "version", id: :string, force: :cascade do |t| + end + create_table "exports", force: :cascade do |t| t.string "name", null: false t.string "url"