mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-11 09:41:40 -05:00
Update safe settings
This commit is contained in:
parent
3cea7db88f
commit
8728a22974
3 changed files with 54 additions and 39 deletions
|
|
@ -47,7 +47,7 @@ export default class extends BaseController {
|
||||||
this.clearFogRadius = parseInt(this.userSettings.fog_of_war_meters) || 50;
|
this.clearFogRadius = parseInt(this.userSettings.fog_of_war_meters) || 50;
|
||||||
this.fogLinethreshold = parseInt(this.userSettings.fog_of_war_threshold) || 90;
|
this.fogLinethreshold = parseInt(this.userSettings.fog_of_war_threshold) || 90;
|
||||||
this.routeOpacity = parseFloat(this.userSettings.route_opacity) || 0.6;
|
this.routeOpacity = parseFloat(this.userSettings.route_opacity) || 0.6;
|
||||||
this.distanceUnit = this.userSettings.maps.distance_unit || "km";
|
this.distanceUnit = this.userSettings.distance_unit || "km";
|
||||||
this.pointsRenderingMode = this.userSettings.points_rendering_mode || "raw";
|
this.pointsRenderingMode = this.userSettings.points_rendering_mode || "raw";
|
||||||
this.liveMapEnabled = this.userSettings.live_map_enabled || false;
|
this.liveMapEnabled = this.userSettings.live_map_enabled || false;
|
||||||
this.countryCodesMap = countryCodesMap();
|
this.countryCodesMap = countryCodesMap();
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,30 @@
|
||||||
class Users::SafeSettings
|
class Users::SafeSettings
|
||||||
attr_reader :settings
|
attr_reader :settings
|
||||||
|
|
||||||
def initialize(settings)
|
DEFAULT_VALUES = {
|
||||||
@settings = settings
|
'fog_of_war_meters' => 50,
|
||||||
|
'meters_between_routes' => 500,
|
||||||
|
'preferred_map_layer' => 'OpenStreetMap',
|
||||||
|
'speed_colored_routes' => false,
|
||||||
|
'points_rendering_mode' => 'raw',
|
||||||
|
'minutes_between_routes' => 30,
|
||||||
|
'time_threshold_minutes' => 30,
|
||||||
|
'merge_threshold_minutes' => 15,
|
||||||
|
'live_map_enabled' => true,
|
||||||
|
'route_opacity' => 0.6,
|
||||||
|
'immich_url' => nil,
|
||||||
|
'immich_api_key' => nil,
|
||||||
|
'photoprism_url' => nil,
|
||||||
|
'photoprism_api_key' => nil,
|
||||||
|
'maps' => { 'distance_unit' => 'km' }
|
||||||
|
}.freeze
|
||||||
|
|
||||||
|
def initialize(settings = {})
|
||||||
|
@settings = DEFAULT_VALUES.dup.merge(settings)
|
||||||
end
|
end
|
||||||
|
|
||||||
# rubocop:disable Metrics/MethodLength
|
# rubocop:disable Metrics/MethodLength
|
||||||
def config
|
def default_settings
|
||||||
{
|
{
|
||||||
fog_of_war_meters: fog_of_war_meters,
|
fog_of_war_meters: fog_of_war_meters,
|
||||||
meters_between_routes: meters_between_routes,
|
meters_between_routes: meters_between_routes,
|
||||||
|
|
@ -31,45 +49,43 @@ class Users::SafeSettings
|
||||||
# rubocop:enable Metrics/MethodLength
|
# rubocop:enable Metrics/MethodLength
|
||||||
|
|
||||||
def fog_of_war_meters
|
def fog_of_war_meters
|
||||||
settings['fog_of_war_meters'] || 50
|
settings['fog_of_war_meters']
|
||||||
end
|
end
|
||||||
|
|
||||||
def meters_between_routes
|
def meters_between_routes
|
||||||
settings['meters_between_routes'] || 500
|
settings['meters_between_routes']
|
||||||
end
|
end
|
||||||
|
|
||||||
def preferred_map_layer
|
def preferred_map_layer
|
||||||
settings['preferred_map_layer'] || 'OpenStreetMap'
|
settings['preferred_map_layer']
|
||||||
end
|
end
|
||||||
|
|
||||||
def speed_colored_routes
|
def speed_colored_routes
|
||||||
settings['speed_colored_routes'] || false
|
settings['speed_colored_routes']
|
||||||
end
|
end
|
||||||
|
|
||||||
def points_rendering_mode
|
def points_rendering_mode
|
||||||
settings['points_rendering_mode'] || 'raw'
|
settings['points_rendering_mode']
|
||||||
end
|
end
|
||||||
|
|
||||||
def minutes_between_routes
|
def minutes_between_routes
|
||||||
settings['minutes_between_routes'] || 30
|
settings['minutes_between_routes']
|
||||||
end
|
end
|
||||||
|
|
||||||
def time_threshold_minutes
|
def time_threshold_minutes
|
||||||
settings['time_threshold_minutes'] || 30
|
settings['time_threshold_minutes']
|
||||||
end
|
end
|
||||||
|
|
||||||
def merge_threshold_minutes
|
def merge_threshold_minutes
|
||||||
settings['merge_threshold_minutes'] || 15
|
settings['merge_threshold_minutes']
|
||||||
end
|
end
|
||||||
|
|
||||||
def live_map_enabled
|
def live_map_enabled
|
||||||
return settings['live_map_enabled'] if settings.key?('live_map_enabled')
|
settings['live_map_enabled']
|
||||||
|
|
||||||
true
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def route_opacity
|
def route_opacity
|
||||||
settings['route_opacity'] || 0.6
|
settings['route_opacity']
|
||||||
end
|
end
|
||||||
|
|
||||||
def immich_url
|
def immich_url
|
||||||
|
|
@ -89,10 +105,10 @@ class Users::SafeSettings
|
||||||
end
|
end
|
||||||
|
|
||||||
def maps
|
def maps
|
||||||
settings['maps'] || {}
|
settings['maps']
|
||||||
end
|
end
|
||||||
|
|
||||||
def distance_unit
|
def distance_unit
|
||||||
settings.dig('maps', 'distance_unit') || 'km'
|
settings.dig('maps', 'distance_unit')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
RSpec.describe Users::SafeSettings do
|
RSpec.describe Users::SafeSettings do
|
||||||
describe '#config' do
|
describe '#default_settings' do
|
||||||
context 'with default values' do
|
context 'with default values' do
|
||||||
let(:settings) { {} }
|
let(:settings) { {} }
|
||||||
let(:safe_settings) { described_class.new(settings) }
|
let(:safe_settings) { described_class.new(settings) }
|
||||||
|
|
||||||
it 'returns default configuration' do
|
it 'returns default configuration' do
|
||||||
expect(safe_settings.config).to eq(
|
expect(safe_settings.default_settings).to eq(
|
||||||
{
|
{
|
||||||
fog_of_war_meters: 50,
|
fog_of_war_meters: 50,
|
||||||
meters_between_routes: 500,
|
meters_between_routes: 500,
|
||||||
|
|
@ -23,7 +23,7 @@ RSpec.describe Users::SafeSettings do
|
||||||
immich_api_key: nil,
|
immich_api_key: nil,
|
||||||
photoprism_url: nil,
|
photoprism_url: nil,
|
||||||
photoprism_api_key: nil,
|
photoprism_api_key: nil,
|
||||||
maps: {},
|
maps: { "distance_unit" => "km" },
|
||||||
distance_unit: 'km'
|
distance_unit: 'km'
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
@ -53,24 +53,23 @@ RSpec.describe Users::SafeSettings do
|
||||||
let(:safe_settings) { described_class.new(settings) }
|
let(:safe_settings) { described_class.new(settings) }
|
||||||
|
|
||||||
it 'returns custom configuration' do
|
it 'returns custom configuration' do
|
||||||
expect(safe_settings.config).to eq(
|
expect(safe_settings.settings).to eq(
|
||||||
{
|
{
|
||||||
fog_of_war_meters: 100,
|
"fog_of_war_meters" => 100,
|
||||||
meters_between_routes: 1000,
|
"meters_between_routes" => 1000,
|
||||||
preferred_map_layer: 'Satellite',
|
"preferred_map_layer" => "Satellite",
|
||||||
speed_colored_routes: true,
|
"speed_colored_routes" => true,
|
||||||
points_rendering_mode: 'simplified',
|
"points_rendering_mode" => "simplified",
|
||||||
minutes_between_routes: 60,
|
"minutes_between_routes" => 60,
|
||||||
time_threshold_minutes: 45,
|
"time_threshold_minutes" => 45,
|
||||||
merge_threshold_minutes: 20,
|
"merge_threshold_minutes" => 20,
|
||||||
live_map_enabled: false,
|
"live_map_enabled" => false,
|
||||||
route_opacity: 0.8,
|
"route_opacity" => 0.8,
|
||||||
immich_url: 'https://immich.example.com',
|
"immich_url" => "https://immich.example.com",
|
||||||
immich_api_key: 'immich-key',
|
"immich_api_key" => "immich-key",
|
||||||
photoprism_url: 'https://photoprism.example.com',
|
"photoprism_url" => "https://photoprism.example.com",
|
||||||
photoprism_api_key: 'photoprism-key',
|
"photoprism_api_key" => "photoprism-key",
|
||||||
maps: { 'name' => 'custom', 'url' => 'https://custom.example.com' },
|
"maps" => { "name" => "custom", "url" => "https://custom.example.com" }
|
||||||
distance_unit: 'km'
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
@ -98,7 +97,7 @@ RSpec.describe Users::SafeSettings do
|
||||||
expect(safe_settings.immich_api_key).to be_nil
|
expect(safe_settings.immich_api_key).to be_nil
|
||||||
expect(safe_settings.photoprism_url).to be_nil
|
expect(safe_settings.photoprism_url).to be_nil
|
||||||
expect(safe_settings.photoprism_api_key).to be_nil
|
expect(safe_settings.photoprism_api_key).to be_nil
|
||||||
expect(safe_settings.maps).to eq({})
|
expect(safe_settings.maps).to eq({ "distance_unit" => "km" })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue