From 382226578563e0ecd6f7118f85e663da73f2b1c0 Mon Sep 17 00:00:00 2001 From: Jivan Pal Date: Wed, 14 May 2025 21:38:37 +0100 Subject: [PATCH 1/5] docker-compose.yml: Add PostGIS envvar to create database on initial setup. --- docker/docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index bfadcb5a..a5363af6 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -29,6 +29,7 @@ services: environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password + POSTGRES_DB: dawarich_development restart: always healthcheck: test: [ "CMD-SHELL", "pg_isready -U postgres -d dawarich_development" ] From ced4e0617ffbafa020ac72e25e2b432c644a5eab Mon Sep 17 00:00:00 2001 From: Victor Goncharov Date: Sun, 18 May 2025 12:35:16 +0200 Subject: [PATCH 2/5] Update build_and_push.yml On Ampere Altra/Emag nodes, the image manifest arch should be linux/arm64/v8. This allows for supporting that architecture. --- .github/workflows/build_and_push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_push.yml b/.github/workflows/build_and_push.yml index 60fcb37c..6d0d1795 100644 --- a/.github/workflows/build_and_push.yml +++ b/.github/workflows/build_and_push.yml @@ -74,6 +74,6 @@ jobs: push: true tags: ${{ steps.docker_meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 + platforms: linux/amd64,linux/arm64,linux/arm/v8,linux/arm/v7,linux/arm/v6 cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache From aac1d667ac8d313a4962ecee29d5f1b91459ba8d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 May 2025 14:34:44 +0000 Subject: [PATCH 3/5] Bump rubocop-rails from 2.31.0 to 2.32.0 Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.31.0 to 2.32.0. - [Release notes](https://github.com/rubocop/rubocop-rails/releases) - [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.31.0...v2.32.0) --- updated-dependencies: - dependency-name: rubocop-rails dependency-version: 2.32.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 523f8e9f..84060629 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -180,7 +180,7 @@ GEM rdoc (>= 4.0.0) reline (>= 0.4.2) jmespath (1.6.2) - json (2.10.2) + json (2.12.0) json-schema (5.0.1) addressable (~> 2.8) jwt (2.10.1) @@ -197,7 +197,7 @@ GEM activerecord kaminari-core (= 1.2.2) kaminari-core (1.2.2) - language_server-protocol (3.17.0.4) + language_server-protocol (3.17.0.5) lint_roller (1.1.0) logger (1.7.0) lograge (0.14.0) @@ -251,8 +251,8 @@ GEM optimist (3.2.0) orm_adapter (0.5.0) ostruct (0.6.1) - parallel (1.26.3) - parser (3.3.7.4) + parallel (1.27.0) + parser (3.3.8.0) ast (~> 2.4.1) racc patience_diff (1.2.0) @@ -282,7 +282,7 @@ GEM activesupport (>= 3.0.0) raabro (1.4.0) racc (1.8.1) - rack (3.1.13) + rack (3.1.15) rack-session (2.1.0) base64 (>= 0.1.0) rack (>= 3.0.0) @@ -371,7 +371,7 @@ GEM rswag-ui (2.16.0) actionpack (>= 5.2, < 8.1) railties (>= 5.2, < 8.1) - rubocop (1.75.2) + rubocop (1.75.6) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -382,15 +382,15 @@ GEM rubocop-ast (>= 1.44.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.44.0) + rubocop-ast (1.44.1) parser (>= 3.3.7.2) prism (~> 1.4) - rubocop-rails (2.31.0) + rubocop-rails (2.32.0) activesupport (>= 4.2.0) lint_roller (~> 1.1) rack (>= 1.1) rubocop (>= 1.75.0, < 2.0) - rubocop-ast (>= 1.38.0, < 2.0) + rubocop-ast (>= 1.44.0, < 2.0) ruby-progressbar (1.13.0) securerandom (0.4.1) sentry-rails (5.23.0) From 8308354ac58c4463052bbc9b47647520764e2ab1 Mon Sep 17 00:00:00 2001 From: Eugene Burmakin Date: Wed, 21 May 2025 18:57:29 +0200 Subject: [PATCH 4/5] Move points jobs to the `points` queue --- .app_version | 2 +- CHANGELOG.md | 11 +++++++++++ app/jobs/overland/batch_creating_job.rb | 2 +- app/jobs/owntracks/point_creating_job.rb | 2 +- app/jobs/points/create_job.rb | 2 +- config/sidekiq.yml | 1 + 6 files changed, 16 insertions(+), 4 deletions(-) diff --git a/.app_version b/.app_version index 5564d9ac..5d700c01 100644 --- a/.app_version +++ b/.app_version @@ -1 +1 @@ -0.26.5 +0.26.6 diff --git a/CHANGELOG.md b/CHANGELOG.md index c9b5c904..16e7f242 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). + +# 0.26.6 - 2025-05-21 + +## Added + +- armv8 to docker build. #1249 + +## Changed + +- Points are now being created in the `points` queue. #1243 + # 0.26.5 - 2025-05-20 ## Fixed diff --git a/app/jobs/overland/batch_creating_job.rb b/app/jobs/overland/batch_creating_job.rb index 8e8a1790..2933e81b 100644 --- a/app/jobs/overland/batch_creating_job.rb +++ b/app/jobs/overland/batch_creating_job.rb @@ -3,7 +3,7 @@ class Overland::BatchCreatingJob < ApplicationJob include PointValidation - queue_as :default + queue_as :points def perform(params, user_id) data = Overland::Params.new(params).call diff --git a/app/jobs/owntracks/point_creating_job.rb b/app/jobs/owntracks/point_creating_job.rb index 947ba6ec..5695894e 100644 --- a/app/jobs/owntracks/point_creating_job.rb +++ b/app/jobs/owntracks/point_creating_job.rb @@ -3,7 +3,7 @@ class Owntracks::PointCreatingJob < ApplicationJob include PointValidation - queue_as :default + queue_as :points def perform(point_params, user_id) parsed_params = OwnTracks::Params.new(point_params).call diff --git a/app/jobs/points/create_job.rb b/app/jobs/points/create_job.rb index 7dc3d261..8d8dbf88 100644 --- a/app/jobs/points/create_job.rb +++ b/app/jobs/points/create_job.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class Points::CreateJob < ApplicationJob - queue_as :default + queue_as :points def perform(params, user_id) data = Points::Params.new(params, user_id).call diff --git a/config/sidekiq.yml b/config/sidekiq.yml index b6e2e4c1..7bde1468 100644 --- a/config/sidekiq.yml +++ b/config/sidekiq.yml @@ -1,6 +1,7 @@ --- :concurrency: <%= ENV.fetch("BACKGROUND_PROCESSING_CONCURRENCY", 10) %> :queues: + - points - default - imports - exports From 64d33f5e6eb193041193267842901040e4cb7f1a Mon Sep 17 00:00:00 2001 From: Eugene Burmakin Date: Thu, 22 May 2025 19:09:43 +0200 Subject: [PATCH 5/5] Fix few issues --- CHANGELOG.md | 6 ++++-- .../api/v1/maps/tile_usage_controller.rb | 2 +- app/javascript/controllers/maps_controller.js | 14 ++++++++++---- app/serializers/points/geojson_serializer.rb | 2 +- .../{ => metrics}/maps/tile_usage/track.rb | 2 +- app/services/users/safe_settings.rb | 2 +- .../fixtures/files/geojson/export_same_points.json | 2 +- spec/requests/api/v1/maps/tile_usage_spec.rb | 6 +++--- spec/serializers/points/geojson_serializer_spec.rb | 2 +- .../{ => metrics}/maps/tile_usage/track_spec.rb | 2 +- spec/services/users/safe_settings_spec.rb | 12 ++++++------ 11 files changed, 30 insertions(+), 22 deletions(-) rename app/services/{ => metrics}/maps/tile_usage/track.rb (95%) rename spec/services/{ => metrics}/maps/tile_usage/track_spec.rb (95%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 16e7f242..f7d2e997 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). -# 0.26.6 - 2025-05-21 +# 0.26.6 - 2025-05-22 ## Added @@ -14,7 +14,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## Changed - Points are now being created in the `points` queue. #1243 - +- Route opacity is now being displayed as percentage in the map settings. #462 #1224 +- Exported GeoJSON file now contains coordinates as floats instead of strings, as per RFC 7946. #762 +- Fog of war now can be set to 200 meter per point. #630 # 0.26.5 - 2025-05-20 ## Fixed diff --git a/app/controllers/api/v1/maps/tile_usage_controller.rb b/app/controllers/api/v1/maps/tile_usage_controller.rb index c22778e7..4e65085d 100644 --- a/app/controllers/api/v1/maps/tile_usage_controller.rb +++ b/app/controllers/api/v1/maps/tile_usage_controller.rb @@ -2,7 +2,7 @@ class Api::V1::Maps::TileUsageController < ApiController def create - Maps::TileUsage::Track.new(current_api_user.id, tile_usage_params[:count].to_i).call + Metrics::Maps::TileUsage::Track.new(current_api_user.id, tile_usage_params[:count].to_i).call head :ok end diff --git a/app/javascript/controllers/maps_controller.js b/app/javascript/controllers/maps_controller.js index 7161d356..a998798d 100644 --- a/app/javascript/controllers/maps_controller.js +++ b/app/javascript/controllers/maps_controller.js @@ -46,6 +46,7 @@ export default class extends BaseController { this.userSettings = JSON.parse(this.element.dataset.user_settings); this.clearFogRadius = parseInt(this.userSettings.fog_of_war_meters) || 50; this.fogLinethreshold = parseInt(this.userSettings.fog_of_war_threshold) || 90; + // Store route opacity as decimal (0-1) internally this.routeOpacity = parseFloat(this.userSettings.route_opacity) || 0.6; this.distanceUnit = this.userSettings.distance_unit || "km"; this.pointsRenderingMode = this.userSettings.points_rendering_mode || "raw"; @@ -726,16 +727,16 @@ export default class extends BaseController { // Form HTML div.innerHTML = `
- +
- +
- +
@@ -863,12 +864,16 @@ export default class extends BaseController { event.preventDefault(); console.log('Form submitted'); + // Convert percentage to decimal for route_opacity + const opacityValue = event.target.route_opacity.value.replace('%', ''); + const decimalOpacity = parseFloat(opacityValue) / 100; + fetch(`/api/v1/settings?api_key=${this.apiKey}`, { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ settings: { - route_opacity: event.target.route_opacity.value, + route_opacity: decimalOpacity.toString(), fog_of_war_meters: event.target.fog_of_war_meters.value, fog_of_war_threshold: event.target.fog_of_war_threshold.value, meters_between_routes: event.target.meters_between_routes.value, @@ -940,6 +945,7 @@ export default class extends BaseController { // Update the local settings this.userSettings = { ...this.userSettings, ...newSettings }; + // Store the value as decimal internally, but display as percentage in UI this.routeOpacity = parseFloat(newSettings.route_opacity) || 0.6; this.clearFogRadius = parseInt(newSettings.fog_of_war_meters) || 50; diff --git a/app/serializers/points/geojson_serializer.rb b/app/serializers/points/geojson_serializer.rb index 1fd9a810..17256f77 100644 --- a/app/serializers/points/geojson_serializer.rb +++ b/app/serializers/points/geojson_serializer.rb @@ -14,7 +14,7 @@ class Points::GeojsonSerializer type: 'Feature', geometry: { type: 'Point', - coordinates: [point.lon.to_s, point.lat.to_s] + coordinates: [point.lon, point.lat] }, properties: PointSerializer.new(point).call } diff --git a/app/services/maps/tile_usage/track.rb b/app/services/metrics/maps/tile_usage/track.rb similarity index 95% rename from app/services/maps/tile_usage/track.rb rename to app/services/metrics/maps/tile_usage/track.rb index a2ec819d..68ef6cc0 100644 --- a/app/services/maps/tile_usage/track.rb +++ b/app/services/metrics/maps/tile_usage/track.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class Maps::TileUsage::Track +class Metrics::Maps::TileUsage::Track def initialize(user_id, count = 1) @user_id = user_id @count = count diff --git a/app/services/users/safe_settings.rb b/app/services/users/safe_settings.rb index 64b1209a..c549dc88 100644 --- a/app/services/users/safe_settings.rb +++ b/app/services/users/safe_settings.rb @@ -13,7 +13,7 @@ class Users::SafeSettings 'time_threshold_minutes' => 30, 'merge_threshold_minutes' => 15, 'live_map_enabled' => true, - 'route_opacity' => 0.6, + 'route_opacity' => 60, 'immich_url' => nil, 'immich_api_key' => nil, 'photoprism_url' => nil, diff --git a/spec/fixtures/files/geojson/export_same_points.json b/spec/fixtures/files/geojson/export_same_points.json index f51960a5..3f6845cc 100644 --- a/spec/fixtures/files/geojson/export_same_points.json +++ b/spec/fixtures/files/geojson/export_same_points.json @@ -1 +1 @@ -{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":["37.6173","55.755826"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":["37.6173","55.755826"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459201,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":["37.6173","55.755826"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459202,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":["37.6173","55.755826"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459203,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":["37.6173","55.755826"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459204,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":["37.6173","55.755826"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459205,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":["37.6173","55.755826"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459206,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":["37.6173","55.755826"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459207,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":["37.6173","55.755826"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459208,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":["37.6173","55.755826"]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459209,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}}]} +{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[37.6173,55.755826]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459200,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[37.6173,55.755826]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459201,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[37.6173,55.755826]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459202,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[37.6173,55.755826]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459203,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[37.6173,55.755826]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459204,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[37.6173,55.755826]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459205,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[37.6173,55.755826]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459206,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[37.6173,55.755826]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459207,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[37.6173,55.755826]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459208,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[37.6173,55.755826]},"properties":{"battery_status":"unplugged","ping":"MyString","battery":1,"tracker_id":"MyString","topic":"MyString","altitude":1,"longitude":"37.6173","velocity":"0","trigger":"background_event","bssid":"MyString","ssid":"MyString","connection":"wifi","vertical_accuracy":1,"accuracy":1,"timestamp":1609459209,"latitude":"55.755826","mode":1,"inrids":[],"in_regions":[],"city":null,"country":null,"geodata":{},"course":null,"course_accuracy":null,"external_track_id":null}}]} diff --git a/spec/requests/api/v1/maps/tile_usage_spec.rb b/spec/requests/api/v1/maps/tile_usage_spec.rb index 574fa9c1..caac04cc 100644 --- a/spec/requests/api/v1/maps/tile_usage_spec.rb +++ b/spec/requests/api/v1/maps/tile_usage_spec.rb @@ -5,11 +5,11 @@ require 'rails_helper' RSpec.describe 'Api::V1::Maps::TileUsage', type: :request do describe 'POST /api/v1/maps/tile_usage' do let(:tile_count) { 5 } - let(:track_service) { instance_double(Maps::TileUsage::Track) } + let(:track_service) { instance_double(Metrics::Maps::TileUsage::Track) } let(:user) { create(:user) } before do - allow(Maps::TileUsage::Track).to receive(:new).with(user.id, tile_count).and_return(track_service) + allow(Metrics::Maps::TileUsage::Track).to receive(:new).with(user.id, tile_count).and_return(track_service) allow(track_service).to receive(:call) end @@ -19,7 +19,7 @@ RSpec.describe 'Api::V1::Maps::TileUsage', type: :request do params: { tile_usage: { count: tile_count } }, headers: { 'Authorization' => "Bearer #{user.api_key}" } - expect(Maps::TileUsage::Track).to have_received(:new).with(user.id, tile_count) + expect(Metrics::Maps::TileUsage::Track).to have_received(:new).with(user.id, tile_count) expect(track_service).to have_received(:call) expect(response).to have_http_status(:ok) end diff --git a/spec/serializers/points/geojson_serializer_spec.rb b/spec/serializers/points/geojson_serializer_spec.rb index 6ba9fd37..7407c094 100644 --- a/spec/serializers/points/geojson_serializer_spec.rb +++ b/spec/serializers/points/geojson_serializer_spec.rb @@ -20,7 +20,7 @@ RSpec.describe Points::GeojsonSerializer do type: 'Feature', geometry: { type: 'Point', - coordinates: [point.lon.to_s, point.lat.to_s] + coordinates: [point.lon, point.lat] }, properties: PointSerializer.new(point).call } diff --git a/spec/services/maps/tile_usage/track_spec.rb b/spec/services/metrics/maps/tile_usage/track_spec.rb similarity index 95% rename from spec/services/maps/tile_usage/track_spec.rb rename to spec/services/metrics/maps/tile_usage/track_spec.rb index 678f60b1..524c074b 100644 --- a/spec/services/maps/tile_usage/track_spec.rb +++ b/spec/services/metrics/maps/tile_usage/track_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' require 'prometheus_exporter/client' -RSpec.describe Maps::TileUsage::Track do +RSpec.describe Metrics::Maps::TileUsage::Track do describe '#call' do subject(:track) { described_class.new(user_id, tile_count).call } diff --git a/spec/services/users/safe_settings_spec.rb b/spec/services/users/safe_settings_spec.rb index 54dfdfd1..ee18406b 100644 --- a/spec/services/users/safe_settings_spec.rb +++ b/spec/services/users/safe_settings_spec.rb @@ -18,7 +18,7 @@ RSpec.describe Users::SafeSettings do time_threshold_minutes: 30, merge_threshold_minutes: 15, live_map_enabled: true, - route_opacity: 0.6, + route_opacity: 60, immich_url: nil, immich_api_key: nil, photoprism_url: nil, @@ -42,7 +42,7 @@ RSpec.describe Users::SafeSettings do 'time_threshold_minutes' => 45, 'merge_threshold_minutes' => 20, 'live_map_enabled' => false, - 'route_opacity' => 0.8, + 'route_opacity' => 80, 'immich_url' => 'https://immich.example.com', 'immich_api_key' => 'immich-key', 'photoprism_url' => 'https://photoprism.example.com', @@ -64,7 +64,7 @@ RSpec.describe Users::SafeSettings do "time_threshold_minutes" => 45, "merge_threshold_minutes" => 20, "live_map_enabled" => false, - "route_opacity" => 0.8, + "route_opacity" => 80, "immich_url" => "https://immich.example.com", "immich_api_key" => "immich-key", "photoprism_url" => "https://photoprism.example.com", @@ -92,7 +92,7 @@ RSpec.describe Users::SafeSettings do expect(safe_settings.time_threshold_minutes).to eq(30) expect(safe_settings.merge_threshold_minutes).to eq(15) expect(safe_settings.live_map_enabled).to be true - expect(safe_settings.route_opacity).to eq(0.6) + expect(safe_settings.route_opacity).to eq(60) expect(safe_settings.immich_url).to be_nil expect(safe_settings.immich_api_key).to be_nil expect(safe_settings.photoprism_url).to be_nil @@ -113,7 +113,7 @@ RSpec.describe Users::SafeSettings do 'time_threshold_minutes' => 45, 'merge_threshold_minutes' => 20, 'live_map_enabled' => false, - 'route_opacity' => 0.8, + 'route_opacity' => 80, 'immich_url' => 'https://immich.example.com', 'immich_api_key' => 'immich-key', 'photoprism_url' => 'https://photoprism.example.com', @@ -132,7 +132,7 @@ RSpec.describe Users::SafeSettings do expect(safe_settings.time_threshold_minutes).to eq(45) expect(safe_settings.merge_threshold_minutes).to eq(20) expect(safe_settings.live_map_enabled).to be false - expect(safe_settings.route_opacity).to eq(0.8) + expect(safe_settings.route_opacity).to eq(80) expect(safe_settings.immich_url).to eq('https://immich.example.com') expect(safe_settings.immich_api_key).to eq('immich-key') expect(safe_settings.photoprism_url).to eq('https://photoprism.example.com')