diff --git a/CHANGELOG.md b/CHANGELOG.md index e48c4511..4498099e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Imported points will now be reverse geocoded only after import is finished. +### Fixed + +- Markers on the map are now being rendered with higher z-index than polylines. #577 + # 0.21.1 - 2024-12-24 ### Added diff --git a/app/javascript/maps/markers.js b/app/javascript/maps/markers.js index d1da358a..6b506285 100644 --- a/app/javascript/maps/markers.js +++ b/app/javascript/maps/markers.js @@ -9,7 +9,11 @@ export function createMarkersArray(markersData, userSettings) { const popupContent = createPopupContent(marker, userSettings.timezone, userSettings.distanceUnit); let markerColor = marker[5] < 0 ? "orange" : "blue"; - return L.circleMarker([lat, lon], { radius: 4, color: markerColor }).bindPopup(popupContent, { autoClose: false }); + return L.circleMarker([lat, lon], { + radius: 4, + color: markerColor, + zIndexOffset: 1000 + }).bindPopup(popupContent, { autoClose: false }); }); } } diff --git a/app/javascript/maps/polylines.js b/app/javascript/maps/polylines.js index e50e49b3..92f4ea27 100644 --- a/app/javascript/maps/polylines.js +++ b/app/javascript/maps/polylines.js @@ -122,7 +122,12 @@ export function createPolylinesLayer(markers, map, timezone, routeOpacity, userS return L.layerGroup( splitPolylines.map((polylineCoordinates) => { const latLngs = polylineCoordinates.map((point) => [point[0], point[1]]); - const polyline = L.polyline(latLngs, { color: "blue", opacity: 0.6, weight: 3 }); + const polyline = L.polyline(latLngs, { + color: "blue", + opacity: 0.6, + weight: 3, + zIndexOffset: 400 + }); addHighlightOnHover(polyline, map, polylineCoordinates, userSettings, distanceUnit); diff --git a/app/jobs/import_job.rb b/app/jobs/import_job.rb index 5cad02b6..a07cfa46 100644 --- a/app/jobs/import_job.rb +++ b/app/jobs/import_job.rb @@ -4,11 +4,9 @@ class ImportJob < ApplicationJob queue_as :imports def perform(user_id, import_id) - user = User.find(user_id) import = user.imports.find(import_id) import.process! - end end diff --git a/app/services/imports/watcher.rb b/app/services/imports/watcher.rb index 4ea6c07b..de9ca262 100644 --- a/app/services/imports/watcher.rb +++ b/app/services/imports/watcher.rb @@ -9,14 +9,13 @@ class Imports::Watcher def call user_directories.each do |user_email| user = User.find_by(email: user_email) + next unless user -puts "Processing directory for user: #{user.email}" user_directory_path = File.join(WATCHED_DIR_PATH, user_email) file_names = file_names(user_directory_path) file_names.each do |file_name| - puts "Processing file: #{file_name}" process_file(user, user_directory_path, file_name) end end @@ -38,9 +37,7 @@ puts "Processing directory for user: #{user.email}" end def file_names(directory_path) - Dir.entries(directory_path).select do |file| - SUPPORTED_FORMATS.include?(File.extname(file)) - end + Dir.entries(directory_path).select { |file| SUPPORTED_FORMATS.include?(File.extname(file)) } end def process_file(user, directory_path, file_name) @@ -53,11 +50,8 @@ puts "Processing directory for user: #{user.email}" import.raw_data = raw_data(file_path, import.source) import.save! - puts "Import saved for file: #{file_name}" - ImportJob.perform_later(user.id, import.id) - puts "ImportJob enqueued for user_id: #{user.id}, import_id: #{import.id}" end def find_or_initialize_import(user, file_name) @@ -109,4 +103,4 @@ puts "Processing directory for user: #{user.email}" raise UnsupportedSourceError, "Unsupported source: #{source}" end end -end \ No newline at end of file +end diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb index 1d8ba580..fb166034 100644 --- a/config/initializers/filter_parameter_logging.rb +++ b/config/initializers/filter_parameter_logging.rb @@ -6,5 +6,5 @@ # Use this to limit dissemination of sensitive information. # See the ActiveSupport::ParameterFilter documentation for supported notations and behaviors. Rails.application.config.filter_parameters += %i[ - passw email secret token _key crypt salt certificate otp ssn cvv cvc latitude longitude lat lng + passw secret token _key crypt salt certificate otp ssn cvv cvc latitude longitude lat lng ] diff --git a/spec/fixtures/files/watched/user@domain.com/2023_January.json b/spec/fixtures/files/watched/user@domain.com/2023_January.json index 1a25ab3c..f807d4f9 100644 --- a/spec/fixtures/files/watched/user@domain.com/2023_January.json +++ b/spec/fixtures/files/watched/user@domain.com/2023_January.json @@ -67,4 +67,4 @@ } } ] -} \ No newline at end of file +} diff --git a/spec/services/imports/watcher_spec.rb b/spec/services/imports/watcher_spec.rb index 65bcd19a..c155d23c 100644 --- a/spec/services/imports/watcher_spec.rb +++ b/spec/services/imports/watcher_spec.rb @@ -7,7 +7,6 @@ RSpec.describe Imports::Watcher do subject(:service) { described_class.new.call } let(:watched_dir_path) { Rails.root.join('spec/fixtures/files/watched') } - let(:user) { create(:user, email: 'user@domain.com') } before do stub_const('Imports::Watcher::WATCHED_DIR_PATH', watched_dir_path) @@ -16,31 +15,15 @@ RSpec.describe Imports::Watcher do after { Sidekiq::Testing.fake! } - context 'when there are no files in the watched directory' do - it 'does not call ImportJob' do - expect(ImportJob).not_to receive(:perform_later) + context 'when user exists' do + let!(:user) { create(:user, email: 'user@domain.com') } - service - end - end - - context 'when there are files in the watched directory' do - context 'when the file has a valid user email' do - it 'creates an import for the user' do - expect { service }.to change(user.imports, :count).by(6) - end - - it 'creates points for the user' do - initial_point_count = Point.count - service - expect(Point.count).to be > initial_point_count - end + it 'creates an import for the user' do + expect { service }.to change(user.imports, :count).by(6) end - context 'when the file has an invalid user email' do - it 'does not create an import' do - expect { service }.not_to change(Import, :count) - end + it 'enqueues importing jobs for the user' do + expect { service }.to have_enqueued_job(ImportJob).exactly(6).times end context 'when the import already exists' do @@ -56,5 +39,17 @@ RSpec.describe Imports::Watcher do end end end + + context 'when user does not exist' do + it 'does not call ImportJob' do + expect(ImportJob).not_to receive(:perform_later) + + service + end + + it 'does not create an import' do + expect { service }.not_to change(Import, :count) + end + end end end