SYMBOL INDEX (8919 symbols across 721 files) FILE: app/channels/application_cable/channel.rb type ApplicationCable (line 3) | module ApplicationCable class Channel (line 4) | class Channel < ActionCable::Channel::Base FILE: app/channels/application_cable/connection.rb type ApplicationCable (line 3) | module ApplicationCable class Connection (line 4) | class Connection < ActionCable::Connection::Base method connect (line 7) | def connect method find_verified_user (line 13) | def find_verified_user FILE: app/channels/family_locations_channel.rb class FamilyLocationsChannel (line 3) | class FamilyLocationsChannel < ApplicationCable::Channel method subscribed (line 4) | def subscribed method unsubscribed (line 11) | def unsubscribed FILE: app/channels/imports_channel.rb class ImportsChannel (line 3) | class ImportsChannel < ApplicationCable::Channel method subscribed (line 4) | def subscribed FILE: app/channels/notifications_channel.rb class NotificationsChannel (line 3) | class NotificationsChannel < ApplicationCable::Channel method subscribed (line 4) | def subscribed FILE: app/channels/points_channel.rb class PointsChannel (line 3) | class PointsChannel < ApplicationCable::Channel method subscribed (line 4) | def subscribed FILE: app/channels/tracks_channel.rb class TracksChannel (line 3) | class TracksChannel < ApplicationCable::Channel method subscribed (line 4) | def subscribed FILE: app/controllers/api/v1/areas_controller.rb class Api::V1::AreasController (line 3) | class Api::V1::AreasController < ApiController method index (line 6) | def index method show (line 12) | def show method create (line 16) | def create method update (line 26) | def update method destroy (line 34) | def destroy method set_area (line 42) | def set_area method area_params (line 46) | def area_params FILE: app/controllers/api/v1/countries/borders_controller.rb class Api::V1::Countries::BordersController (line 3) | class Api::V1::Countries::BordersController < ApiController method index (line 4) | def index FILE: app/controllers/api/v1/countries/visited_cities_controller.rb class Api::V1::Countries::VisitedCitiesController (line 3) | class Api::V1::Countries::VisitedCitiesController < ApiController method index (line 8) | def index method required_params (line 28) | def required_params FILE: app/controllers/api/v1/digests_controller.rb class Api::V1::DigestsController (line 3) | class Api::V1::DigestsController < ApiController method index (line 6) | def index method show (line 13) | def show method create (line 22) | def create method destroy (line 39) | def destroy method authenticate_active_api_user! (line 47) | def authenticate_active_api_user! method available_years_for_generation (line 53) | def available_years_for_generation method valid_year? (line 60) | def valid_year?(year) method distance_unit (line 66) | def distance_unit FILE: app/controllers/api/v1/families/locations_controller.rb class Api::V1::Families::LocationsController (line 3) | class Api::V1::Families::LocationsController < ApiController method index (line 7) | def index method history (line 17) | def history method ensure_user_in_family! (line 42) | def ensure_user_in_family! FILE: app/controllers/api/v1/health_controller.rb class Api::V1::HealthController (line 3) | class Api::V1::HealthController < ApiController method index (line 6) | def index FILE: app/controllers/api/v1/imports_controller.rb class Api::V1::ImportsController (line 3) | class Api::V1::ImportsController < ApiController method index (line 11) | def index method show (line 25) | def show method create (line 31) | def create method generate_unique_import_name (line 61) | def generate_unique_import_name(original_name) method validate_file_type (line 70) | def validate_file_type method serialize_import (line 81) | def serialize_import(import) FILE: app/controllers/api/v1/insights_controller.rb class Api::V1::InsightsController (line 3) | class Api::V1::InsightsController < ApiController method index (line 4) | def index method details (line 21) | def details method load_year_data (line 39) | def load_year_data method load_totals (line 45) | def load_totals method load_heatmap (line 49) | def load_heatmap method load_comparison (line 53) | def load_comparison method load_travel_patterns (line 62) | def load_travel_patterns method calculate_yearly_day_of_week (line 75) | def calculate_yearly_day_of_week method fetch_yearly_top_visits (line 90) | def fetch_yearly_top_visits method distance_unit (line 100) | def distance_unit method plan_metadata (line 104) | def plan_metadata FILE: app/controllers/api/v1/locations_controller.rb class Api::V1::LocationsController (line 3) | class Api::V1::LocationsController < ApiController method index (line 7) | def index method suggestions (line 21) | def suggestions method search_query (line 46) | def search_query method search_params (line 50) | def search_params method coordinate_search? (line 61) | def coordinate_search? method validate_search_params (line 65) | def validate_search_params method validate_suggestion_params (line 83) | def validate_suggestion_params method parse_date (line 92) | def parse_date(date_string) FILE: app/controllers/api/v1/maps/hexagons_controller.rb class Api::V1::Maps::HexagonsController (line 3) | class Api::V1::Maps::HexagonsController < ApiController method index (line 6) | def index method bounds (line 30) | def bounds method resolve_hexagon_context (line 59) | def resolve_hexagon_context method resolve_public_sharing_context (line 65) | def resolve_public_sharing_context method resolve_authenticated_context (line 77) | def resolve_authenticated_context method handle_service_error (line 86) | def handle_service_error method public_sharing_request? (line 90) | def public_sharing_request? FILE: app/controllers/api/v1/overland/batches_controller.rb class Api::V1::Overland::BatchesController (line 3) | class Api::V1::Overland::BatchesController < ApiController method create (line 7) | def create method batch_params (line 19) | def batch_params FILE: app/controllers/api/v1/owntracks/points_controller.rb class Api::V1::Owntracks::PointsController (line 3) | class Api::V1::Owntracks::PointsController < ApiController method create (line 7) | def create method point_params (line 19) | def point_params FILE: app/controllers/api/v1/photos_controller.rb class Api::V1::PhotosController (line 3) | class Api::V1::PhotosController < ApiController method index (line 7) | def index method thumbnail (line 22) | def thumbnail method fetch_cached_thumbnail (line 29) | def fetch_cached_thumbnail(source) method handle_thumbnail_response (line 39) | def handle_thumbnail_response(response) method thumbnail_error (line 48) | def thumbnail_error(response) method integration_configured? (line 54) | def integration_configured? method check_integration_configured (line 58) | def check_integration_configured method check_source (line 62) | def check_source method unauthorized_integration (line 66) | def unauthorized_integration FILE: app/controllers/api/v1/places_controller.rb type Api (line 3) | module Api type V1 (line 4) | module V1 class PlacesController (line 5) | class PlacesController < ApiController method index (line 8) | def index method show (line 57) | def show method create (line 61) | def create method update (line 74) | def update method destroy (line 85) | def destroy method nearby (line 91) | def nearby method set_place (line 108) | def set_place method place_params (line 112) | def place_params method tag_ids (line 116) | def tag_ids method add_tags (line 121) | def add_tags method set_tags (line 128) | def set_tags method serialize_place (line 134) | def serialize_place(place) FILE: app/controllers/api/v1/plan_controller.rb class Api::V1::PlanController (line 3) | class Api::V1::PlanController < ApiController method show (line 4) | def show method full_features (line 16) | def full_features method lite_features (line 22) | def lite_features FILE: app/controllers/api/v1/points/tracked_months_controller.rb class Api::V1::Points::TrackedMonthsController (line 3) | class Api::V1::Points::TrackedMonthsController < ApiController method index (line 4) | def index FILE: app/controllers/api/v1/points_controller.rb class Api::V1::PointsController (line 3) | class Api::V1::PointsController < ApiController method index (line 10) | def index method create (line 55) | def create method update (line 61) | def update method destroy (line 78) | def destroy method bulk_destroy (line 85) | def bulk_destroy method point_params (line 97) | def point_params method batch_params (line 101) | def batch_params method bulk_destroy_params (line 105) | def bulk_destroy_params method point_serializer (line 109) | def point_serializer FILE: app/controllers/api/v1/settings_controller.rb class Api::V1::SettingsController (line 3) | class Api::V1::SettingsController < ApiController method index (line 6) | def index method update (line 16) | def update method transportation_recalculation_status (line 33) | def transportation_recalculation_status method recalculation_status_manager (line 47) | def recalculation_status_manager method settings_params (line 51) | def settings_params FILE: app/controllers/api/v1/stats_controller.rb class Api::V1::StatsController (line 3) | class Api::V1::StatsController < ApiController method index (line 4) | def index FILE: app/controllers/api/v1/subscriptions_controller.rb class Api::V1::SubscriptionsController (line 3) | class Api::V1::SubscriptionsController < ApiController method callback (line 6) | def callback FILE: app/controllers/api/v1/tags_controller.rb type Api (line 3) | module Api type V1 (line 4) | module V1 class TagsController (line 5) | class TagsController < ApiController method privacy_zones (line 6) | def privacy_zones FILE: app/controllers/api/v1/timeline_controller.rb type Api (line 3) | module Api type V1 (line 4) | module V1 class TimelineController (line 5) | class TimelineController < ApiController method index (line 8) | def index method date_params_present? (line 32) | def date_params_present? method range_too_large? (line 36) | def range_too_large? FILE: app/controllers/api/v1/tracks/points_controller.rb class Api::V1::Tracks::PointsController (line 3) | class Api::V1::Tracks::PointsController < ApiController method index (line 4) | def index FILE: app/controllers/api/v1/tracks_controller.rb class Api::V1::TracksController (line 3) | class Api::V1::TracksController < ApiController method index (line 4) | def index method show (line 17) | def show FILE: app/controllers/api/v1/users_controller.rb class Api::V1::UsersController (line 3) | class Api::V1::UsersController < ApiController method me (line 4) | def me FILE: app/controllers/api/v1/visits/possible_places_controller.rb class Api::V1::Visits::PossiblePlacesController (line 3) | class Api::V1::Visits::PossiblePlacesController < ApiController method index (line 4) | def index FILE: app/controllers/api/v1/visits_controller.rb class Api::V1::VisitsController (line 3) | class Api::V1::VisitsController < ApiController method index (line 4) | def index method show (line 24) | def show method create (line 29) | def create method update (line 42) | def update method merge (line 49) | def merge method bulk_update (line 75) | def bulk_update method destroy (line 94) | def destroy method visit_params (line 111) | def visit_params method merge_params (line 115) | def merge_params method bulk_update_params (line 119) | def bulk_update_params method update_visit (line 123) | def update_visit(visit) FILE: app/controllers/api_controller.rb class ApiController (line 3) | class ApiController < ApplicationController method set_user_time_zone (line 13) | def set_user_time_zone(&block) method record_not_found (line 24) | def record_not_found method set_version_header (line 28) | def set_version_header method authenticate_api_key (line 35) | def authenticate_api_key method require_pro_api! (line 41) | def require_pro_api! method require_write_api! (line 53) | def require_write_api! method scoped_points (line 67) | def scoped_points(user = current_api_user) method apply_plan_scope (line 73) | def apply_plan_scope(relation, user = current_api_user) method upgrade_url_for (line 80) | def upgrade_url_for(user) method authenticate_active_api_user! (line 84) | def authenticate_active_api_user! method current_api_user (line 100) | def current_api_user method api_key (line 104) | def api_key method validate_params (line 108) | def validate_params method required_params (line 120) | def required_params method validate_points_limit (line 124) | def validate_points_limit method set_rate_limit_headers (line 130) | def set_rate_limit_headers FILE: app/controllers/application_controller.rb class ApplicationController (line 3) | class ApplicationController < ActionController::Base method unread_notifications (line 14) | def unread_notifications method authenticate_admin! (line 20) | def authenticate_admin! method authenticate_self_hosted! (line 26) | def authenticate_self_hosted! method authenticate_active_user! (line 32) | def authenticate_active_user! method authenticate_non_self_hosted! (line 38) | def authenticate_non_self_hosted! method after_sign_in_path_for (line 44) | def after_sign_in_path_for(resource) method require_pro! (line 69) | def require_pro! method ensure_family_feature_enabled! (line 100) | def ensure_family_feature_enabled! method sign_out_deleted_users (line 108) | def sign_out_deleted_users method set_user_time_zone (line 115) | def set_user_time_zone(&block) method set_self_hosted_status (line 126) | def set_self_hosted_status method store_client_header (line 130) | def store_client_header method user_not_authorized (line 136) | def user_not_authorized FILE: app/controllers/areas_controller.rb class AreasController (line 3) | class AreasController < ApplicationController method create (line 8) | def create method area_params (line 28) | def area_params FILE: app/controllers/auth/ios_controller.rb type Auth (line 3) | module Auth class IosController (line 4) | class IosController < ApplicationController method success (line 5) | def success FILE: app/controllers/concerns/flash_streamable.rb type FlashStreamable (line 3) | module FlashStreamable function stream_flash (line 8) | def stream_flash(type, message) FILE: app/controllers/concerns/safe_timestamp_parser.rb type SafeTimestampParser (line 3) | module SafeTimestampParser function safe_timestamp (line 8) | def safe_timestamp(date_string) FILE: app/controllers/concerns/sortable.rb type Sortable (line 3) | module Sortable function sorted (line 8) | def sorted(scope) function sort_column (line 17) | def sort_column function sort_direction (line 21) | def sort_direction FILE: app/controllers/concerns/utm_trackable.rb type UtmTrackable (line 3) | module UtmTrackable function store_utm_params (line 8) | def store_utm_params function assign_utm_params (line 14) | def assign_utm_params(record) function extract_utm_data_from_session (line 25) | def extract_utm_data_from_session function clear_utm_session (line 31) | def clear_utm_session FILE: app/controllers/exports_controller.rb class ExportsController (line 3) | class ExportsController < ApplicationController method index (line 12) | def index method create (line 17) | def create method destroy (line 37) | def destroy method set_export (line 45) | def set_export FILE: app/controllers/families_controller.rb class FamiliesController (line 3) | class FamiliesController < ApplicationController method show (line 8) | def show method new (line 21) | def new method create (line 28) | def create method edit (line 55) | def edit method update (line 59) | def update method destroy (line 69) | def destroy method set_family (line 82) | def set_family method family_params (line 87) | def family_params FILE: app/controllers/family/invitations_controller.rb class Family::InvitationsController (line 3) | class Family::InvitationsController < ApplicationController method index (line 9) | def index method show (line 15) | def show method create (line 26) | def create method destroy (line 42) | def destroy method set_family (line 59) | def set_family method set_invitation_by_id_and_family (line 65) | def set_invitation_by_id_and_family method invitation_params (line 72) | def invitation_params FILE: app/controllers/family/location_requests_controller.rb class Family::LocationRequestsController (line 3) | class Family::LocationRequestsController < ApplicationController method create (line 10) | def create method show (line 27) | def show method accept (line 31) | def accept method decline (line 46) | def decline method set_request (line 59) | def set_request method authorize_target_user! (line 63) | def authorize_target_user! method ensure_user_in_family! (line 69) | def ensure_user_in_family! method actionable? (line 75) | def actionable? FILE: app/controllers/family/location_sharing_controller.rb class Family::LocationSharingController (line 3) | class Family::LocationSharingController < ApplicationController method update (line 10) | def update method ensure_user_in_family! (line 43) | def ensure_user_in_family! FILE: app/controllers/family/memberships_controller.rb class Family::MembershipsController (line 3) | class Family::MembershipsController < ApplicationController method create (line 10) | def create method destroy (line 41) | def destroy method set_family (line 60) | def set_family method set_membership (line 66) | def set_membership method set_invitation (line 70) | def set_invitation FILE: app/controllers/home_controller.rb class HomeController (line 3) | class HomeController < ApplicationController method index (line 6) | def index FILE: app/controllers/imports_controller.rb class ImportsController (line 3) | class ImportsController < ApplicationController method index (line 18) | def index method show (line 26) | def show; end method edit (line 28) | def edit; end method new (line 30) | def new method update (line 36) | def update method create (line 42) | def create method destroy (line 71) | def destroy method set_import (line 83) | def set_import method authorize_import (line 87) | def authorize_import method import_params (line 91) | def import_params method extract_raw_files (line 95) | def extract_raw_files method process_raw_files (line 100) | def process_raw_files(raw_files) method cleanup_failed_imports (line 109) | def cleanup_failed_imports method report_import_error (line 116) | def report_import_error(error) method create_import_from_signed_id (line 122) | def create_import_from_signed_id(signed_id) method generate_unique_import_name (line 136) | def generate_unique_import_name(original_name) method validate_points_limit (line 148) | def validate_points_limit FILE: app/controllers/insights_controller.rb class InsightsController (line 3) | class InsightsController < ApplicationController method index (line 6) | def index method details (line 21) | def details method set_available_years (line 45) | def set_available_years method year_locked? (line 51) | def year_locked? method load_year_stats (line 57) | def load_year_stats method load_year_totals (line 71) | def load_year_totals method load_comparison_data (line 82) | def load_comparison_data method load_activity_heatmap (line 100) | def load_activity_heatmap method load_yearly_patterns (line 106) | def load_yearly_patterns method fetch_or_calculate_yearly_digest (line 117) | def fetch_or_calculate_yearly_digest method calculate_and_cache_digest (line 138) | def calculate_and_cache_digest method digest_stale? (line 142) | def digest_stale?(digest) method calculate_yearly_day_of_week (line 153) | def calculate_yearly_day_of_week method fetch_yearly_top_visits (line 170) | def fetch_yearly_top_visits method load_monthly_digest (line 180) | def load_monthly_digest method determine_selected_month (line 198) | def determine_selected_month method set_default_patterns (line 208) | def set_default_patterns method distance_unit (line 218) | def distance_unit FILE: app/controllers/map/leaflet_controller.rb class Map::LeafletController (line 3) | class Map::LeafletController < ApplicationController method index (line 9) | def index method filtered_points (line 24) | def filtered_points method build_coordinates (line 28) | def build_coordinates method extract_track_ids (line 33) | def extract_track_ids method build_tracks (line 37) | def build_tracks method calculate_distance (line 43) | def calculate_distance method parsed_start_at (line 74) | def parsed_start_at method parsed_end_at (line 78) | def parsed_end_at method years_range (line 82) | def years_range method points_count (line 86) | def points_count method start_at (line 90) | def start_at method end_at (line 97) | def end_at method points (line 104) | def points method points_from_import (line 108) | def points_from_import method points_from_user (line 112) | def points_from_user FILE: app/controllers/map/maplibre_controller.rb type Map (line 3) | module Map class MaplibreController (line 4) | class MaplibreController < ApplicationController method index (line 10) | def index method start_at (line 17) | def start_at method end_at (line 23) | def end_at method parsed_start_at (line 29) | def parsed_start_at method parsed_end_at (line 33) | def parsed_end_at FILE: app/controllers/map/timeline_feeds_controller.rb type Map (line 3) | module Map class TimelineFeedsController (line 4) | class TimelineFeedsController < ApplicationController method index (line 10) | def index method track_info (line 20) | def track_info method parsed_start_at (line 27) | def parsed_start_at method parsed_end_at (line 31) | def parsed_end_at FILE: app/controllers/metrics_controller.rb class MetricsController (line 3) | class MetricsController < ApplicationController method index (line 6) | def index FILE: app/controllers/notifications_controller.rb class NotificationsController (line 3) | class NotificationsController < ApplicationController method index (line 7) | def index method show (line 12) | def show method mark_as_read (line 16) | def mark_as_read method destroy_all (line 21) | def destroy_all method destroy (line 26) | def destroy method set_notification (line 33) | def set_notification FILE: app/controllers/places_controller.rb class PlacesController (line 3) | class PlacesController < ApplicationController method index (line 9) | def index method create (line 13) | def create method update (line 37) | def update method nearby (line 59) | def nearby method destroy (line 76) | def destroy method set_place (line 84) | def set_place method place_params (line 88) | def place_params method tag_ids (line 92) | def tag_ids method add_tags (line 97) | def add_tags method set_tags (line 102) | def set_tags method place_data_element (line 108) | def place_data_element(updated: false) method serialize_place (line 117) | def serialize_place(place) FILE: app/controllers/points_controller.rb class PointsController (line 3) | class PointsController < ApplicationController method index (line 8) | def index method bulk_destroy (line 22) | def bulk_destroy method point_params (line 40) | def point_params method start_at (line 44) | def start_at method end_at (line 50) | def end_at method points (line 56) | def points method import_points (line 60) | def import_points method user_points (line 64) | def user_points method order_by (line 68) | def order_by method preserved_params (line 72) | def preserved_params FILE: app/controllers/settings/background_jobs_controller.rb class Settings::BackgroundJobsController (line 3) | class Settings::BackgroundJobsController < ApplicationController method index (line 13) | def index; end method update (line 15) | def update method create (line 26) | def create method settings_params (line 44) | def settings_params FILE: app/controllers/settings/general_controller.rb class Settings::GeneralController (line 3) | class Settings::GeneralController < ApplicationController method index (line 6) | def index; end method update (line 8) | def update method verify_supporter (line 20) | def verify_supporter method update_timezone (line 44) | def update_timezone method update_email_settings (line 50) | def update_email_settings method update_supporter_settings (line 59) | def update_supporter_settings FILE: app/controllers/settings/integrations_controller.rb class Settings::IntegrationsController (line 3) | class Settings::IntegrationsController < ApplicationController method index (line 8) | def index method update (line 12) | def update method settings_params (line 27) | def settings_params FILE: app/controllers/settings/maps_controller.rb class Settings::MapsController (line 3) | class Settings::MapsController < ApplicationController method index (line 6) | def index method update (line 10) | def update method settings_params (line 19) | def settings_params FILE: app/controllers/settings/onboardings_controller.rb type Settings (line 3) | module Settings class OnboardingsController (line 4) | class OnboardingsController < ApplicationController method update (line 7) | def update FILE: app/controllers/settings/users_controller.rb class Settings::UsersController (line 3) | class Settings::UsersController < ApplicationController method index (line 8) | def index method show (line 12) | def show method edit (line 16) | def edit method update (line 20) | def update method create (line 34) | def create method destroy (line 48) | def destroy method regenerate_api_key (line 64) | def regenerate_api_key method send_password_reset (line 71) | def send_password_reset method update_registration_settings (line 78) | def update_registration_settings method export (line 86) | def export method import (line 92) | def import method filtered_users (line 116) | def filtered_users method user_params (line 122) | def user_params method filtered_user_params (line 126) | def filtered_user_params method last_admin_protection_needed? (line 132) | def last_admin_protection_needed? method removing_admin_role? (line 138) | def removing_admin_role? method disabling_user? (line 142) | def disabling_user? method sole_admin? (line 146) | def sole_admin? method last_admin_alert_message (line 150) | def last_admin_alert_message method create_import_from_signed_archive_id (line 158) | def create_import_from_signed_archive_id(signed_id) method generate_unique_import_name (line 176) | def generate_unique_import_name(original_name) method validate_archive_file (line 188) | def validate_archive_file(archive_file) method validate_blob_file_type (line 196) | def validate_blob_file_type(blob) FILE: app/controllers/settings_controller.rb class SettingsController (line 3) | class SettingsController < ApplicationController method theme (line 6) | def theme method generate_api_key (line 12) | def generate_api_key FILE: app/controllers/shared/digests_controller.rb class Shared::DigestsController (line 3) | class Shared::DigestsController < ApplicationController method show (line 10) | def show method update (line 27) | def update FILE: app/controllers/shared/stats_controller.rb class Shared::StatsController (line 3) | class Shared::StatsController < ApplicationController method show (line 10) | def show method update (line 28) | def update FILE: app/controllers/stats_controller.rb class StatsController (line 3) | class StatsController < ApplicationController method index (line 7) | def index method show (line 14) | def show method month (line 20) | def month method update (line 29) | def update method update_all (line 45) | def update_all method assign_points_statistics (line 59) | def assign_points_statistics method precompute_year_distances (line 67) | def precompute_year_distances method locked_years (line 84) | def locked_years method build_stats (line 92) | def build_stats FILE: app/controllers/tags_controller.rb class TagsController (line 3) | class TagsController < ApplicationController method index (line 7) | def index method new (line 13) | def new method create (line 19) | def create method edit (line 31) | def edit method update (line 35) | def update method destroy (line 45) | def destroy method set_tag (line 55) | def set_tag method tag_params (line 59) | def tag_params FILE: app/controllers/trips_controller.rb class TripsController (line 3) | class TripsController < ApplicationController method index (line 9) | def index method show (line 13) | def show method new (line 22) | def new method edit (line 27) | def edit; end method create (line 29) | def create method update (line 39) | def update method destroy (line 47) | def destroy method set_trip (line 54) | def set_trip method set_coordinates (line 58) | def set_coordinates method trip_params (line 65) | def trip_params FILE: app/controllers/users/digests_controller.rb class Users::DigestsController (line 3) | class Users::DigestsController < ApplicationController method index (line 11) | def index method show (line 16) | def show method create (line 21) | def create method destroy (line 34) | def destroy method set_digest (line 42) | def set_digest method available_years_for_generation (line 48) | def available_years_for_generation method valid_year? (line 55) | def valid_year?(year) FILE: app/controllers/users/omniauth_callbacks_controller.rb class Users::OmniauthCallbacksController (line 3) | class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksCont... method github (line 4) | def github method google_oauth2 (line 8) | def google_oauth2 method openid_connect (line 12) | def openid_connect method failure (line 16) | def failure method handle_auth (line 44) | def handle_auth(provider) method oidc_auto_register_enabled? (line 64) | def oidc_auto_register_enabled? FILE: app/controllers/users/registrations_controller.rb class Users::RegistrationsController (line 3) | class Users::RegistrationsController < Devise::RegistrationsController method new (line 10) | def new method create (line 20) | def create method destroy (line 30) | def destroy method after_sign_up_path_for (line 48) | def after_sign_up_path_for(resource) method after_inactive_sign_up_path_for (line 54) | def after_inactive_sign_up_path_for(resource) method check_registration_allowed (line 62) | def check_registration_allowed method set_invitation (line 80) | def set_invitation method self_hosted_mode? (line 86) | def self_hosted_mode? method valid_invitation_token? (line 90) | def valid_invitation_token? method invitation_token (line 94) | def invitation_token method accept_invitation_for_user (line 100) | def accept_invitation_for_user(user) method sign_up_params (line 120) | def sign_up_params method store_signup_intent (line 124) | def store_signup_intent(user) method email_password_registration_allowed? (line 135) | def email_password_registration_allowed? method oidc_only_mode? (line 139) | def oidc_only_mode? FILE: app/controllers/users/sessions_controller.rb class Users::SessionsController (line 3) | class Users::SessionsController < Devise::SessionsController method new (line 7) | def new method check_email_password_login_allowed (line 13) | def check_email_password_login_allowed method load_invitation_context (line 20) | def load_invitation_context method invitation_token (line 28) | def invitation_token FILE: app/controllers/visits_controller.rb class VisitsController (line 3) | class VisitsController < ApplicationController method index (line 9) | def index method update (line 23) | def update method set_visit (line 65) | def set_visit method update_visit_name_from_place (line 69) | def update_visit_name_from_place method visit_params (line 74) | def visit_params FILE: app/helpers/application_helper.rb type ApplicationHelper (line 3) | module ApplicationHelper function show_plan_data_window_alert? (line 4) | def show_plan_data_window_alert? function year_timespan (line 8) | def year_timespan(year) function header_colors (line 15) | def header_colors function new_version_available? (line 19) | def new_version_available? function app_theme (line 23) | def app_theme function active_class? (line 27) | def active_class?(link_path) function full_title (line 31) | def full_title(page_title = '') function active_tab? (line 36) | def active_tab?(link_path) function active_visit_places_tab? (line 40) | def active_visit_places_tab?(controller_name) function notification_link_color (line 44) | def notification_link_color(notification) function speed_text_color (line 50) | def speed_text_color(speed) function point_speed (line 56) | def point_speed(speed, unit = 'km') function speed_label (line 63) | def speed_label(unit = 'km') function onboarding_modal_showable? (line 67) | def onboarding_modal_showable?(user) function trial_button_class (line 71) | def trial_button_class(user) function trial_days_remaining_compact (line 84) | def trial_days_remaining_compact(user) function oauth_provider_name (line 92) | def oauth_provider_name(provider) function oauth_button_config (line 111) | def oauth_button_config(provider) function email_password_registration_enabled? (line 129) | def email_password_registration_enabled? function email_password_login_enabled? (line 135) | def email_password_login_enabled? function preferred_map_path (line 141) | def preferred_map_path(params = {}) function upgrade_url (line 151) | def upgrade_url(utm_source: 'app', utm_medium: nil, utm_campaign: 'lit... function pro_badge_tag (line 157) | def pro_badge_tag(preview: true) function sortable_column (line 171) | def sortable_column(title, column, path_helper, **path_params) FILE: app/helpers/country_flag_helper.rb type CountryFlagHelper (line 3) | module CountryFlagHelper function country_flag (line 4) | def country_flag(country_name) function country_to_code (line 16) | def country_to_code(country_name) FILE: app/helpers/datetime_formatting_helper.rb type DatetimeFormattingHelper (line 3) | module DatetimeFormattingHelper function human_date (line 4) | def human_date(date) function human_datetime (line 8) | def human_datetime(datetime) function human_datetime_with_seconds (line 19) | def human_datetime_with_seconds(datetime) function days_left (line 30) | def days_left(active_until) function format_duration_short (line 43) | def format_duration_short(seconds) FILE: app/helpers/flash_helper.rb type FlashHelper (line 3) | module FlashHelper function flash_alert_class (line 4) | def flash_alert_class(type) function flash_icon (line 13) | def flash_icon(type) FILE: app/helpers/insights_helper.rb type InsightsHelper (line 3) | module InsightsHelper function monthly_digest_title (line 6) | def monthly_digest_title(digest) function monthly_digest_distance (line 12) | def monthly_digest_distance(digest, user) function monthly_digest_active_days (line 20) | def monthly_digest_active_days(digest) function previous_month_link (line 26) | def previous_month_link(year, month, available_months) function next_month_link (line 35) | def next_month_link(year, month, available_months) function weekly_pattern_chart_data (line 44) | def weekly_pattern_chart_data(digest, user) function top_locations_from_digest (line 59) | def top_locations_from_digest(digest, limit = 3) function format_location_time (line 90) | def format_location_time(minutes) function first_time_visits_from_digest (line 106) | def first_time_visits_from_digest(digest) function generate_travel_insight (line 115) | def generate_travel_insight(time_of_day, day_of_week, seasonality) function format_activity_hours (line 124) | def format_activity_hours(seconds) function activity_statistics (line 138) | def activity_statistics(activity_breakdown) function accumulate_activity_stat (line 146) | def accumulate_activity_stat(stats, mode, duration) function empty_activity_stats (line 159) | def empty_activity_stats function activity_ratio (line 164) | def activity_ratio(active_seconds, sedentary_seconds) function activity_breakdown_present? (line 172) | def activity_breakdown_present?(activity_breakdown) function calculate_activity_level (line 179) | def calculate_activity_level(distance, levels) function activity_level_class (line 191) | def activity_level_class(level) function format_heatmap_distance (line 202) | def format_heatmap_distance(meters, unit) function heatmap_week_columns (line 218) | def heatmap_week_columns(year) function heatmap_month_labels (line 239) | def heatmap_month_labels(weeks, year) function country_code (line 267) | def country_code(country_name) FILE: app/helpers/month_styling_helper.rb type MonthStylingHelper (line 3) | module MonthStylingHelper function month_icon (line 45) | def month_icon(stat) function month_color (line 49) | def month_color(stat) function month_gradient_classes (line 53) | def month_gradient_classes(stat) function month_bg_image (line 57) | def month_bg_image(stat) FILE: app/helpers/points_helper.rb type PointsHelper (line 3) | module PointsHelper function link_to_date (line 4) | def link_to_date(timestamp) FILE: app/helpers/stats_comparison_helper.rb type StatsComparisonHelper (line 3) | module StatsComparisonHelper function x_than_average_distance (line 4) | def x_than_average_distance(stat, average_distance_this_year) function x_than_previous_active_days (line 15) | def x_than_previous_active_days(stat, previous_stat) function x_than_previous_countries_visited (line 30) | def x_than_previous_countries_visited(stat, previous_stat) FILE: app/helpers/stats_helper.rb type StatsHelper (line 3) | module StatsHelper function year_distance_stat (line 4) | def year_distance_stat(year_data, user) function countries_and_cities_stat_for_year (line 8) | def countries_and_cities_stat_for_year(year, stats) function countries_and_cities_stat_for_month (line 22) | def countries_and_cities_stat_for_month(stat) function distance_traveled (line 29) | def distance_traveled(user, stat) function active_days (line 36) | def active_days(stat) function countries_visited (line 43) | def countries_visited(stat) function peak_day (line 47) | def peak_day(stat) function quietest_week (line 60) | def quietest_week(stat) function collect_countries_and_cities (line 73) | def collect_countries_and_cities(year_stats) function group_toponyms_by_country (line 86) | def group_toponyms_by_country(year_stats) function normalize_country_name (line 104) | def normalize_country_name(name) function canonical_names (line 113) | def canonical_names function build_distance_by_date_hash (line 117) | def build_distance_by_date_hash(stat) function find_quietest_week_start_date (line 123) | def find_quietest_week_start_date(stat, distance_by_date) function format_week_range (line 142) | def format_week_range(start_date) FILE: app/helpers/tags_helper.rb type TagsHelper (line 3) | module TagsHelper function random_tag_emoji (line 17) | def random_tag_emoji FILE: app/helpers/trips_helper.rb type TripsHelper (line 3) | module TripsHelper function immich_search_url (line 4) | def immich_search_url(base_url, start_date, end_date) function photoprism_search_url (line 14) | def photoprism_search_url(base_url, start_date, _end_date) function photo_search_url (line 19) | def photo_search_url(source, settings, start_date, end_date) function trip_duration (line 28) | def trip_duration(trip) FILE: app/helpers/user_helper.rb type UserHelper (line 3) | module UserHelper function api_key_qr_code (line 4) | def api_key_qr_code(user, size: 6) FILE: app/helpers/users/digests_helper.rb type Users (line 3) | module Users type DigestsHelper (line 4) | module DigestsHelper function progress_color_for_index (line 10) | def progress_color_for_index(index) function city_progress_value (line 14) | def city_progress_value(city_count, max_cities) function max_cities_count (line 20) | def max_cities_count(toponyms) function distance_with_unit (line 26) | def distance_with_unit(distance_meters, unit) function distance_comparison_text (line 31) | def distance_comparison_text(distance_meters) function format_time_spent (line 43) | def format_time_spent(minutes) function yoy_change_class (line 58) | def yoy_change_class(change) function yoy_change_text (line 64) | def yoy_change_text(change) FILE: app/javascript/channels/family_locations_channel.js method connected (line 13) | connected() { method disconnected (line 17) | disconnected() { method received (line 21) | received(data) { FILE: app/javascript/controllers/activity_heatmap_controller.js method showTooltip (line 9) | showTooltip(event) { method hideTooltip (line 47) | hideTooltip() { method formatDate (line 52) | formatDate(dateStr) { method formatDistance (line 63) | formatDistance(distanceMeters) { FILE: app/javascript/controllers/add_visit_controller.js method connect (line 16) | connect() { method disconnect (line 29) | disconnect() { method waitForMap (line 34) | waitForMap() { method setupAddVisitButton (line 81) | setupAddVisitButton() { method toggleAddVisitMode (line 110) | toggleAddVisitMode(button) { method enterAddVisitMode (line 120) | enterAddVisitMode(button) { method exitAddVisitMode (line 140) | exitAddVisitMode(button) { method onMapClick (line 169) | onMapClick(e) { method showVisitForm (line 194) | showVisitForm(lat, lng) { method handleFormSubmit (line 296) | async handleFormSubmit(event) { method addCreatedVisitToMap (line 374) | addCreatedVisitToMap(_visitData, latitude, longitude) { method ensureConfirmedVisitsLayerEnabled (line 418) | ensureConfirmedVisitsLayerEnabled() { method refreshVisitsLayer (line 452) | refreshVisitsLayer() { method cleanup (line 460) | cleanup() { FILE: app/javascript/controllers/area_creation_v2_controller.js method connect (line 15) | connect() { method open (line 22) | open(center, radius) { method close (line 32) | close() { method onSubmitEnd (line 39) | onSubmitEnd(event) { FILE: app/javascript/controllers/area_drawer_controller.js method connect (line 9) | connect() { method startDrawing (line 24) | startDrawing(map) { method cancelDrawing (line 70) | cancelDrawing() { method onClick (line 93) | onClick(e) { method onMouseMove (line 117) | onMouseMove(e) { method updateDrawing (line 129) | updateDrawing() { FILE: app/javascript/controllers/area_selector_controller.js method connect (line 11) | connect() { method startSelection (line 20) | startSelection() { method cancelSelection (line 68) | cancelSelection() { method updateSelection (line 129) | updateSelection() { method getSelectionBounds (line 155) | getSelectionBounds() { FILE: app/javascript/controllers/base_controller.js method initialize (line 16) | initialize() { FILE: app/javascript/controllers/checkbox_select_all_controller.js method connect (line 7) | connect() { method toggleChildren (line 15) | toggleChildren() { method toggleParent (line 28) | toggleParent() { method updateDeleteButtonVisibility (line 37) | updateDeleteButtonVisibility() { FILE: app/javascript/controllers/clipboard_controller.js method copy (line 11) | copy() { method showButtonFeedback (line 24) | showButtonFeedback() { FILE: app/javascript/controllers/color_picker_controller.js method connect (line 11) | connect() { method updateFromPicker (line 18) | updateFromPicker(event) { method selectSwatch (line 24) | selectSwatch(event) { method updateColor (line 34) | updateColor(color, updatePicker = true) { method updateActiveSwatchWithColor (line 65) | updateActiveSwatchWithColor(color) { FILE: app/javascript/controllers/datetime_controller.js method connect (line 11) | connect() { method validateDates (line 40) | validateDates(showPopup = false) { method updateCoordinates (line 66) | async updateCoordinates() { FILE: app/javascript/controllers/emoji_picker_controller.js method connect (line 12) | connect() { method disconnect (line 17) | disconnect() { method toggle (line 22) | toggle(event) { method open (line 33) | open() { method close (line 42) | close() { method createPicker (line 47) | createPicker() { method onEmojiSelect (line 72) | onEmojiSelect(emoji) { method submitForm (line 99) | submitForm() { method clearEmoji (line 109) | clearEmoji(event) { method getTheme (line 125) | getTheme() { method setupKeyboardListeners (line 136) | setupKeyboardListeners() { method removeKeyboardListeners (line 141) | removeKeyboardListeners() { method handleKeydown (line 145) | handleKeydown(event) { method setupOutsideClickListener (line 165) | setupOutsideClickListener() { method removeOutsideClickListener (line 173) | removeOutsideClickListener() { method handleOutsideClick (line 179) | handleOutsideClick(event) { method removePicker (line 185) | removePicker() { FILE: app/javascript/controllers/family_members_controller.js method connect (line 14) | connect() { method disconnect (line 21) | disconnect() { method waitForMap (line 26) | waitForMap() { method initializeFamilyFeatures (line 46) | initializeFamilyFeatures() { method createFamilyMarkers (line 71) | createFamilyMarkers() { method updateSingleMemberLocation (line 162) | updateSingleMemberLocation(locationData) { method isRecentUpdate (line 221) | isRecentUpdate(updatedAt) { method createSingleFamilyMarker (line 229) | createSingleFamilyMarker(location) { method createTooltipContent (line 275) | createTooltipContent(lastSeen, battery) { method createPopupContent (line 281) | createPopupContent(location, lastSeen) { method addToLayerControl (line 364) | addToLayerControl() { method updateMapsControllerLayerControl (line 372) | updateMapsControllerLayerControl() { method setupEventListeners (line 393) | setupEventListeners() { method setupLayerControlEvents (line 411) | setupLayerControlEvents() { method zoomToFitAllMembers (line 442) | zoomToFitAllMembers() { method startPeriodicRefresh (line 461) | startPeriodicRefresh() { method stopPeriodicRefresh (line 476) | stopPeriodicRefresh() { method updateFamilyLocations (line 484) | updateFamilyLocations(locations) { method refreshFamilyLocations (line 508) | async refreshFamilyLocations() { method showFlashMessageToUser (line 560) | showFlashMessageToUser(type, message) { method manualRefreshFamilyLocations (line 565) | async manualRefreshFamilyLocations() { method cleanup (line 570) | cleanup() { method getFamilyMarkersLayer (line 598) | getFamilyMarkersLayer() { method isFamilyFeatureEnabled (line 603) | isFamilyFeatureEnabled() { method getFamilyMemberCount (line 608) | getFamilyMemberCount() { FILE: app/javascript/controllers/family_navbar_indicator_controller.js method connect (line 9) | connect() { method disconnect (line 24) | disconnect() { method handleSharingUpdate (line 35) | handleSharingUpdate(event) { method handleSharingExpired (line 42) | handleSharingExpired(_event) { method updateIndicator (line 47) | updateIndicator() { FILE: app/javascript/controllers/flash_controller.js constant ALERT_CLASSES (line 3) | const ALERT_CLASSES = { constant ICON_PATHS (line 12) | const ICON_PATHS = { constant CLOSE_PATH (line 22) | const CLOSE_PATH = "M6 18L18 6M6 6l12 12" method show (line 25) | static show(type, message) { FILE: app/javascript/controllers/location_sharing_toggle_controller.js method connect (line 26) | connect() { method disconnect (line 30) | disconnect() { method toggle (line 34) | toggle() { method changeDuration (line 45) | changeDuration() { method toggleHistory (line 53) | toggleHistory() { method changeHistoryWindow (line 67) | changeHistoryWindow() { method setupExpirationTimer (line 83) | setupExpirationTimer() { method clearExpirationTimer (line 115) | clearExpirationTimer() { method updateExpirationCountdown (line 126) | updateExpirationCountdown() { FILE: app/javascript/controllers/map_controls_controller.js method connect (line 6) | connect() { method toggle (line 14) | toggle() { method showPanel (line 26) | showPanel() { method hidePanel (line 36) | hidePanel() { FILE: app/javascript/controllers/map_panel_controller.js method connect (line 20) | connect() { method switchTab (line 27) | switchTab(event) { method switchToTab (line 37) | switchToTab(tabName) { method activateTab (line 44) | activateTab(tabName) { FILE: app/javascript/controllers/map_preview_controller.js method connect (line 10) | connect() { method initializeMap (line 20) | initializeMap() { method updatePreview (line 32) | updatePreview() { FILE: app/javascript/controllers/maps/maplibre/area_selection_manager.js class AreaSelectionManager (line 11) | class AreaSelectionManager { method constructor (line 12) | constructor(controller) { method startSelectArea (line 25) | async startSelectArea() { method handleAreaSelected (line 73) | async handleAreaSelected(bounds) { method displaySelectedVisits (line 152) | displaySelectedVisits(visits) { method attachVisitCardListeners (line 186) | attachVisitCardListeners() { method updateBulkActions (line 223) | updateBulkActions() { method confirmVisit (line 297) | async confirmVisit(visitId) { method declineVisit (line 311) | async declineVisit(visitId) { method bulkMergeVisits (line 324) | async bulkMergeVisits() { method bulkConfirmVisits (line 352) | async bulkConfirmVisits() { method bulkDeclineVisits (line 370) | async bulkDeclineVisits() { method replaceVisitsWithMerged (line 393) | replaceVisitsWithMerged(oldVisitIds, mergedVisit) { method refreshSelectedVisits (line 451) | async refreshSelectedVisits() { method cancelAreaSelection (line 478) | cancelAreaSelection() { method deleteSelectedPoints (line 527) | async deleteSelectedPoints() { FILE: app/javascript/controllers/maps/maplibre/data_loader.js class LoadingCounter (line 11) | class LoadingCounter { method constructor (line 12) | constructor(onUpdate) { method expect (line 23) | expect(source) { method update (line 28) | update(source, count) { method complete (line 33) | complete(source) { method isComplete (line 38) | isComplete() { method _report (line 45) | _report() { class DataLoader (line 61) | class DataLoader { method constructor (line 62) | constructor(api, apiKey, settings = {}) { method updateSettings (line 71) | updateSettings(settings) { method fetchPointsData (line 79) | async fetchPointsData(startDate, endDate) { method fetchMapData (line 117) | async fetchMapData( method visitsToGeoJSON (line 355) | visitsToGeoJSON(visits) { method photosToGeoJSON (line 380) | photosToGeoJSON(photos) { method placesToGeoJSON (line 414) | placesToGeoJSON(places) { method areasToGeoJSON (line 442) | areasToGeoJSON(areas) { method tracksToGeoJSON (line 471) | tracksToGeoJSON(tracks) { FILE: app/javascript/controllers/maps/maplibre/date_manager.js class DateManager (line 4) | class DateManager { method formatDateForAPI (line 9) | static formatDateForAPI(date) { method parseMonthSelector (line 29) | static parseMonthSelector(value) { FILE: app/javascript/controllers/maps/maplibre/event_handlers.js class EventHandlers (line 16) | class EventHandlers { method constructor (line 17) | constructor(map, controller) { method handlePointClick (line 34) | handlePointClick(e) { method handleTrackPointClick (line 46) | handleTrackPointClick(e) { method _buildPointInfoContent (line 70) | _buildPointInfoContent(properties) { method handleVisitClick (line 85) | handleVisitClick(e) { method handlePhotoClick (line 132) | handlePhotoClick(e) { method handlePlaceClick (line 149) | handlePlaceClick(e) { method handleAreaClick (line 182) | handleAreaClick(e) { method handleRouteHover (line 215) | handleRouteHover(e) { method handleRouteMouseLeave (line 256) | handleRouteMouseLeave() { method _getFullRouteFeature (line 277) | _getFullRouteFeature(properties) { method _areFeaturesSame (line 333) | _areFeaturesSame(feature1, feature2) { method _createRouteMarkers (line 359) | _createRouteMarkers(features) { method _createEmojiMarker (line 397) | _createEmojiMarker(emoji, markerClass = "route-emoji-marker") { method _clearRouteMarkers (line 411) | _clearRouteMarkers() { method handleRouteClick (line 421) | handleRouteClick(e) { method clearRouteSelection (line 486) | clearRouteSelection() { method handleTrackClick (line 506) | handleTrackClick(e) { method _loadTrackSegments (line 563) | async _loadTrackSegments(trackId, fullFeature) { method _showTrackInfoPanel (line 630) | _showTrackInfoPanel(properties) { method _buildTrackInfoContent (line 654) | _buildTrackInfoContent( method _updateSegmentsList (line 716) | _updateSegmentsList(segments) { method clearTrackSelection (line 759) | clearTrackSelection() { method _setupTrackPointsToggle (line 799) | _setupTrackPointsToggle() { method _toggleTrackPoints (line 823) | async _toggleTrackPoints(trackId, enabled) { method _clearTrackPointsLayer (line 863) | _clearTrackPointsLayer() { method _setMainPointsOpacity (line 878) | _setMainPointsOpacity(opacity) { method _getFullTrackFeature (line 893) | _getFullTrackFeature(properties) { method _createTrackSegmentMarkers (line 920) | _createTrackSegmentMarkers(feature, segments) { method _clearTrackMarkers (line 954) | _clearTrackMarkers() { method updateTrackMarkers (line 966) | updateTrackMarkers(feature) { method _cleanupSegmentListHover (line 992) | _cleanupSegmentListHover() { method _setupSegmentListHover (line 1010) | _setupSegmentListHover(segments) { method _zoomToSegment (line 1054) | _zoomToSegment(segment) { method _highlightSegmentOnMap (line 1085) | _highlightSegmentOnMap(segmentIndex) { method _clearSegmentHighlight (line 1110) | _clearSegmentHighlight() { method _highlightSegmentListItem (line 1126) | _highlightSegmentListItem(segmentIndex) { method _clearSegmentListHighlight (line 1140) | _clearSegmentListHighlight() { FILE: app/javascript/controllers/maps/maplibre/filter_manager.js class FilterManager (line 4) | class FilterManager { method constructor (line 5) | constructor(dataLoader) { method setAllVisits (line 14) | setAllVisits(visits) { method filterAndUpdateVisits (line 21) | filterAndUpdateVisits(searchTerm, statusFilter, visitsLayer) { method getCurrentVisitFilter (line 45) | getCurrentVisitFilter() { method setCurrentVisitFilter (line 52) | setCurrentVisitFilter(filter) { FILE: app/javascript/controllers/maps/maplibre/layer_manager.js class LayerManager (line 19) | class LayerManager { method constructor (line 20) | constructor(map, settings, api) { method addAllLayers (line 31) | async addAllLayers( method setupLayerEventHandlers (line 75) | setupLayerEventHandlers(handlers) { method toggleLayer (line 177) | toggleLayer(layerName) { method getLayer (line 188) | getLayer(layerName) { method registerLayer (line 197) | registerLayer(layerName, layerInstance) { method clearLayerReferences (line 204) | clearLayerReferences() { method _addScratchLayer (line 215) | async _addScratchLayer(pointsGeoJSON) { method _addHeatmapLayer (line 232) | _addHeatmapLayer(pointsGeoJSON) { method _addAreasLayer (line 243) | _addAreasLayer(areasGeoJSON) { method _addTracksLayer (line 254) | _addTracksLayer(tracksGeoJSON) { method _addRoutesLayer (line 265) | _addRoutesLayer(routesGeoJSON) { method _addRoutesHitLayer (line 276) | _addRoutesHitLayer() { method _addVisitsLayer (line 309) | _addVisitsLayer(visitsGeoJSON) { method _addPlacesLayer (line 320) | _addPlacesLayer(placesGeoJSON) { method _addPhotosLayer (line 331) | async _addPhotosLayer(photosGeoJSON) { method _addFamilyLayer (line 351) | _addFamilyLayer() { method _addPointsLayer (line 360) | _addPointsLayer(pointsGeoJSON) { method _addRecentPointLayer (line 373) | _addRecentPointLayer() { method _addReplayMarkerLayer (line 385) | _addReplayMarkerLayer() { method _addFogLayer (line 397) | _addFogLayer(pointsGeoJSON) { FILE: app/javascript/controllers/maps/maplibre/map_data_manager.js constant EMPTY_GEOJSON (line 7) | const EMPTY_GEOJSON = { type: "FeatureCollection", features: [] } class MapDataManager (line 12) | class MapDataManager { method constructor (line 13) | constructor(controller) { method loadMapData (line 30) | async loadMapData(startDate, endDate, options = {}) { method ensurePointsLoaded (line 128) | async ensurePointsLoaded() { method _loadPoints (line 140) | async _loadPoints() { method _updateLayerBySource (line 181) | _updateLayerBySource(source, geoJSON) { method _updateTracksLayer (line 216) | _updateTracksLayer(tracksGeoJSON) { method _updatePhotosLayer (line 230) | _updatePhotosLayer(photosGeoJSON) { method _setupLayers (line 244) | async _setupLayers(data) { method _fitToFirstAvailable (line 324) | _fitToFirstAvailable(geojsonSources) { method _fitMapToBounds (line 338) | _fitMapToBounds(geojson) { method _showDataWindowBanner (line 374) | _showDataWindowBanner() { FILE: app/javascript/controllers/maps/maplibre/map_initializer.js class MapInitializer (line 7) | class MapInitializer { method initialize (line 14) | static async initialize(container, settings = {}) { method fitToBounds (line 75) | static fitToBounds(map, geojson, options = {}) { FILE: app/javascript/controllers/maps/maplibre/places_manager.js class PlacesManager (line 8) | class PlacesManager { method constructor (line 9) | constructor(controller) { method togglePlaces (line 20) | async togglePlaces(event) { method initializePlaceTagFilters (line 62) | async initializePlaceTagFilters() { method restoreSavedTagFilters (line 75) | restoreSavedTagFilters(savedFilters) { method enableAllTagsInitial (line 112) | enableAllTagsInitial() { method getSelectedPlaceTags (line 145) | getSelectedPlaceTags() { method filterPlacesByTags (line 157) | filterPlacesByTags(event) { method syncEnableAllTagsToggle (line 181) | syncEnableAllTagsToggle() { method loadPlacesWithTags (line 195) | async loadPlacesWithTags(tagIds = []) { method toggleAllPlaceTags (line 217) | toggleAllPlaceTags(event) { method startCreatePlace (line 250) | startCreatePlace() { method handlePlaceCreated (line 279) | async handlePlaceCreated(_event) { method handlePlaceUpdated (line 309) | async handlePlaceUpdated(event) { FILE: app/javascript/controllers/maps/maplibre/routes_manager.js class RoutesManager (line 10) | class RoutesManager { method constructor (line 11) | constructor(controller) { method toggleRoutes (line 21) | async toggleRoutes(event) { method toggleSpeedColoredRoutes (line 46) | async toggleSpeedColoredRoutes(event) { method openSpeedColorEditor (line 64) | openSpeedColorEditor() { method createSpeedColorEditorModal (line 94) | createSpeedColorEditorModal(currentScale) { method handleSpeedColorSave (line 173) | handleSpeedColorSave(event) { method reloadRoutes (line 188) | async reloadRoutes() { method toggleHeatmap (line 241) | async toggleHeatmap(event) { method toggleFog (line 277) | async toggleFog(event) { method toggleScratch (line 313) | async toggleScratch(event) { method togglePhotos (line 371) | async togglePhotos(event) { method toggleAreas (line 431) | async toggleAreas(event) { method toggleTracks (line 472) | async toggleTracks(event) { method togglePoints (line 523) | async togglePoints(event) { method toggleFamily (line 542) | async toggleFamily(event) { FILE: app/javascript/controllers/maps/maplibre/settings_manager.js constant RECALCULATION_POLL_INTERVAL (line 8) | const RECALCULATION_POLL_INTERVAL = 5000 class SettingsController (line 14) | class SettingsController { method constructor (line 15) | constructor(controller) { method map (line 24) | get map() { method layerManager (line 28) | get layerManager() { method loadSettings (line 35) | async loadSettings() { method syncToggleStates (line 50) | syncToggleStates() { method syncTransportationSettings (line 249) | async syncTransportationSettings() { method resetTransportationDirtyState (line 438) | resetTransportationDirtyState() { method updateTransportationApplyButton (line 446) | updateTransportationApplyButton() { method markTransportationSettingsDirty (line 480) | markTransportationSettingsDirty() { method applyTransportationSettings (line 488) | async applyTransportationSettings() { method saveTransportationThresholds (line 507) | async saveTransportationThresholds() { method checkRecalculationStatus (line 623) | async checkRecalculationStatus() { method updateRecalculationUI (line 661) | updateRecalculationUI(status) { method setTransportationSettingsLocked (line 737) | setTransportationSettingsLocked(locked) { method startRecalculationPolling (line 834) | startRecalculationPolling() { method stopRecalculationPolling (line 845) | stopRecalculationPolling() { method toggleTransportationExpertMode (line 855) | toggleTransportationExpertMode(event) { method updateTransportationThresholdDisplay (line 874) | updateTransportationThresholdDisplay(event) { method getDistanceUnit (line 945) | getDistanceUnit() { method toDisplaySpeed (line 956) | toDisplaySpeed(kmh, isMetric) { method toMetricSpeed (line 967) | toMetricSpeed(value, isMetric) { method toDisplayDistance (line 978) | toDisplayDistance(km, isMetric) { method toMetricDistance (line 989) | toMetricDistance(value, isMetric) { method updateMapStyle (line 997) | async updateMapStyle(event) { method resetSettings (line 1017) | resetSettings() { method toggleGlobe (line 1028) | async toggleGlobe(event) { method updateRouteOpacity (line 1058) | updateRouteOpacity(event) { method updateAdvancedSettings (line 1072) | async updateAdvancedSettings(event) { method applySettingsToMap (line 1196) | async applySettingsToMap(settings) { method updateFogRadiusDisplay (line 1237) | updateFogRadiusDisplay(event) { method updateFogThresholdDisplay (line 1243) | updateFogThresholdDisplay(event) { method updateMetersBetweenDisplay (line 1249) | updateMetersBetweenDisplay(event) { method updateMinutesBetweenDisplay (line 1255) | updateMinutesBetweenDisplay(event) { method updateMinMinutesInCityDisplay (line 1261) | updateMinMinutesInCityDisplay(event) { method updateMaxGapMinutesDisplay (line 1267) | updateMaxGapMinutesDisplay(event) { FILE: app/javascript/controllers/maps/maplibre/visits_manager.js class VisitsManager (line 8) | class VisitsManager { method constructor (line 9) | constructor(controller) { method toggleVisits (line 21) | async toggleVisits(event) { method searchVisits (line 68) | searchVisits(event) { method filterVisits (line 81) | filterVisits(event) { method startCreateVisit (line 93) | startCreateVisit() { method openVisitCreationModal (line 116) | openVisitCreationModal(lat, lng) { method handleVisitCreated (line 142) | async handleVisitCreated(_event) { method handleVisitUpdated (line 174) | async handleVisitUpdated(event) { FILE: app/javascript/controllers/maps/maplibre_controller.js method connect (line 165) | async connect() { method disconnect (line 316) | disconnect() { method isWebGLSupported (line 327) | isWebGLSupported() { method showWebGLError (line 336) | showWebGLError() { method initializeMap (line 344) | async initializeMap() { method initializeAPI (line 354) | initializeAPI() { method initializeSearch (line 361) | initializeSearch() { method loadMapData (line 379) | async loadMapData(options = {}) { method monthChanged (line 390) | monthChanged(event) { method debouncedLoadFamilyHistory (line 403) | debouncedLoadFamilyHistory() { method showProgress (line 411) | showProgress() { method hideProgress (line 425) | hideProgress() { method showLoading (line 434) | showLoading() { method hideLoading (line 441) | hideLoading() { method updateLoadingCounts (line 448) | updateLoadingCounts({ counts, isComplete }) { method _renderLoadingBadge (line 457) | _renderLoadingBadge(isComplete = false) { method toggleSettings (line 501) | toggleSettings() { method handleTabChanged (line 510) | handleTabChanged(event) { method loadTimelineFeed (line 524) | loadTimelineFeed() { method refreshTimelineFeedIfActive (line 543) | refreshTimelineFeedIfActive() { method handleDayExpanded (line 558) | handleDayExpanded(event) { method handleDayCollapsed (line 582) | handleDayCollapsed() { method _applyDayHighlight (line 593) | _applyDayHighlight(day) { method _clearDayHighlight (line 648) | _clearDayHighlight() { method handleEntryHover (line 669) | handleEntryHover(event) { method handleEntryUnhover (line 748) | handleEntryUnhover() { method handleEntryClick (line 773) | handleEntryClick(event) { method handleEntryDeselect (line 815) | handleEntryDeselect() { method _dayRangeExpr (line 837) | _dayRangeExpr(property, rangeStart, rangeEnd, fullOpacity, dimOpacity) { method _safeSetPaint (line 855) | _safeSetPaint(layerId, property, value) { method _showDayVisits (line 866) | async _showDayVisits(day) { method _hideDayVisits (line 915) | _hideDayVisits() { method _findTrackFeature (line 939) | _findTrackFeature(trackId, startedAt) { method updateMapStyle (line 969) | updateMapStyle(event) { method resetSettings (line 972) | resetSettings() { method updateRouteOpacity (line 975) | updateRouteOpacity(event) { method updateAdvancedSettings (line 978) | updateAdvancedSettings(event) { method updateFogRadiusDisplay (line 981) | updateFogRadiusDisplay(event) { method updateFogThresholdDisplay (line 984) | updateFogThresholdDisplay(event) { method updateMetersBetweenDisplay (line 987) | updateMetersBetweenDisplay(event) { method updateMinutesBetweenDisplay (line 990) | updateMinutesBetweenDisplay(event) { method updateMinMinutesInCityDisplay (line 993) | updateMinMinutesInCityDisplay(event) { method updateMaxGapMinutesDisplay (line 996) | updateMaxGapMinutesDisplay(event) { method toggleGlobe (line 999) | toggleGlobe(event) { method toggleTransportationExpertMode (line 1002) | toggleTransportationExpertMode(event) { method updateTransportationThresholdDisplay (line 1005) | updateTransportationThresholdDisplay(event) { method markTransportationSettingsDirty (line 1008) | markTransportationSettingsDirty(event) { method applyTransportationSettings (line 1011) | applyTransportationSettings(event) { method startSelectArea (line 1016) | startSelectArea() { method cancelAreaSelection (line 1019) | cancelAreaSelection() { method deleteSelectedPoints (line 1022) | deleteSelectedPoints() { method toggleVisits (line 1027) | toggleVisits(event) { method searchVisits (line 1030) | searchVisits(event) { method filterVisits (line 1033) | filterVisits(event) { method startCreateVisit (line 1036) | startCreateVisit() { method togglePlaces (line 1041) | togglePlaces(event) { method filterPlacesByTags (line 1044) | filterPlacesByTags(event) { method toggleAllPlaceTags (line 1047) | toggleAllPlaceTags(event) { method startCreatePlace (line 1050) | startCreatePlace() { method startCreateArea (line 1055) | startCreateArea() { method handleAreaCreated (line 1077) | async handleAreaCreated(_event) { method togglePoints (line 1125) | togglePoints(event) { method toggleRoutes (line 1128) | toggleRoutes(event) { method toggleHeatmap (line 1131) | toggleHeatmap(event) { method toggleFog (line 1134) | toggleFog(event) { method toggleScratch (line 1137) | toggleScratch(event) { method togglePhotos (line 1140) | togglePhotos(event) { method toggleAreas (line 1143) | toggleAreas(event) { method toggleTracks (line 1146) | toggleTracks(event) { method toggleSpeedColoredRoutes (line 1149) | toggleSpeedColoredRoutes(event) { method openSpeedColorEditor (line 1152) | openSpeedColorEditor() { method handleSpeedColorSave (line 1155) | handleSpeedColorSave(event) { method toggleFamily (line 1158) | toggleFamily(event) { method loadFamilyMembers (line 1163) | async loadFamilyMembers() { method loadFamilyHistory (line 1220) | async loadFamilyHistory() { method updateFamilyInfoLines (line 1264) | updateFamilyInfoLines(historyMembers) { method renderFamilyMembersList (line 1289) | renderFamilyMembersList(locations) { method getFamilyMemberColor (line 1356) | getFamilyMemberColor(userId) { method centerOnFamilyMember (line 1373) | centerOnFamilyMember(event) { method showInfo (line 1385) | showInfo(title, content, actions = []) { method showRouteInfo (line 1423) | showRouteInfo(routeData) { method closeInfo (line 1469) | closeInfo() { method handleEdit (line 1487) | handleEdit(event) { method handleDelete (line 1507) | handleDelete(event) { method openVisitModal (line 1524) | async openVisitModal(visitId) { method deleteArea (line 1554) | async deleteArea(areaId) { method openPlaceEditModal (line 1592) | async openPlaceEditModal(placeId) { method switchToToolsTab (line 1619) | switchToToolsTab() { method toggleReplay (line 1643) | async toggleReplay() { method replayTrack (line 1665) | async replayTrack(event) { method _initializeReplay (line 1723) | async _initializeReplay() { method _getLoadedPoints (line 1766) | _getLoadedPoints() { method _setInitialScrubberPosition (line 1785) | _setInitialScrubberPosition() { method replayScrubberHover (line 1803) | replayScrubberHover(event) { method _handleReplayMinuteChange (line 1812) | _handleReplayMinuteChange(minute) { method _jumpReplayToMinute (line 1870) | _jumpReplayToMinute(minute) { method replayPrevDay (line 1912) | replayPrevDay() { method replayNextDay (line 1933) | replayNextDay() { method replayCyclePrev (line 1954) | replayCyclePrev() { method replayCycleNext (line 1973) | replayCycleNext() { method _updateReplayDayDisplay (line 1993) | _updateReplayDayDisplay() { method _updateReplayDayButtons (line 2003) | _updateReplayDayButtons() { method _updateReplayTimeDisplay (line 2021) | _updateReplayTimeDisplay(minute, showNoData = false) { method _getPointVelocity (line 2044) | _getPointVelocity(point) { method _updateReplaySpeedDisplay (line 2062) | _updateReplaySpeedDisplay(velocity) { method _updateReplayDayCount (line 2089) | _updateReplayDayCount() { method _renderReplayDensity (line 2103) | _renderReplayDensity() { method _updateReplayCycleControls (line 2137) | _updateReplayCycleControls(minute) { method _hideReplayCycleControls (line 2157) | _hideReplayCycleControls() { method replayTogglePlayback (line 2168) | replayTogglePlayback() { method replaySpeedChange (line 2179) | replaySpeedChange(event) { method _startReplayPlayback (line 2193) | _startReplayPlayback() { method _stopReplayPlayback (line 2262) | _stopReplayPlayback() { method _updateTrackReplayButton (line 2294) | _updateTrackReplayButton(playing) { method _replayFrame (line 2315) | _replayFrame() { method _panMapToFollowMarker (line 2428) | _panMapToFollowMarker(lon, lat) { method _showReplayMarkerAt (line 2454) | _showReplayMarkerAt(lon, lat) { method _initializeReplayState (line 2467) | _initializeReplayState() { method _showReplayMarker (line 2489) | _showReplayMarker(point) { method _clearReplayMarker (line 2505) | _clearReplayMarker() { method _flyToReplayPoint (line 2518) | _flyToReplayPoint(point, fast = false) { method _highlightReplayRouteSegment (line 2533) | _highlightReplayRouteSegment(point) { method _parseReplayTimestamp (line 2580) | _parseReplayTimestamp(timestamp) { method _clearReplayRouteHighlight (line 2605) | _clearReplayRouteHighlight() { FILE: app/javascript/controllers/maps/maplibre_realtime_controller.js method connect (line 18) | connect() { method disconnect (line 47) | disconnect() { method setupChannels (line 56) | setupChannels() { method toggleLiveMode (line 74) | toggleLiveMode(event) { method updateRecentPointLayerVisibility (line 95) | updateRecentPointLayerVisibility() { method handleConnected (line 118) | handleConnected(channelName) { method handleDisconnected (line 130) | handleDisconnected(channelName) { method handleReceived (line 142) | handleReceived(data) { method mapsV2Controller (line 159) | get mapsV2Controller() { method handleNewPoint (line 169) | handleNewPoint(pointData) { method handleFamilyLocation (line 231) | handleFamilyLocation(member) { method updateRecentPoint (line 247) | updateRecentPoint(longitude, latitude, properties = {}) { method zoomToPoint (line 270) | zoomToPoint(longitude, latitude) { method updateConnectionIndicator (line 290) | updateConnectionIndicator(_connected) {} FILE: app/javascript/controllers/maps_controller.js method connect (line 64) | async connect() { method showDataWindowBanner (line 342) | showDataWindowBanner() { method disconnect (line 359) | disconnect() { method setupSubscription (line 378) | setupSubscription() { method setupTracksSubscription (line 391) | setupTracksSubscription() { method handleTrackUpdate (line 402) | handleTrackUpdate(data) { method initializeLiveMapHandler (line 432) | initializeLiveMapHandler() { method appendPoint (line 465) | appendPoint(data) { method initializeScratchLayer (line 477) | async initializeScratchLayer() { method toggleScratchLayer (line 487) | toggleScratchLayer() { method baseMaps (line 493) | baseMaps() { method createTreeLayerControl (line 542) | createTreeLayerControl(additionalLayers = {}) { method removeEventListeners (line 679) | removeEventListeners() { method addEventListeners (line 683) | addEventListeners() { method updatePreferredBaseLayer (line 850) | updatePreferredBaseLayer(selectedLayerName) { method saveEnabledLayers (line 876) | saveEnabledLayers() { method deletePoint (line 958) | deletePoint(id, apiKey) { method removeMarker (line 1029) | removeMarker(id) { method updateFog (line 1054) | updateFog(markers, clearFogRadius, fogLineThreshold) { method initializeDrawControl (line 1070) | initializeDrawControl() { method addSettingsButton (line 1110) | addSettingsButton() { method addInfoToggleButton (line 1151) | addInfoToggleButton() { method toggleFooterVisibility (line 1201) | toggleFooterVisibility() { method adjustBottomControls (line 1237) | adjustBottomControls(paddingBottom) { method toggleSettingsMenu (line 1262) | toggleSettingsMenu() { method pointsRenderingModeChecked (line 1434) | pointsRenderingModeChecked(value) { method liveMapEnabledChecked (line 1442) | liveMapEnabledChecked(value) { method speedColoredRoutesChecked (line 1450) | speedColoredRoutesChecked() { method updateSettings (line 1454) | updateSettings(event) { method updateMapWithNewSettings (line 1511) | updateMapWithNewSettings(newSettings) { method initializeTopRightButtons (line 1656) | initializeTopRightButtons() { method shouldShowTracksSelector (line 1688) | shouldShowTracksSelector() { method addRoutesTracksSelector (line 1693) | addRoutesTracksSelector() { method switchRouteMode (line 1754) | switchRouteMode(mode, _isInitial = false) { method updateLayerControlCheckboxes (line 1809) | updateLayerControlCheckboxes(layerName, isVisible) { method handleRouteLayerToggle (line 1827) | handleRouteLayerToggle(mode) { method updateRadioButtonState (line 1840) | updateRadioButtonState() { method updatePaneVisibilityAfterLayerChange (line 1857) | updatePaneVisibilityAfterLayerChange() { method initializeLayersFromSettings (line 1873) | initializeLayersFromSettings() { method updateTreeControlCheckboxes (line 2011) | updateTreeControlCheckboxes(enabledLayers) { method setupFamilyLayerListener (line 2077) | setupFamilyLayerListener() { method toggleRightPanel (line 2110) | toggleRightPanel() { method fetchAndDisplayTrackedMonths (line 2238) | async fetchAndDisplayTrackedMonths( method getWholeYearLink (line 2393) | getWholeYearLink() { method fetchAndDisplayVisitedCities (line 2416) | async fetchAndDisplayVisitedCities() { method displayVisitedCities (line 2461) | displayVisitedCities(citiesData) { method showGradientEditor (line 2499) | showGradientEditor() { method initializeTracksLayer (line 2639) | async initializeTracksLayer() { method createTracksFromData (line 2649) | createTracksFromData(tracksData) { method toggleTracksVisibility (line 2671) | toggleTracksVisibility(event) { method initializeLocationSearch (line 2679) | initializeLocationSearch() { method updateLayerControl (line 2690) | updateLayerControl(additionalLayers = {}) { method togglePlaceCreationMode (line 2701) | togglePlaceCreationMode() { method disablePlaceCreationMode (line 2729) | disablePlaceCreationMode() { method initializePrivacyZones (line 2746) | async initializePrivacyZones() { FILE: app/javascript/controllers/notifications_controller.js method connect (line 4) | connect() { method disconnect (line 11) | disconnect() { method enforceLimit (line 18) | enforceLimit() { FILE: app/javascript/controllers/onboarding_modal_controller.js method connect (line 12) | connect() { method disconnect (line 18) | disconnect() { method checkAndShowModal (line 28) | checkAndShowModal() { method showImport (line 43) | showImport() { method showTrack (line 48) | showTrack() { method showChoice (line 53) | showChoice() { method dismiss (line 57) | dismiss() { method switchScreen (line 61) | switchScreen(targetName) { method completeOnboarding (line 75) | completeOnboarding() { method trackEvent (line 92) | trackEvent(eventName) { FILE: app/javascript/controllers/place_creation_controller.js method connect (line 18) | connect() { method setupEventListeners (line 24) | setupEventListeners() { method setupTagListeners (line 33) | setupTagListeners() { method open (line 56) | open(latitude, longitude) { method openForEdit (line 78) | openForEdit(place) { method close (line 115) | close() { method loadNearbyFrame (line 129) | loadNearbyFrame(latitude, longitude) { method selectNearby (line 135) | selectNearby(event) { method onSubmitEnd (line 142) | onSubmitEnd(event) { method addMethodOverride (line 164) | addMethodOverride(method) { method removeMethodOverride (line 175) | removeMethodOverride() { FILE: app/javascript/controllers/places_filter_controller.js method connect (line 4) | connect() { method filterPlaces (line 8) | filterPlaces(_event) { method clearAll (line 32) | clearAll(event) { FILE: app/javascript/controllers/privacy_radius_controller.js method toggleRadius (line 6) | toggleRadius(event) { method updateFromSlider (line 25) | updateFromSlider(event) { FILE: app/javascript/controllers/public_stat_map_controller.js method connect (line 17) | connect() { method disconnect (line 26) | disconnect() { method initializeMap (line 32) | initializeMap() { method addMapLayers (line 50) | addMapLayers() { method addFallbackOSMLayer (line 74) | addFallbackOSMLayer() { method loadHexagons (line 81) | async loadHexagons() { method loadStaticHexagons (line 145) | async loadStaticHexagons() { method addStaticHexagonsToMap (line 233) | addStaticHexagonsToMap(geojsonData) { method styleHexagon (line 264) | styleHexagon() { method buildPopupContent (line 274) | buildPopupContent(props) { method onHexagonMouseOver (line 331) | onHexagonMouseOver(e) { method onHexagonMouseOut (line 349) | onHexagonMouseOut(e) { FILE: app/javascript/controllers/removals_controller.js method connect (line 8) | connect() { method remove (line 16) | remove() { FILE: app/javascript/controllers/sharing_modal_controller.js method toggleSharing (line 12) | toggleSharing() { method expirationChanged (line 27) | expirationChanged() { method copyLink (line 33) | async copyLink() { FILE: app/javascript/controllers/speed_color_editor_controller.js method connect (line 13) | connect() { method loadColorStops (line 17) | loadColorStops() { method parseColorStops (line 26) | parseColorStops(stopsString) { method serializeColorStops (line 33) | serializeColorStops() { method renderStops (line 37) | renderStops() { method updateSpeed (line 91) | updateSpeed(event) { method updateColor (line 97) | updateColor(event) { method updateColorText (line 112) | updateColorText(event) { method addStop (line 131) | addStop() { method removeStop (line 148) | removeStop(event) { method updatePreview (line 158) | updatePreview() { method save (line 171) | save() { method close (line 182) | close() { method resetToDefault (line 191) | resetToDefault() { FILE: app/javascript/controllers/stat_page_controller.js method connect (line 9) | connect() { method disconnect (line 35) | disconnect() { method initializeMap (line 42) | initializeMap() { method loadMonthData (line 85) | async loadMonthData() { method processPointsData (line 134) | processPointsData(points) { method toggleHeatmap (line 192) | toggleHeatmap() { method togglePoints (line 228) | togglePoints() { method showLoading (line 246) | showLoading(show) { method showError (line 252) | showError(message) { method showNoData (line 265) | showNoData() { method addMapLayers (line 278) | addMapLayers() { method addFallbackOSMLayer (line 302) | addFallbackOSMLayer() { FILE: app/javascript/controllers/timeline_feed_controller.js method dayToggled (line 16) | dayToggled(event) { method toggleTrackInfo (line 56) | toggleTrackInfo(event) { method entryHover (line 106) | entryHover(event) { method entryUnhover (line 121) | entryUnhover() { FILE: app/javascript/controllers/trip_map_controller.js method connect (line 18) | connect() { method initializeMap (line 26) | initializeMap() { method baseMaps (line 51) | baseMaps() { method showRoute (line 91) | showRoute() { method getCoordinates (line 115) | getCoordinates(pathData) { method disconnect (line 148) | disconnect() { FILE: app/javascript/controllers/trips_controller.js method connect (line 17) | connect() { method initializeMap (line 41) | initializeMap() { method disconnect (line 171) | disconnect() { method baseMaps (line 177) | baseMaps() { method addMarkers (line 211) | addMarkers() { method addPolyline (line 229) | addPolyline() { method fitMapToBounds (line 242) | fitMapToBounds() { method updateMapWithCoordinates (line 250) | updateMapWithCoordinates(newCoordinates) { FILE: app/javascript/controllers/upload_controller.js constant MAX_FILE_SIZE (line 5) | const MAX_FILE_SIZE = 11 * 1024 * 1024 // 11MB constant VALID_ZIP_TYPES (line 6) | const VALID_ZIP_TYPES = ["application/zip", "application/x-zip-compressed"] method connect (line 20) | connect() { method onSubmit (line 33) | onSubmit(event) { method upload (line 45) | upload() { method validateFiles (line 92) | validateFiles(files) { method createProgressBar (line 133) | createProgressBar() { method uploadComplete (line 149) | uploadComplete() { method markProgressComplete (line 170) | markProgressComplete() { method updateAggregateProgress (line 183) | updateAggregateProgress() { method addHiddenField (line 192) | addHiddenField(signedId) { method clearExistingHiddenFields (line 200) | clearExistingHiddenFields() { method hasUploadedFiles (line 208) | hasUploadedFiles() { method hiddenFieldCount (line 212) | hiddenFieldCount() { method disableSubmit (line 218) | disableSubmit() { FILE: app/javascript/controllers/visit_creation_v2_controller.js method connect (line 24) | connect() { method setupEventListeners (line 32) | setupEventListeners() { method disconnect (line 38) | disconnect() { method open (line 45) | open(lat, lng, mapController) { method openForEdit (line 81) | openForEdit(visit) { method close (line 132) | close() { method submit (line 151) | async submit(event) { method addMarker (line 234) | addMarker(lat, lng) { method removeMarker (line 258) | removeMarker() { method cleanup (line 268) | cleanup() { method formatDateTime (line 275) | formatDateTime(date) { method showToast (line 282) | showToast(message, type = "info") { FILE: app/javascript/controllers/visit_modal_map_controller.js method connect (line 11) | connect() { method addMarkers (line 31) | addMarkers() { FILE: app/javascript/controllers/visit_modal_places_controller.js method selectPlace (line 6) | selectPlace() { FILE: app/javascript/controllers/visit_name_controller.js method edit (line 6) | edit() { method save (line 12) | save() { method cancel (line 16) | cancel() { method handleEnter (line 21) | handleEnter(event) { FILE: app/javascript/controllers/visits_map_controller.js method connect (line 8) | connect() { method initializeMap (line 14) | initializeMap() { method getVisitColor (line 58) | getVisitColor(element) { method highlightVisit (line 71) | highlightVisit(event) { method unhighlightVisit (line 98) | unhighlightVisit(event) { FILE: app/javascript/maps/areas.js function handleAreaCreated (line 78) | function handleAreaCreated(areasLayer, layer, apiKey) { function saveArea (line 178) | function saveArea(formData, areasLayer, layer, apiKey) { function deleteArea (line 249) | function deleteArea(id, areasLayer, layer, apiKey) { function fetchAndDrawAreas (line 272) | function fetchAndDrawAreas(areasLayer, apiKey) { FILE: app/javascript/maps/country_codes.js function countryCodesMap (line 1) | function countryCodesMap() { FILE: app/javascript/maps/fog_of_war.js function initializeFogCanvas (line 1) | function initializeFogCanvas(map) { function drawFogCanvas (line 26) | function drawFogCanvas(map, markers, clearFogRadius, fogLineThreshold) { function metersToPixels (line 98) | function metersToPixels(map, meters) { function getMetersPerPixel (line 105) | function getMetersPerPixel(latitude, zoom) { function createFogOverlay (line 113) | function createFogOverlay() { FILE: app/javascript/maps/helpers.js function formatDistance (line 2) | function formatDistance(distance, unit = "km") { function getUrlParameter (line 31) | function getUrlParameter(name) { function minutesToDaysHoursMinutes (line 35) | function minutesToDaysHoursMinutes(minutes) { function formatDate (line 56) | function formatDate(timestamp, timezone) { function formatSpeed (line 93) | function formatSpeed(speedKmh, unit = "km") { function haversineDistance (line 102) | function haversineDistance(lat1, lon1, lat2, lon2, unit = "km") { function debounce (line 124) | function debounce(func, wait) { FILE: app/javascript/maps/layers.js function createMapLayer (line 7) | function createMapLayer(map, selectedLayerName, layerKey, selfHosted) { function createAllMapLayers (line 55) | function createAllMapLayers(map, selectedLayerName, selfHosted) { function osmMapLayer (line 77) | function osmMapLayer(map, selectedLayerName) { FILE: app/javascript/maps/live_map_handler.js class LiveMapHandler (line 15) | class LiveMapHandler { method constructor (line 16) | constructor(map, layers, options = {}) { method enable (line 50) | enable() { method disable (line 58) | disable() { method enabled (line 67) | get enabled() { method appendPoint (line 76) | appendPoint(data) { method getStats (line 117) | getStats() { method updateOptions (line 130) | updateOptions(newOptions) { method clear (line 137) | clear() { method _enforcePointLimits (line 167) | _enforcePointLimits() { method _createMarker (line 183) | _createMarker(point) { method _updateHeatmap (line 191) | _updateHeatmap(point) { method _updatePolylines (line 209) | _updatePolylines(newPoint) { method _updateFogOfWar (line 234) | _updateFogOfWar() { method _updateLastMarker (line 246) | _updateLastMarker() { method _cleanup (line 264) | _cleanup() { FILE: app/javascript/maps/location_search.js class LocationSearch (line 4) | class LocationSearch { method constructor (line 5) | constructor(map, apiKey, userTheme = "dark") { method initializeSearchBar (line 22) | initializeSearchBar() { method createInlineSearchBar (line 72) | createInlineSearchBar() { method preventMapScrollOnContainers (line 165) | preventMapScrollOnContainers() { method bindSearchEvents (line 230) | bindSearchEvents() { method showLoading (line 324) | showLoading() { method showError (line 337) | showError(message) { method displaySearchResults (line 351) | displaySearchResults(data) { method buildLocationResultHtml (line 386) | buildLocationResultHtml(location, index) { method groupVisitsByYear (line 446) | groupVisitsByYear(visits) { method formatDateShort (line 467) | formatDateShort(dateString) { method bindResultEvents (line 476) | bindResultEvents() { method toggleYear (line 500) | toggleYear(locationIndex, year, toggleElement) { method focusOnLocation (line 519) | focusOnLocation(location) { method focusOnVisit (line 540) | focusOnVisit(location, visitIndex) { method addVisitMarker (line 573) | addVisitMarker(lat, lon, visit, location) { method clearSearch (line 633) | clearSearch() { method clearVisitMarker (line 641) | clearVisitMarker() { method showSearchBar (line 660) | showSearchBar() { method repositionSearchBar (line 701) | repositionSearchBar() { method hideSearchBar (line 719) | hideSearchBar() { method showDefaultState (line 728) | showDefaultState() { method clearSearchMarkers (line 734) | clearSearchMarkers() { method hideResults (line 743) | hideResults() { method debouncedSuggestionSearch (line 750) | debouncedSuggestionSearch(query) { method performSuggestionSearch (line 762) | async performSuggestionSearch(query) { method showSuggestionsLoading (line 795) | showSuggestionsLoading() { method displaySuggestions (line 808) | displaySuggestions(suggestions) { method bindSuggestionEvents (line 839) | bindSuggestionEvents() { method navigateSuggestions (line 850) | navigateSuggestions(direction) { method highlightActiveSuggestion (line 872) | highlightActiveSuggestion() { method selectSuggestion (line 887) | selectSuggestion(index) { method showSearchLoading (line 898) | showSearchLoading(locationName) { method performCoordinateSearch (line 912) | async performCoordinateSearch(suggestion) { method hideSuggestions (line 946) | hideSuggestions() { method createVisitAt (line 958) | createVisitAt(lat, lon, placeName, visitDate, durationEstimate) { method showBasicVisitForm (line 977) | showBasicVisitForm(lat, lon, placeName, presetStartTime, presetEndTime) { method handleBasicFormSubmit (line 1089) | async handleBasicFormSubmit(event, popup) { method refreshVisitsIfAvailable (line 1155) | refreshVisitsIfAvailable() { method calculateVisitTimes (line 1173) | calculateVisitTimes(visitDate, durationEstimate) { method escapeHtml (line 1232) | escapeHtml(text) { method formatDate (line 1243) | formatDate(dateString) { method formatDateTime (line 1247) | formatDateTime(dateString) { FILE: app/javascript/maps/map_controls.js function createStandardButton (line 15) | function createStandardButton( function createTogglePanelControl (line 61) | function createTogglePanelControl(onClickCallback, userTheme = "dark") { function createVisitsDrawerControl (line 92) | function createVisitsDrawerControl(onClickCallback, userTheme = "dark") { function createAreaSelectionControl (line 116) | function createAreaSelectionControl( function createAddVisitControl (line 145) | function createAddVisitControl(onClickCallback, userTheme = "dark") { function createCreatePlaceControl (line 169) | function createCreatePlaceControl(onClickCallback, userTheme = "dark") { function addTopRightButtons (line 204) | function addTopRightButtons(map, callbacks, userTheme = "dark") { function setAddVisitButtonActive (line 264) | function setAddVisitButtonActive(button) { function setAddVisitButtonInactive (line 277) | function setAddVisitButtonInactive(button, userTheme = "dark") { function setCreatePlaceButtonActive (line 289) | function setCreatePlaceButtonActive(button) { function setCreatePlaceButtonInactive (line 304) | function setCreatePlaceButtonInactive(button, userTheme = "dark") { FILE: app/javascript/maps/marker_factory.js constant MARKER_DATA_INDICES (line 3) | const MARKER_DATA_INDICES = { function createStandardIcon (line 31) | function createStandardIcon(color = "blue", size = 4) { function createLiveMarker (line 48) | function createLiveMarker(point, options = {}) { function createInteractiveMarker (line 76) | function createInteractiveMarker( function createSimplifiedMarker (line 119) | function createSimplifiedMarker(point, userSettings = {}) { function addDragHandlers (line 164) | function addDragHandlers(marker, apiKey, userSettings) { FILE: app/javascript/maps/markers.js function createMarkersArray (line 7) | function createMarkersArray(markersData, userSettings, apiKey) { function createSimplifiedMarkers (line 26) | function createSimplifiedMarkers(markersData, _renderer, userSettings) { FILE: app/javascript/maps/photos.js function fetchAndDisplayPhotos (line 7) | async function fetchAndDisplayPhotos( function getPhotoLink (line 113) | function getPhotoLink(photo, userSettings) { function getSourceUrl (line 137) | function getSourceUrl(photo, userSettings) { function createPhotoMarker (line 148) | function createPhotoMarker(photo, userSettings, photoMarkers, apiKey) { FILE: app/javascript/maps/places.js class PlacesManager (line 7) | class PlacesManager { method constructor (line 8) | constructor(map, apiKey) { method initialize (line 19) | async initialize() { method setupEventListeners (line 32) | setupEventListeners() { method loadPlaces (line 129) | async loadPlaces(tagIds = null, untaggedOnly = false) { method renderPlaces (line 155) | renderPlaces() { method createPlaceMarker (line 169) | createPlaceMarker(place) { method createPlaceIcon (line 184) | createPlaceIcon(place) { method createPopupContent (line 216) | createPopupContent(place) { method escapeHtml (line 251) | escapeHtml(text) { method sanitizeColor (line 257) | sanitizeColor(color) { method setupMapClickHandler (line 271) | setupMapClickHandler() { method handleMapClick (line 306) | async handleMapClick(e) { method triggerPlaceCreation (line 323) | async triggerPlaceCreation(lat, lng) { method editPlace (line 331) | editPlace(placeId) { method deletePlace (line 345) | async deletePlace(placeId) { method enableCreationMode (line 386) | enableCreationMode() { method disableCreationMode (line 392) | disableCreationMode() { method filterByTags (line 402) | filterByTags(tagIds, untaggedOnly = false) { method createFilteredLayer (line 411) | createFilteredLayer(tagIds) { method loadPlacesIntoLayer (line 428) | async loadPlacesIntoLayer(layer, tagIds) { method refreshPlaces (line 458) | async refreshPlaces() { method ensurePlacesLayerVisible (line 464) | ensurePlacesLayerVisible() { method show (line 503) | show() { method hide (line 509) | hide() { method showNotification (line 515) | showNotification(message, type = "info") { FILE: app/javascript/maps/places_control.js function createPlacesControl (line 7) | function createPlacesControl(placesManager, tags, userTheme = "dark") { FILE: app/javascript/maps/polylines.js function calculateSpeed (line 9) | function calculateSpeed(point1, point2) { function colorFormatEncode (line 44) | function colorFormatEncode(arr) { function colorFormatDecode (line 48) | function colorFormatDecode(str) { function getSpeedColor (line 55) | function getSpeedColor(speedKmh, useSpeedColors, speedColorScale) { function hexToRGB (line 96) | function hexToRGB(hex) { function processInBatches (line 104) | function processInBatches(items, batchSize, processFn) { function addHighlightOnHover (line 143) | function addHighlightOnHover( function createPolylinesLayer (line 396) | function createPolylinesLayer( function updatePolylinesColors (line 554) | function updatePolylinesColors( function updatePolylinesOpacity (line 600) | function updatePolylinesOpacity(polylinesLayer, opacity) { function reestablishPolylineEventHandlers (line 620) | function reestablishPolylineEventHandlers( function managePaneVisibility (line 713) | function managePaneVisibility(map, activeLayerType) { FILE: app/javascript/maps/popups.js function createPopupContent (line 3) | function createPopupContent(marker, timezone, distanceUnit) { FILE: app/javascript/maps/privacy_zones.js class PrivacyZoneManager (line 7) | class PrivacyZoneManager { method constructor (line 8) | constructor(map, apiKey) { method loadPrivacyZones (line 16) | async loadPrivacyZones() { method isPointInPrivacyZone (line 35) | isPointInPrivacyZone(lat, lng) { method filterPoints (line 52) | filterPoints(points) { method filterTracks (line 98) | filterTracks(tracks) { method showPrivacyCircles (line 117) | showPrivacyCircles() { method hidePrivacyCircles (line 152) | hidePrivacyCircles() { method togglePrivacyCircles (line 159) | togglePrivacyCircles(show = null) { method hasPrivacyZones (line 169) | hasPrivacyZones() { method getZoneCount (line 173) | getZoneCount() { method getTotalPlacesCount (line 177) | getTotalPlacesCount() { FILE: app/javascript/maps/scratch_layer.js class ScratchLayer (line 3) | class ScratchLayer { method constructor (line 4) | constructor(map, markers, countryCodesMap, apiKey) { method setup (line 13) | async setup() { method _fetchWorldBordersData (line 56) | async _fetchWorldBordersData() { method getVisitedCountries (line 77) | getVisitedCountries() { method toggle (line 92) | toggle() { method refresh (line 105) | async refresh() { method updateMarkers (line 151) | updateMarkers(markers) { method getLayer (line 156) | getLayer() { method isVisible (line 161) | isVisible() { method remove (line 166) | remove() { method addToMap (line 173) | addToMap() { FILE: app/javascript/maps/theme_utils.js function getThemeStyles (line 8) | function getThemeStyles(userTheme) { function applyThemeToControl (line 32) | function applyThemeToControl(element, userTheme, additionalStyles = {}) { function applyThemeToButton (line 50) | function applyThemeToButton(button, userTheme) { function applyThemeToPanel (line 74) | function applyThemeToPanel(panel, userTheme) { FILE: app/javascript/maps/tracks.js function getTrackColor (line 17) | function getTrackColor() { function createTrackPopupContent (line 22) | function createTrackPopupContent(track, distanceUnit) { function addTrackInteractions (line 45) | function addTrackInteractions( function getTrackCoordinates (line 200) | function getTrackCoordinates(track) { function createTracksLayer (line 265) | function createTracksLayer(tracks, map, userSettings, distanceUnit) { function updateTracksColors (line 348) | function updateTracksColors(tracksLayer) { function updateTracksOpacity (line 363) | function updateTracksOpacity(tracksLayer, opacity) { function toggleTracksVisibility (line 373) | function toggleTracksVisibility(tracksLayer, map, isVisible) { function filterTracks (line 382) | function filterTracks(tracks, criteria) { function createSingleTrackLayer (line 413) | function createSingleTrackLayer(track, map, userSettings, distanceUnit) { function addOrUpdateTrack (line 462) | function addOrUpdateTrack( function removeTrackById (line 491) | function removeTrackById(tracksLayer, trackId) { function isTrackInTimeRange (line 522) | function isTrackInTimeRange(track, startAt, endAt) { function handleIncrementalTrackUpdate (line 544) | function handleIncrementalTrackUpdate( FILE: app/javascript/maps/visits.js class VisitsManager (line 8) | class VisitsManager { method constructor (line 9) | constructor(map, apiKey, userTheme = "dark", mapsController = null) { method formatDuration (line 55) | formatDuration(seconds) { method toggleSelectionMode (line 81) | toggleSelectionMode() { method onMouseDown (line 111) | onMouseDown(e) { method onMouseMove (line 126) | onMouseMove(e) { method onMouseUp (line 145) | onMouseUp(_e) { method clearSelection (line 170) | clearSelection() { method fetchVisitsInSelection (line 197) | async fetchVisitsInSelection() { method filterPointsInSelection (line 252) | filterPointsInSelection(bounds) { method getPointsData (line 281) | getPointsData() { method groupVisitsByDate (line 302) | groupVisitsByDate(visits) { method createDateSummaryHtml (line 359) | createDateSummaryHtml(dateGroups) { method addSelectionCancelButton (line 406) | addSelectionCancelButton() { method deleteSelectedPoints (line 459) | async deleteSelectedPoints() { method updatePolylinesAfterDeletion (line 572) | updatePolylinesAfterDeletion() { method toggleDrawer (line 634) | toggleDrawer() { method createDrawer (line 674) | createDrawer() { method fetchAndDisplayVisits (line 716) | async fetchAndDisplayVisits() { method createMapCircles (line 810) | createMapCircles(visits) { method displayVisits (line 881) | displayVisits(visits) { method setupMergeFunctionality (line 1052) | setupMergeFunctionality(container) { method updateMergeUI (line 1096) | updateMergeUI(container) { method mergeVisits (line 1266) | async mergeVisits(visitIds) { method bulkUpdateVisitStatus (line 1303) | async bulkUpdateVisitStatus(visitIds, status) { method addVisitItemEventListeners (line 1343) | addVisitItemEventListeners(container) { method highlightVisit (line 1444) | highlightVisit(visitId, item, coords) { method clearVisitHighlight (line 1516) | clearVisitHighlight() { method fetchPossiblePlaces (line 1546) | async fetchPossiblePlaces(visit) { method addPopupFormEventListeners (line 1713) | addPopupFormEventListeners(visit) { method handleStatusChange (line 1824) | async handleStatusChange(event, visitId, status) { method handleDeleteVisit (line 1861) | async handleDeleteVisit(event, visitId) { method truncateText (line 1909) | truncateText(text, maxLength) { method getVisitCirclesLayer (line 1918) | getVisitCirclesLayer() { method getConfirmedVisitCirclesLayer (line 1926) | getConfirmedVisitCirclesLayer() { FILE: app/javascript/maps_maplibre/channels/map_channel.js function createMapChannel (line 9) | function createMapChannel(options = {}) { FILE: app/javascript/maps_maplibre/components/photo_popup.js class PhotoPopupFactory (line 6) | class PhotoPopupFactory { method createPhotoPopup (line 13) | static createPhotoPopup(properties, timezone = "UTC") { FILE: app/javascript/maps_maplibre/components/toast.js class Toast (line 5) | class Toast { method init (line 11) | static init() { method addStyles (line 35) | static addStyles() { method show (line 81) | static show(message, type = "info", duration = 3000) { method dismiss (line 116) | static dismiss(toast) { method getBackgroundColor (line 130) | static getBackgroundColor(type) { method success (line 145) | static success(message, duration = 3000) { method error (line 154) | static error(message, duration = 4000) { method warning (line 163) | static warning(message, duration = 3500) { method info (line 172) | static info(message, duration = 3000) { method clearAll (line 179) | static clearAll() { FILE: app/javascript/maps_maplibre/components/upgrade_banner.js class UpgradeBanner (line 5) | class UpgradeBanner { method show (line 18) | static show({ message, upgradeUrl, utmContent }) { method dismiss (line 74) | static dismiss() { FILE: app/javascript/maps_maplibre/components/visit_card.js class VisitCard (line 4) | class VisitCard { method create (line 11) | static create(visit, options = {}) { method createBulkActions (line 131) | static createBulkActions(selectedCount) { FILE: app/javascript/maps_maplibre/components/visit_popup.js class VisitPopupFactory (line 7) | class VisitPopupFactory { method createVisitPopup (line 13) | static createVisitPopup(properties) { FILE: app/javascript/maps_maplibre/layers/areas_layer.js class AreasLayer (line 6) | class AreasLayer extends BaseLayer { method constructor (line 7) | constructor(map, options = {}) { method getSourceConfig (line 11) | getSourceConfig() { method getLayerConfigs (line 21) | getLayerConfigs() { method getLayerIds (line 64) | getLayerIds() { FILE: app/javascript/maps_maplibre/layers/base_layer.js class BaseLayer (line 5) | class BaseLayer { method constructor (line 6) | constructor(map, options = {}) { method add (line 18) | add(data) { method update (line 52) | update(data) { method remove (line 63) | remove() { method show (line 80) | show() { method hide (line 88) | hide() { method toggle (line 97) | toggle(visible = !this.visible) { method setVisibility (line 106) | setVisibility(visible) { method getSourceConfig (line 119) | getSourceConfig() { method getLayerConfigs (line 127) | getLayerConfigs() { method getLayerIds (line 135) | getLayerIds() { FILE: app/javascript/maps_maplibre/layers/family_layer.js class FamilyLayer (line 7) | class FamilyLayer extends BaseLayer { method constructor (line 8) | constructor(map, options = {}) { method getSourceConfig (line 14) | getSourceConfig() { method getLayerConfigs (line 24) | getLayerConfigs() { method getLayerIds (line 89) | getLayerIds() { method updateMember (line 102) | updateMember(member) { method appendToHistory (line 145) | appendToHistory(memberId, coords, color) { method getMemberColor (line 195) | getMemberColor(memberId) { method removeMember (line 214) | removeMember(memberId) { method loadMembers (line 228) | loadMembers(locations) { method loadMemberHistory (line 262) | loadMemberHistory(historyData) { method clearHistory (line 311) | clearHistory() { method centerOnMember (line 327) | centerOnMember(memberId) { method getMembers (line 344) | getMembers() { FILE: app/javascript/maps_maplibre/layers/fog_layer.js class FogLayer (line 6) | class FogLayer { method constructor (line 7) | constructor(map, options = {}) { method add (line 18) | add(data) { method update (line 28) | update(data) { method createCanvas (line 34) | createCanvas() { method resizeCanvas (line 61) | resizeCanvas() { method render (line 70) | render() { method getMetersPerPixel (line 102) | getMetersPerPixel(latitude) { method show (line 109) | show() { method hide (line 117) | hide() { method toggle (line 124) | toggle(visible = !this.visible) { method remove (line 132) | remove() { FILE: app/javascript/maps_maplibre/layers/heatmap_layer.js class HeatmapLayer (line 7) | class HeatmapLayer extends BaseLayer { method constructor (line 8) | constructor(map, options = {}) { method getSourceConfig (line 13) | getSourceConfig() { method getLayerConfigs (line 23) | getLayerConfigs() { FILE: app/javascript/maps_maplibre/layers/photos_layer.js class PhotosLayer (line 11) | class PhotosLayer extends BaseLayer { method constructor (line 12) | constructor(map, options = {}) { method getSourceConfig (line 23) | getSourceConfig() { method getLayerConfigs (line 33) | getLayerConfigs() { method getLayerIds (line 72) | getLayerIds() { method add (line 76) | async add(data) { method update (line 108) | async update(data) { method _onMoveEnd (line 117) | _onMoveEnd() { method _onClusterClick (line 122) | _onClusterClick(e) { method _spiderfyCluster (line 156) | _spiderfyCluster(source, clusterId, center) { method _createSpiderLeg (line 184) | _createSpiderLeg(from, to) { method _clearSpiderfiedMarkers (line 212) | _clearSpiderfiedMarkers() { method _syncMarkers (line 231) | _syncMarkers() { method _computeSpiderOffsets (line 306) | _computeSpiderOffsets(visibleFeatures) { method _computeSpiralPositions (line 367) | _computeSpiralPositions(count, center) { method _updateLeg (line 415) | _updateLeg(featureId, origin, offset) { method _removeLeg (line 454) | _removeLeg(featureId) { method _clearAllLegs (line 466) | _clearAllLegs() { method _createPhotoMarker (line 477) | _createPhotoMarker(feature, lngLat) { method showPhotoPopup (line 529) | showPhotoPopup(feature) { method clearMarkers (line 588) | clearMarkers() { method show (line 599) | show() { method hide (line 617) | hide() { method remove (line 634) | remove() { FILE: app/javascript/maps_maplibre/layers/places_layer.js class PlacesLayer (line 7) | class PlacesLayer extends BaseLayer { method constructor (line 8) | constructor(map, options = {}) { method getSourceConfig (line 12) | getSourceConfig() { method getLayerConfigs (line 22) | getLayerConfigs() { method getLayerIds (line 63) | getLayerIds() { FILE: app/javascript/maps_maplibre/layers/points_layer.js class PointsLayer (line 8) | class PointsLayer extends BaseLayer { method constructor (line 9) | constructor(map, options = {}) { method getSourceConfig (line 25) | getSourceConfig() { method getLayerConfigs (line 35) | getLayerConfigs() { method enableDragging (line 55) | enableDragging() { method disableDragging (line 72) | disableDragging() { method onMouseEnter (line 82) | onMouseEnter() { method onMouseLeave (line 86) | onMouseLeave() { method onMouseDown (line 92) | onMouseDown(e) { method onMouseMove (line 106) | onMouseMove(e) { method onMouseUp (line 126) | async onMouseUp(e) { method updatePointPosition (line 168) | async updatePointPosition(pointId, latitude, longitude) { method updateConnectedRoutes (line 198) | async updateConnectedRoutes(_pointId, oldCoords, newCoords) { method add (line 256) | add(data) { method remove (line 268) | remove() { FILE: app/javascript/maps_maplibre/layers/recent_point_layer.js class RecentPointLayer (line 7) | class RecentPointLayer extends BaseLayer { method constructor (line 8) | constructor(map, options = {}) { method getSourceConfig (line 12) | getSourceConfig() { method getLayerConfigs (line 22) | getLayerConfigs() { method updateRecentPoint (line 56) | updateRecentPoint(lon, lat, properties = {}) { method clear (line 76) | clear() { FILE: app/javascript/maps_maplibre/layers/replay_marker_layer.js class ReplayMarkerLayer (line 10) | class ReplayMarkerLayer extends BaseLayer { method constructor (line 11) | constructor(map, options = {}) { method getSourceConfig (line 17) | getSourceConfig() { method getLayerConfigs (line 27) | getLayerConfigs() { method showMarker (line 61) | showMarker(lon, lat, properties = {}) { method getCurrentEmoji (line 108) | getCurrentEmoji() { method hideMarker (line 115) | hideMarker() { method clear (line 123) | clear() { method _showEmojiMarker (line 137) | _showEmojiMarker(lon, lat, emoji) { method _removeEmojiMarker (line 159) | _removeEmojiMarker() { method _hideCircleLayer (line 170) | _hideCircleLayer() { method _showCircleLayer (line 184) | _showCircleLayer() { FILE: app/javascript/maps_maplibre/layers/routes_layer.js class RoutesLayer (line 9) | class RoutesLayer extends BaseLayer { method constructor (line 10) | constructor(map, options = {}) { method getSourceConfig (line 19) | getSourceConfig() { method add (line 32) | add(data) { method getLayerConfigs (line 68) | getLayerConfigs() { method update (line 135) | update(data) { method updateBaseData (line 157) | updateBaseData(data) { method setVisibility (line 169) | setVisibility(visible) { method setHoverRoute (line 184) | setHoverRoute(feature) { method remove (line 206) | remove() { method haversineDistance (line 244) | static haversineDistance(lat1, lon1, lat2, lon2) { method pointsToRoutes (line 255) | static pointsToRoutes(points, options = {}) { FILE: app/javascript/maps_maplibre/layers/scratch_layer.js class ScratchLayer (line 10) | class ScratchLayer extends BaseLayer { method constructor (line 11) | constructor(map, options = {}) { method add (line 19) | async add(data) { method update (line 34) | async update(data) { method detectCountriesFromPoints (line 51) | detectCountriesFromPoints(points) { method loadCountryBoundaries (line 70) | async loadCountryBoundaries() { method createCountriesGeoJSON (line 118) | createCountriesGeoJSON() { method getSourceConfig (line 145) | getSourceConfig() { method getLayerConfigs (line 155) | getLayerConfigs() { method getLayerIds (line 181) | getLayerIds() { FILE: app/javascript/maps_maplibre/layers/selected_points_layer.js class SelectedPointsLayer (line 6) | class SelectedPointsLayer extends BaseLayer { method constructor (line 7) | constructor(map, options = {}) { method getSourceConfig (line 12) | getSourceConfig() { method getLayerConfigs (line 22) | getLayerConfigs() { method getLayerIds (line 53) | getLayerIds() { method updateSelectedPoints (line 60) | updateSelectedPoints(geojson) { method getSelectedPointIds (line 79) | getSelectedPointIds() { method clearSelection (line 86) | clearSelection() { method getCount (line 97) | getCount() { FILE: app/javascript/maps_maplibre/layers/selection_layer.js class SelectionLayer (line 7) | class SelectionLayer extends BaseLayer { method constructor (line 8) | constructor(map, options = {}) { method getSourceConfig (line 16) | getSourceConfig() { method getLayerConfigs (line 26) | getLayerConfigs() { method getLayerIds (line 55) | getLayerIds() { method enableSelectionMode (line 62) | enableSelectionMode() { method disableSelectionMode (line 80) | disableSelectionMode() { method onMouseDown (line 99) | onMouseDown(e) { method onMouseMove (line 112) | onMouseMove(e) { method onMouseUp (line 140) | onMouseUp(e) { method createRectangle (line 160) | createRectangle(start, end) { method calculateBounds (line 173) | calculateBounds(start, end) { method clearSelection (line 185) | clearSelection() { method remove (line 198) | remove() { FILE: app/javascript/maps_maplibre/layers/track_points_layer.js class TrackPointsLayer (line 8) | class TrackPointsLayer extends BaseLayer { method constructor (line 9) | constructor(map, options = {}) { method getSourceConfig (line 27) | getSourceConfig() { method getLayerConfigs (line 37) | getLayerConfigs() { method loadTrackPoints (line 58) | async loadTrackPoints(trackId) { method pointsToGeoJSON (line 95) | pointsToGeoJSON(points) { method enableDragging (line 124) | enableDragging() { method disableDragging (line 138) | disableDragging() { method onMouseEnter (line 148) | onMouseEnter() { method onMouseLeave (line 152) | onMouseLeave() { method onMouseDown (line 158) | onMouseDown(e) { method onMouseMove (line 170) | onMouseMove(e) { method onMouseUp (line 194) | async onMouseUp(e) { method updatePointPosition (line 249) | async updatePointPosition(pointId, latitude, longitude) { method clear (line 279) | clear() { method remove (line 288) | remove() { FILE: app/javascript/maps_maplibre/layers/tracks_layer.js class TracksLayer (line 9) | class TracksLayer extends BaseLayer { method constructor (line 10) | constructor(map, options = {}) { method getSourceConfig (line 31) | getSourceConfig() { method getLayerConfigs (line 41) | getLayerConfigs() { method add (line 93) | add(data) { method setSelectedTrack (line 125) | setSelectedTrack(feature) { method _buildFlowGradient (line 170) | _buildFlowGradient( method _startFlowAnimation (line 249) | _startFlowAnimation() { method _stopFlowAnimation (line 303) | _stopFlowAnimation() { method _computeLineLength (line 316) | _computeLineLength(coordinates) { method showSegments (line 337) | showSegments(trackFeature, segments) { method hideSegments (line 436) | hideSegments() { method _setupSegmentHoverEvents (line 448) | _setupSegmentHoverEvents() { method _removeSegmentHoverEvents (line 482) | _removeSegmentHoverEvents() { method setSegmentHoverCallback (line 505) | setSegmentHoverCallback(callback) { method setSegmentLeaveCallback (line 513) | setSegmentLeaveCallback(callback) { method updateTrackFeature (line 525) | updateTrackFeature(trackFeature, options = {}) { method remove (line 582) | remove() { FILE: app/javascript/maps_maplibre/layers/visits_layer.js class VisitsLayer (line 7) | class VisitsLayer extends BaseLayer { method constructor (line 8) | constructor(map, options = {}) { method getSourceConfig (line 12) | getSourceConfig() { method getLayerConfigs (line 22) | getLayerConfigs() { method getLayerIds (line 64) | getLayerIds() { FILE: app/javascript/maps_maplibre/managers/replay_manager.js class ReplayManager (line 5) | class ReplayManager { method constructor (line 6) | constructor(options = {}) { method setPoints (line 23) | setPoints(points) { method _parseTimestamp (line 36) | _parseTimestamp(timestamp) { method groupPointsByDay (line 60) | groupPointsByDay() { method buildMinuteIndex (line 94) | buildMinuteIndex() { method getDataRanges (line 126) | getDataRanges() { method getDataDensity (line 154) | getDataDensity(segments = 48) { method hasDataAtMinute (line 175) | hasDataAtMinute(minute) { method getCurrentDay (line 183) | getCurrentDay() { method getCurrentDayDisplay (line 192) | getCurrentDayDisplay() { method getPointsAtMinute (line 211) | getPointsAtMinute(minute) { method findNearestMinuteWithPoints (line 220) | findNearestMinuteWithPoints(minute) { method getPointAtPosition (line 250) | getPointAtPosition(minute) { method getPointCountAtMinute (line 263) | getPointCountAtMinute(minute) { method pinPoint (line 271) | pinPoint(point) { method unpinPoint (line 279) | unpinPoint() { method isPinned (line 289) | isPinned() { method prevDay (line 297) | prevDay() { method nextDay (line 312) | nextDay() { method canGoPrev (line 327) | canGoPrev() { method canGoNext (line 335) | canGoNext() { method cyclePrev (line 342) | cyclePrev() { method cycleNext (line 350) | cycleNext(minute) { method resetCycle (line 360) | resetCycle() { method getDayCount (line 368) | getDayCount() { method hasData (line 376) | hasData() { method getCurrentDayPointCount (line 384) | getCurrentDayPointCount() { method formatMinuteToTime (line 395) | static formatMinuteToTime(minute) { method findTransportationEmoji (line 407) | static findTransportationEmoji(point, tracksGeoJSON) { method _getTimestampStatic (line 462) | static _getTimestampStatic(point) { method _parseTimestampStatic (line 479) | static _parseTimestampStatic(timestamp) { method _getTimestamp (line 507) | _getTimestamp(point) { method _formatDayKey (line 523) | _formatDayKey(date) { method getCoordinates (line 535) | getCoordinates(point) { FILE: app/javascript/maps_maplibre/services/api_client.js class ApiClient (line 5) | class ApiClient { method constructor (line 6) | constructor(apiKey) { method fetchPoints (line 16) | async fetchPoints({ start_at, end_at, page = 1, per_page = 1000 }) { method fetchAllPoints (line 57) | async fetchAllPoints({ method fetchVisitsPage (line 171) | async fetchVisitsPage({ start_at, end_at, page = 1, per_page = 500 }) { method fetchVisits (line 201) | async fetchVisits({ start_at, end_at, onProgress = null }) { method fetchPlacesPage (line 236) | async fetchPlacesPage({ tag_ids = [], page = 1, per_page = 500 } = {}) { method fetchPlaces (line 272) | async fetchPlaces({ tag_ids = [], onProgress = null } = {}) { method fetchPhotos (line 305) | async fetchPhotos({ start_at, end_at }) { method fetchAreas (line 329) | async fetchAreas() { method fetchArea (line 345) | async fetchArea(areaId) { method fetchTracksPage (line 362) | async fetchTracksPage({ start_at, end_at, page = 1, per_page = 500 }) { method fetchTracks (line 396) | async fetchTracks({ method fetchTrackWithSegments (line 483) | async fetchTrackWithSegments(trackId) { method createArea (line 504) | async createArea(area) { method deleteArea (line 522) | async deleteArea(areaId) { method fetchPointsInArea (line 540) | async fetchPointsInArea({ method fetchVisitsInArea (line 574) | async fetchVisitsInArea({ method bulkDeletePoints (line 608) | async bulkDeletePoints(pointIds) { method updateVisitStatus (line 628) | async updateVisitStatus(visitId, status) { method mergeVisits (line 647) | async mergeVisits(visitIds) { method bulkUpdateVisits (line 667) | async bulkUpdateVisits(visitIds, status) { method fetchTrackPointsPage (line 687) | async fetchTrackPointsPage(trackId, { page = 1, per_page = 1000 } = {}) { method fetchTrackPoints (line 717) | async fetchTrackPoints(trackId, { per_page = 1000, maxConcurrent = 3 }... method fetchTimeline (line 756) | async fetchTimeline({ start_at, end_at }) { method getHeaders (line 770) | getHeaders() { FILE: app/javascript/maps_maplibre/services/location_search_service.js class LocationSearchService (line 6) | class LocationSearchService { method constructor (line 7) | constructor(apiKey) { method fetchSuggestions (line 20) | async fetchSuggestions(query) { method searchVisits (line 66) | async searchVisits({ lat, lon, name, address = "" }) { method createVisit (line 97) | async createVisit(visitData) { FILE: app/javascript/maps_maplibre/utils/cleanup_helper.js class CleanupHelper (line 5) | class CleanupHelper { method constructor (line 6) | constructor() { method addEventListener (line 13) | addEventListener(target, event, handler, options) { method setInterval (line 18) | setInterval(callback, delay) { method setTimeout (line 24) | setTimeout(callback, delay) { method addObserver (line 30) | addObserver(observer) { method cleanup (line 34) | cleanup() { FILE: app/javascript/maps_maplibre/utils/fps_monitor.js class FPSMonitor (line 5) | class FPSMonitor { method constructor (line 6) | constructor(sampleSize = 60) { method start (line 14) | start() { method stop (line 20) | stop() { method getFPS (line 28) | getFPS() { FILE: app/javascript/maps_maplibre/utils/geojson_transformers.js function pointsToGeoJSON (line 6) | function pointsToGeoJSON(points) { function formatTimestamp (line 34) | function formatTimestamp(timestamp, timezone = "UTC") { function formatTimeOnly (line 66) | function formatTimeOnly(timestamp, timezone = "UTC") { function escapeHtml (line 93) | function escapeHtml(value) { FILE: app/javascript/maps_maplibre/utils/geometry.js function calculateDistance (line 7) | function calculateDistance(point1, point2) { function createCircle (line 33) | function createCircle(center, radiusInMeters, points = 64) { function createRectangle (line 57) | function createRectangle(bounds) { FILE: app/javascript/maps_maplibre/utils/layer_gate.js constant PREVIEW_SECONDS (line 12) | const PREVIEW_SECONDS = 20 function isGatedPlan (line 21) | function isGatedPlan(userPlan) { function gatedToggle (line 36) | function gatedToggle({ function startPreview (line 60) | async function startPreview({ layerName, toggle, showFn, hideFn, upgrade... function cancelPreview (line 105) | function cancelPreview(layerName) { function cancelAllPreviews (line 121) | function cancelAllPreviews() { FILE: app/javascript/maps_maplibre/utils/lazy_loader.js class LazyLoader (line 5) | class LazyLoader { method constructor (line 6) | constructor() { method loadLayer (line 16) | async loadLayer(name) { method #load (line 42) | async #load(name) { method #getClassName (line 57) | #getClassName(name) { method preload (line 66) | async preload(names) { method clear (line 70) | clear() { FILE: app/javascript/maps_maplibre/utils/performance_monitor.js class PerformanceMonitor (line 5) | class PerformanceMonitor { method constructor (line 6) | constructor() { method mark (line 15) | mark(name) { method measure (line 24) | measure(name) { method getReport (line 47) | getReport() { method getMemoryUsage (line 77) | getMemoryUsage() { method logReport (line 90) | logReport() { method clear (line 104) | clear() { FILE: app/javascript/maps_maplibre/utils/popup_theme.js function getCurrentTheme (line 10) | function getCurrentTheme() { function getThemeColors (line 25) | function getThemeColors(theme = getCurrentTheme()) { function getPopupBaseStyles (line 80) | function getPopupBaseStyles(theme = getCurrentTheme()) { function getPopupClass (line 96) | function getPopupClass(baseClass, theme = getCurrentTheme()) { function onThemeChange (line 105) | function onThemeChange(callback) { FILE: app/javascript/maps_maplibre/utils/progressive_loader.js class ProgressiveLoader (line 5) | class ProgressiveLoader { method constructor (line 6) | constructor(options = {}) { method load (line 18) | async load(fetchFn, options = {}) { method cancel (line 96) | cancel() { FILE: app/javascript/maps_maplibre/utils/route_segmenter.js class RouteSegmenter (line 5) | class RouteSegmenter { method haversineDistance (line 14) | static haversineDistance(lat1, lon1, lat2, lon2) { method getInterpolatedLat (line 38) | static getInterpolatedLat(lat1, lon1, lat2, lon2, interpLon) { method findIDLCrossings (line 79) | static findIDLCrossings(coords) { method unwrapCoordinates (line 104) | static unwrapCoordinates(segment) { method calculateSegmentDistance (line 152) | static calculateSegmentDistance(segment) { method splitIntoSegments (line 173) | static splitIntoSegments(points, options) { method segmentToFeature (line 217) | static segmentToFeature(segment) { method pointsToRoutes (line 256) | static pointsToRoutes(points, options = {}) { FILE: app/javascript/maps_maplibre/utils/search_manager.js class SearchManager (line 8) | class SearchManager { method constructor (line 9) | constructor(map, apiKey) { method initialize (line 25) | initialize(searchInput, resultsContainer) { method attachEventListeners (line 40) | attachEventListeners() { method handleSearchInput (line 82) | handleSearchInput(query) { method displayResults (line 106) | displayResults(suggestions) { method createResultItem (line 127) | createResultItem(suggestion) { method handleResultClick (line 159) | async handleResultClick(location) { method addSearchMarker (line 203) | addSearchMarker(lon, lat) { method dispatchSearchEvent (line 238) | dispatchSearchEvent(location) { method showLoading (line 249) | showLoading() { method showNoResults (line 263) | showNoResults() { method showError (line 276) | showError(message) { method showVisitsLoading (line 289) | showVisitsLoading(locationName) { method displayVisitsResults (line 307) | displayVisitsResults(visitsData, location) { method buildLocationVisitsHtml (line 348) | buildLocationVisitsHtml(location, index) { method groupVisitsByYear (line 426) | groupVisitsByYear(visits) { method attachYearToggleListeners (line 441) | attachYearToggleListeners() { method handleVisitClick (line 478) | handleVisitClick(locationIndex, visitIndex) { method openCreateVisitModal (line 516) | openCreateVisitModal(visitData) { method submitCreateVisit (line 604) | async submitCreateVisit(form, modal) { method showSuccessNotification (line 663) | showSuccessNotification(message) { method formatDateTimeForInput (line 683) | formatDateTimeForInput(dateString) { method formatDateShort (line 698) | formatDateShort(dateString) { method formatDateTime (line 712) | formatDateTime(dateString) { method escapeHtml (line 728) | escapeHtml(str) { method clearResults (line 738) | clearResults() { method clearMarker (line 748) | clearMarker() { method destroy (line 758) | destroy() { FILE: app/javascript/maps_maplibre/utils/settings_manager.js constant DEFAULT_SETTINGS (line 6) | const DEFAULT_SETTINGS = { constant LAYER_NAME_MAP (line 38) | const LAYER_NAME_MAP = { constant BACKEND_SETTINGS_MAP (line 52) | const BACKEND_SETTINGS_MAP = { constant TRANSPORTATION_THRESHOLD_MAP (line 73) | const TRANSPORTATION_THRESHOLD_MAP = { constant TRANSPORTATION_EXPERT_THRESHOLD_MAP (line 80) | const TRANSPORTATION_EXPERT_THRESHOLD_MAP = { class SettingsManager (line 90) | class SettingsManager { method initialize (line 98) | static initialize(apiKey) { method getSettings (line 108) | static getSettings() { method _expandLayerSettings (line 125) | static _expandLayerSettings(settings) { method _collapseLayerSettings (line 140) | static _collapseLayerSettings(settings) { method _convertTransportationThresholds (line 159) | static _convertTransportationThresholds( method _parseIntOr (line 183) | static _parseIntOr(value, fallback) { method _parseFloatOr (line 188) | static _parseFloatOr(value, fallback) { method loadFromBackend (line 197) | static async loadFromBackend() { method updateCache (line 311) | static updateCache(settings) { method saveToBackend (line 320) | static async saveToBackend(settings) { method getSetting (line 405) | static getSetting(key) { method updateSetting (line 415) | static async updateSetting(key, value) { method resetToDefaults (line 433) | static async resetToDefaults() { method sync (line 450) | static async sync() { FILE: app/javascript/maps_maplibre/utils/speed_colors.js function colorFormatEncode (line 20) | function colorFormatEncode(arr) { function colorFormatDecode (line 29) | function colorFormatDecode(str) { function hexToRGB (line 41) | function hexToRGB(hex) { function calculateSpeed (line 54) | function calculateSpeed(point1, point2) { function haversineDistance (line 87) | function haversineDistance(lat1, lon1, lat2, lon2) { function getSpeedColor (line 108) | function getSpeedColor(speedKmh, useSpeedColors, speedColorScale) { function applySpeedColors (line 160) | function applySpeedColors(routesGeoJSON, points, speedColorScale) { FILE: app/javascript/maps_maplibre/utils/style_manager.js constant TILE_SOURCE_URL (line 6) | const TILE_SOURCE_URL = "https://tyles.dwri.xyz/planet/{z}/{x}/{y}.mvt" constant MAP_STYLES (line 14) | const MAP_STYLES = { function loadStyleFile (line 27) | async function loadStyleFile(styleName) { function getMapStyle (line 49) | async function getMapStyle(styleName = "light") { function getAvailableStyles (line 86) | function getAvailableStyles() { function getStyleDisplayName (line 95) | function getStyleDisplayName(styleName) { function preloadAllStyles (line 113) | async function preloadAllStyles() { FILE: app/javascript/maps_maplibre/utils/websocket_manager.js class WebSocketManager (line 5) | class WebSocketManager { method constructor (line 6) | constructor(options = {}) { method connect (line 21) | connect(subscription) { method attemptReconnect (line 41) | attemptReconnect() { method disconnect (line 65) | disconnect() { method send (line 76) | send(action, data = {}) { FILE: app/javascript/posthog.js function g (line 8) | function g(t, e) { FILE: app/jobs/app_version_checking_job.rb class AppVersionCheckingJob (line 3) | class AppVersionCheckingJob < ApplicationJob method perform (line 7) | def perform FILE: app/jobs/application_job.rb class ApplicationJob (line 3) | class ApplicationJob < ActiveJob::Base method find_user_or_skip (line 15) | def find_user_or_skip(user_id) FILE: app/jobs/area_visits_calculating_job.rb class AreaVisitsCalculatingJob (line 3) | class AreaVisitsCalculatingJob < ApplicationJob method perform (line 9) | def perform(user_id) FILE: app/jobs/area_visits_calculation_scheduling_job.rb class AreaVisitsCalculationSchedulingJob (line 3) | class AreaVisitsCalculationSchedulingJob < ApplicationJob method perform (line 7) | def perform FILE: app/jobs/bulk_stats_calculating_job.rb class BulkStatsCalculatingJob (line 3) | class BulkStatsCalculatingJob < ApplicationJob method perform (line 6) | def perform FILE: app/jobs/bulk_visits_suggesting_job.rb class BulkVisitsSuggestingJob (line 5) | class BulkVisitsSuggestingJob < ApplicationJob method perform (line 10) | def perform(start_at: 1.day.ago.beginning_of_day, end_at: 1.day.ago.en... method schedule_chunked_jobs (line 29) | def schedule_chunked_jobs(user, time_chunks) FILE: app/jobs/cache/cleaning_job.rb class Cache::CleaningJob (line 3) | class Cache::CleaningJob < ApplicationJob method perform (line 6) | def perform FILE: app/jobs/cache/preheating_job.rb class Cache::PreheatingJob (line 3) | class Cache::PreheatingJob < ApplicationJob method perform (line 6) | def perform FILE: app/jobs/concerns/user_timezone.rb type UserTimezone (line 3) | module UserTimezone function with_user_timezone (line 8) | def with_user_timezone(user, &block) FILE: app/jobs/data_migrations/backfill_country_name_job.rb class DataMigrations::BackfillCountryNameJob (line 3) | class DataMigrations::BackfillCountryNameJob < ApplicationJob method perform (line 6) | def perform(batch_size: 1000) method country_name (line 28) | def country_name(point) FILE: app/jobs/data_migrations/backfill_motion_data_job.rb class DataMigrations::BackfillMotionDataJob (line 3) | class DataMigrations::BackfillMotionDataJob < ApplicationJob method perform (line 8) | def perform(batch_size: BATCH_SIZE) method build_update (line 30) | def build_update(point) FILE: app/jobs/data_migrations/backfill_onboarding_completed_job.rb class DataMigrations::BackfillOnboardingCompletedJob (line 3) | class DataMigrations::BackfillOnboardingCompletedJob < ApplicationJob method perform (line 6) | def perform FILE: app/jobs/data_migrations/fix_route_opacity_job.rb class DataMigrations::FixRouteOpacityJob (line 3) | class DataMigrations::FixRouteOpacityJob < ApplicationJob method perform (line 6) | def perform FILE: app/jobs/data_migrations/migrate_places_lonlat_job.rb class DataMigrations::MigratePlacesLonlatJob (line 3) | class DataMigrations::MigratePlacesLonlatJob < ApplicationJob method perform (line 6) | def perform(user_id) FILE: app/jobs/data_migrations/migrate_points_latlon_job.rb class DataMigrations::MigratePointsLatlonJob (line 3) | class DataMigrations::MigratePointsLatlonJob < ApplicationJob method perform (line 6) | def perform(user_id) FILE: app/jobs/data_migrations/prefill_points_counter_cache_job.rb class DataMigrations::PrefillPointsCounterCacheJob (line 3) | class DataMigrations::PrefillPointsCounterCacheJob < ApplicationJob method perform (line 6) | def perform(user_id = nil) method prefill_counter_for_user (line 18) | def prefill_counter_for_user(user_id) FILE: app/jobs/data_migrations/set_points_country_ids_job.rb class DataMigrations::SetPointsCountryIdsJob (line 3) | class DataMigrations::SetPointsCountryIdsJob < ApplicationJob method perform (line 6) | def perform(point_id) FILE: app/jobs/data_migrations/set_reverse_geocoded_at_for_points_job.rb class DataMigrations::SetReverseGeocodedAtForPointsJob (line 3) | class DataMigrations::SetReverseGeocodedAtForPointsJob < ApplicationJob method perform (line 6) | def perform FILE: app/jobs/data_migrations/start_settings_points_country_ids_job.rb class DataMigrations::StartSettingsPointsCountryIdsJob (line 3) | class DataMigrations::StartSettingsPointsCountryIdsJob < ApplicationJob method perform (line 6) | def perform FILE: app/jobs/enqueue_background_job.rb class EnqueueBackgroundJob (line 3) | class EnqueueBackgroundJob < ApplicationJob method perform (line 6) | def perform(job_name, user_id) FILE: app/jobs/export_job.rb class ExportJob (line 3) | class ExportJob < ApplicationJob method perform (line 7) | def perform(export_id) FILE: app/jobs/families/expire_location_requests_job.rb class Families::ExpireLocationRequestsJob (line 3) | class Families::ExpireLocationRequestsJob < ApplicationJob method perform (line 6) | def perform FILE: app/jobs/family/invitations/cleanup_job.rb class Family::Invitations::CleanupJob (line 3) | class Family::Invitations::CleanupJob < ApplicationJob method perform (line 6) | def perform FILE: app/jobs/family/invitations/sending_job.rb class Family::Invitations::SendingJob (line 3) | class Family::Invitations::SendingJob < ApplicationJob method perform (line 6) | def perform(invitation_id) FILE: app/jobs/import/google_takeout_job.rb class Import::GoogleTakeoutJob (line 3) | class Import::GoogleTakeoutJob < ApplicationJob method perform (line 7) | def perform(import_id, locations, current_index) FILE: app/jobs/import/immich_geodata_job.rb class Import::ImmichGeodataJob (line 3) | class Import::ImmichGeodataJob < ApplicationJob method perform (line 6) | def perform(user_id) FILE: app/jobs/import/photoprism_geodata_job.rb class Import::PhotoprismGeodataJob (line 3) | class Import::PhotoprismGeodataJob < ApplicationJob method perform (line 7) | def perform(user_id) FILE: app/jobs/import/process_job.rb class Import::ProcessJob (line 3) | class Import::ProcessJob < ApplicationJob method perform (line 6) | def perform(import_id) FILE: app/jobs/import/update_points_count_job.rb class Import::UpdatePointsCountJob (line 3) | class Import::UpdatePointsCountJob < ApplicationJob method perform (line 6) | def perform(import_id) FILE: app/jobs/import/watcher_job.rb class Import::WatcherJob (line 3) | class Import::WatcherJob < ApplicationJob method perform (line 7) | def perform FILE: app/jobs/imports/destroy_job.rb class Imports::DestroyJob (line 3) | class Imports::DestroyJob < ApplicationJob method perform (line 6) | def perform(import_id) method broadcast_status_update (line 22) | def broadcast_status_update(import) method broadcast_deletion_complete (line 35) | def broadcast_deletion_complete(import) FILE: app/jobs/lite/archival_warning_job.rb class Lite::ArchivalWarningJob (line 3) | class Lite::ArchivalWarningJob < ApplicationJob method perform (line 14) | def perform method check_thresholds (line 24) | def check_thresholds(user) method notify_approaching (line 39) | def notify_approaching(user) method notify_email (line 49) | def notify_email(user) method notify_archived (line 53) | def notify_archived(user) method mark_warning_sent (line 64) | def mark_warning_sent(user, key) FILE: app/jobs/place_visits_calculating_job.rb class PlaceVisitsCalculatingJob (line 3) | class PlaceVisitsCalculatingJob < ApplicationJob method perform (line 7) | def perform(user_id) FILE: app/jobs/places/bulk_name_fetching_job.rb class Places::BulkNameFetchingJob (line 3) | class Places::BulkNameFetchingJob < ApplicationJob method perform (line 6) | def perform FILE: app/jobs/places/name_fetching_job.rb class Places::NameFetchingJob (line 3) | class Places::NameFetchingJob < ApplicationJob method perform (line 6) | def perform(place_id) FILE: app/jobs/points/create_job.rb class Points::CreateJob (line 3) | class Points::CreateJob < ApplicationJob method perform (line 6) | def perform(params, user_id) FILE: app/jobs/points/nightly_reverse_geocoding_job.rb class Points::NightlyReverseGeocodingJob (line 3) | class Points::NightlyReverseGeocodingJob < ApplicationJob method perform (line 6) | def perform FILE: app/jobs/points/raw_data/archive_job.rb type Points (line 3) | module Points type RawData (line 4) | module RawData class ArchiveJob (line 5) | class ArchiveJob < ApplicationJob method perform (line 8) | def perform FILE: app/jobs/points/raw_data/re_archive_month_job.rb type Points (line 3) | module Points type RawData (line 4) | module RawData class ReArchiveMonthJob (line 5) | class ReArchiveMonthJob < ApplicationJob method perform (line 8) | def perform(user_id, year, month) FILE: app/jobs/reverse_geocoding_job.rb class ReverseGeocodingJob (line 3) | class ReverseGeocodingJob < ApplicationJob method perform (line 6) | def perform(klass, id) method data_fetcher (line 16) | def data_fetcher(klass, id) method rate_limit_for_photon_api (line 20) | def rate_limit_for_photon_api FILE: app/jobs/stale_jobs_recovery_job.rb class StaleJobsRecoveryJob (line 3) | class StaleJobsRecoveryJob < ApplicationJob method perform (line 10) | def perform method recover_stale_exports (line 17) | def recover_stale_exports method recover_stale_imports (line 32) | def recover_stale_imports FILE: app/jobs/stats/calculating_job.rb class Stats::CalculatingJob (line 3) | class Stats::CalculatingJob < ApplicationJob method perform (line 6) | def perform(user_id, year, month) method create_stats_update_failed_notification (line 14) | def create_stats_update_failed_notification(user_id, error) FILE: app/jobs/tracks/boundary_resolver_job.rb class Tracks::BoundaryResolverJob (line 5) | class Tracks::BoundaryResolverJob < ApplicationJob method perform (line 10) | def perform(user_id, session_id, retry_count = 0) method session_exists_and_ready? (line 30) | def session_exists_and_ready? method resolve_boundary_tracks (line 42) | def resolve_boundary_tracks method finalize_session (line 47) | def finalize_session(_boundary_tracks_resolved) method reschedule_boundary_resolution (line 54) | def reschedule_boundary_resolution method mark_session_failed (line 66) | def mark_session_failed(error_message) FILE: app/jobs/tracks/daily_generation_job.rb class Tracks::DailyGenerationJob (line 19) | class Tracks::DailyGenerationJob < ApplicationJob method perform (line 24) | def perform method process_user_daily_tracks (line 36) | def process_user_daily_tracks(user) method start_timestamp (line 51) | def start_timestamp(user) FILE: app/jobs/tracks/deduplication_job.rb class Tracks::DeduplicationJob (line 5) | class Tracks::DeduplicationJob < ApplicationJob method perform (line 8) | def perform(user_id) FILE: app/jobs/tracks/parallel_generator_job.rb class Tracks::ParallelGeneratorJob (line 5) | class Tracks::ParallelGeneratorJob < ApplicationJob method perform (line 8) | def perform(user_id, start_at: nil, end_at: nil, mode: :bulk, chunk_si... FILE: app/jobs/tracks/realtime_generation_job.rb class Tracks::RealtimeGenerationJob (line 17) | class Tracks::RealtimeGenerationJob < ApplicationJob method perform (line 20) | def perform(user_id) FILE: app/jobs/tracks/recalculate_job.rb class Tracks::RecalculateJob (line 3) | class Tracks::RecalculateJob < ApplicationJob method perform (line 6) | def perform(track_id) FILE: app/jobs/tracks/time_chunk_processor_job.rb class Tracks::TimeChunkProcessorJob (line 5) | class Tracks::TimeChunkProcessorJob < ApplicationJob method perform (line 11) | def perform(user_id, session_id, chunk_data) method session_exists? (line 31) | def session_exists? method process_chunk (line 39) | def process_chunk method load_chunk_points (line 57) | def load_chunk_points method segment_chunk_points (line 63) | def segment_chunk_points(points) method segment_overlaps_chunk_range? (line 77) | def segment_overlaps_chunk_range?(segment) method create_track_from_points_array (line 89) | def create_track_from_points_array(points) method update_session_progress (line 119) | def update_session_progress(tracks_created) method mark_session_failed (line 124) | def mark_session_failed(error_message) method distance_threshold_meters (line 129) | def distance_threshold_meters method time_threshold_minutes (line 133) | def time_threshold_minutes FILE: app/jobs/tracks/transportation_mode_recalculation_job.rb type Tracks (line 3) | module Tracks class TransportationModeRecalculationJob (line 4) | class TransportationModeRecalculationJob < ApplicationJob method perform (line 8) | def perform(user_id) method reprocess_all_tracks (line 21) | def reprocess_all_tracks FILE: app/jobs/transportation_modes/backfill_job.rb type TransportationModes (line 3) | module TransportationModes class BackfillJob (line 13) | class BackfillJob < ApplicationJob method perform (line 18) | def perform(user_id, batch_size: DEFAULT_BATCH_SIZE) method extract_user_thresholds (line 35) | def extract_user_thresholds method tracks_to_process (line 40) | def tracks_to_process method process_track (line 49) | def process_track(track) method create_segments (line 75) | def create_segments(track, segment_data) FILE: app/jobs/transportation_modes/import_backfill_job.rb type TransportationModes (line 3) | module TransportationModes class ImportBackfillJob (line 9) | class ImportBackfillJob < ApplicationJob method perform (line 12) | def perform(import_id) FILE: app/jobs/trips/calculate_all_job.rb class Trips::CalculateAllJob (line 3) | class Trips::CalculateAllJob < ApplicationJob method perform (line 6) | def perform(trip_id, distance_unit = 'km') FILE: app/jobs/trips/calculate_countries_job.rb class Trips::CalculateCountriesJob (line 3) | class Trips::CalculateCountriesJob < ApplicationJob method perform (line 6) | def perform(trip_id, distance_unit) method broadcast_update (line 17) | def broadcast_update(trip, distance_unit) FILE: app/jobs/trips/calculate_distance_job.rb class Trips::CalculateDistanceJob (line 3) | class Trips::CalculateDistanceJob < ApplicationJob method perform (line 6) | def perform(trip_id, distance_unit) method broadcast_update (line 17) | def broadcast_update(trip, distance_unit) FILE: app/jobs/trips/calculate_path_job.rb class Trips::CalculatePathJob (line 3) | class Trips::CalculatePathJob < ApplicationJob method perform (line 6) | def perform(trip_id) method broadcast_update (line 17) | def broadcast_update(trip) FILE: app/jobs/users/destroy_job.rb class Users::DestroyJob (line 3) | class Users::DestroyJob < ApplicationJob method perform (line 8) | def perform(user_id) FILE: app/jobs/users/digests/calculating_job.rb class Users::Digests::CalculatingJob (line 3) | class Users::Digests::CalculatingJob < ApplicationJob method perform (line 6) | def perform(user_id, year) method recalculate_monthly_stats (line 15) | def recalculate_monthly_stats(user_id, year) method create_digest_failed_notification (line 21) | def create_digest_failed_notification(user_id, error) FILE: app/jobs/users/digests/email_sending_job.rb class Users::Digests::EmailSendingJob (line 3) | class Users::Digests::EmailSendingJob < ApplicationJob method perform (line 6) | def perform(user_id, year) method should_send_email? (line 20) | def should_send_email?(user, digest) FILE: app/jobs/users/digests/year_end_scheduling_job.rb class Users::Digests::YearEndSchedulingJob (line 3) | class Users::Digests::YearEndSchedulingJob < ApplicationJob method perform (line 6) | def perform FILE: app/jobs/users/export_data_job.rb class Users::ExportDataJob (line 3) | class Users::ExportDataJob < ApplicationJob method perform (line 8) | def perform(user_id) FILE: app/jobs/users/import_data_job.rb class Users::ImportDataJob (line 3) | class Users::ImportDataJob < ApplicationJob method perform (line 8) | def perform(import_id) method handle_import_failure (line 35) | def handle_import_failure(import, user, error) method cleanup_archive (line 43) | def cleanup_archive(archive_path) method download_import_archive (line 50) | def download_import_archive(import) method create_import_failed_notification (line 66) | def create_import_failed_notification(user, error) FILE: app/jobs/users/mailer_sending_job.rb class Users::MailerSendingJob (line 3) | class Users::MailerSendingJob < ApplicationJob method perform (line 6) | def perform(user_id, email_type, **options) method should_skip_email? (line 18) | def should_skip_email?(user, email_type) FILE: app/jobs/users/recalculate_data_job.rb class Users::RecalculateDataJob (line 6) | class Users::RecalculateDataJob < ApplicationJob method perform (line 11) | def perform(user_id, year: nil) method determine_years (line 39) | def determine_years method recalculate_stats (line 47) | def recalculate_stats(years_to_process) method recalculate_tracks (line 57) | def recalculate_tracks(years_to_process) method recalculate_digests (line 73) | def recalculate_digests(years_to_process) method create_success_notification (line 81) | def create_success_notification(years_to_process) method create_failure_notification (line 92) | def create_failure_notification(error) FILE: app/jobs/users/trial_webhook_job.rb class Users::TrialWebhookJob (line 3) | class Users::TrialWebhookJob < ApplicationJob method perform (line 6) | def perform(user_id) FILE: app/jobs/visit_suggesting_job.rb class VisitSuggestingJob (line 3) | class VisitSuggestingJob < ApplicationJob method perform (line 10) | def perform(user_id:, start_at:, end_at:) method parse_date (line 29) | def parse_date(date) FILE: app/mailers/application_mailer.rb class ApplicationMailer (line 3) | class ApplicationMailer < ActionMailer::Base FILE: app/mailers/family_mailer.rb class FamilyMailer (line 3) | class FamilyMailer < ApplicationMailer method invitation (line 4) | def invitation(invitation) method location_request (line 16) | def location_request(request) method member_joined (line 28) | def member_joined(family, user) FILE: app/mailers/users/digests_mailer.rb class Users::DigestsMailer (line 3) | class Users::DigestsMailer < ApplicationMailer method year_end_digest (line 7) | def year_end_digest FILE: app/mailers/users_mailer.rb class UsersMailer (line 3) | class UsersMailer < ApplicationMailer method welcome (line 4) | def welcome method explore_features (line 11) | def explore_features method trial_expires_soon (line 18) | def trial_expires_soon method trial_expired (line 25) | def trial_expired method post_trial_reminder_early (line 32) | def post_trial_reminder_early method post_trial_reminder_late (line 39) | def post_trial_reminder_late method archival_approaching (line 46) | def archival_approaching FILE: app/models/application_record.rb class ApplicationRecord (line 3) | class ApplicationRecord < ActiveRecord::Base FILE: app/models/area.rb class Area (line 3) | class Area < ApplicationRecord method center (line 14) | def center = [latitude.to_f, longitude.to_f] FILE: app/models/concerns/archivable.rb type Archivable (line 3) | module Archivable function raw_data_with_archive (line 20) | def raw_data_with_archive function restore_raw_data! (line 27) | def restore_raw_data!(value) function fetch_archived_raw_data (line 37) | def fetch_archived_raw_data function check_temporary_restore_cache (line 47) | def check_temporary_restore_cache function fetch_from_archive_file (line 55) | def fetch_from_archive_file function handle_archive_fetch_error (line 78) | def handle_archive_fetch_error(error) FILE: app/models/concerns/calculateable.rb type Calculateable (line 3) | module Calculateable function calculate_path (line 6) | def calculate_path function calculate_distance (line 14) | def calculate_distance function recalculate_path! (line 20) | def recalculate_path! function recalculate_distance! (line 25) | def recalculate_distance! function recalculate_path_and_distance! (line 30) | def recalculate_path_and_distance! function path_coordinates (line 38) | def path_coordinates function set_path_attributes (line 42) | def set_path_attributes(updated_path) function calculate_distance_from_coordinates (line 47) | def calculate_distance_from_coordinates function convert_distance_for_storage (line 52) | def convert_distance_for_storage(calculated_distance_meters) function track_model? (line 57) | def track_model? function save_if_changed! (line 61) | def save_if_changed! FILE: app/models/concerns/distance_convertible.rb type DistanceConvertible (line 23) | module DistanceConvertible function distance_in_unit (line 26) | def distance_in_unit(unit) type ClassMethods (line 40) | module ClassMethods function convert_distance (line 41) | def convert_distance(distance_meters, unit) FILE: app/models/concerns/distanceable.rb type Distanceable (line 3) | module Distanceable type ClassMethods (line 6) | module ClassMethods function total_distance (line 7) | def total_distance(points = nil, unit = :km) function calculate_distance_for_array_geocoder (line 16) | def calculate_distance_for_array_geocoder(points, unit = :km) function calculate_distance_for_relation (line 102) | def calculate_distance_for_relation(unit) function calculate_distance_for_array (line 130) | def calculate_distance_for_array(points, unit = :km) function calculate_batch_distances (line 142) | def calculate_batch_distances(points) function distance_to (line 181) | def distance_to(other_point, unit = :km) function distance_to_geocoder (line 202) | def distance_to_geocoder(other_point, unit = :km) function extract_point (line 289) | def extract_point(point) FILE: app/models/concerns/nearable.rb type Nearable (line 3) | module Nearable function near (line 10) | def near(*args) function with_distance (line 32) | def with_distance(*args) function extract_coordinates_and_options (line 54) | def extract_coordinates_and_options(*args) FILE: app/models/concerns/omniauthable.rb type Omniauthable (line 3) | module Omniauthable function from_omniauth (line 7) | def from_omniauth(access_token) function oidc_auto_register_enabled? (line 41) | def oidc_auto_register_enabled? FILE: app/models/concerns/plan_scopable.rb type PlanScopable (line 3) | module PlanScopable function plan_restricted? (line 6) | def plan_restricted? function data_window_start (line 10) | def data_window_start function scoped_points (line 14) | def scoped_points function scoped_tracks (line 20) | def scoped_tracks function scoped_visits (line 26) | def scoped_visits function scoped_stats (line 32) | def scoped_stats FILE: app/models/concerns/point_validation.rb type PointValidation (line 3) | module PointValidation function point_exists? (line 6) | def point_exists?(params, user_id) FILE: app/models/concerns/soft_deletable.rb type SoftDeletable (line 3) | module SoftDeletable type DeviseOverrides (line 11) | module DeviseOverrides function active_for_authentication? (line 12) | def active_for_authentication? function inactive_message (line 16) | def inactive_message function deleted? (line 28) | def deleted? function mark_as_deleted! (line 32) | def mark_as_deleted! function mark_as_deleted_atomically! (line 39) | def mark_as_deleted_atomically! function reload (line 55) | def reload(options = nil) function destroy (line 63) | def destroy FILE: app/models/concerns/taggable.rb type Taggable (line 3) | module Taggable function add_tag (line 27) | def add_tag(tag) function remove_tag (line 31) | def remove_tag(tag) function tag_names (line 35) | def tag_names function tagged_with? (line 39) | def tagged_with?(tag) FILE: app/models/concerns/user_family.rb type UserFamily (line 3) | module UserFamily function in_family? (line 22) | def in_family? function family_owner? (line 26) | def family_owner? function can_delete_account? (line 30) | def can_delete_account? function family_sharing_enabled? (line 37) | def family_sharing_enabled? function update_family_location_sharing! (line 48) | def update_family_location_sharing!(enabled, duration: nil, share_hist... function family_sharing_expires_at (line 87) | def family_sharing_expires_at function family_sharing_duration (line 97) | def family_sharing_duration function family_sharing_started_at (line 101) | def family_sharing_started_at function family_share_history? (line 110) | def family_share_history? function family_history_window (line 114) | def family_history_window function family_history_points (line 121) | def family_history_points(start_at:, end_at:) function latest_location_for_family (line 148) | def latest_location_for_family function validate_history_window (line 171) | def validate_history_window(window) FILE: app/models/country.rb class Country (line 3) | class Country < ApplicationRecord method containing_point (line 8) | def self.containing_point(lon, lat) method names_to_iso_a2 (line 14) | def self.names_to_iso_a2 FILE: app/models/export.rb class Export (line 3) | class Export < ApplicationRecord method process! (line 19) | def process! method migrate_to_new_storage (line 23) | def migrate_to_new_storage method set_processing_started_at (line 34) | def set_processing_started_at method status_changed_to_processing? (line 38) | def status_changed_to_processing? method remove_attached_file (line 42) | def remove_attached_file FILE: app/models/family.rb class Family (line 3) | class Family < ApplicationRecord method can_add_members? (line 13) | def can_add_members? method member_count (line 19) | def member_count method pending_invitations_count (line 23) | def pending_invitations_count method owners (line 27) | def owners method owner (line 32) | def owner method full? (line 36) | def full? method active_invitations (line 42) | def active_invitations method clear_member_cache! (line 46) | def clear_member_cache! FILE: app/models/family/invitation.rb class Family::Invitation (line 3) | class Family::Invitation < ApplicationRecord method expired? (line 25) | def expired? method can_be_accepted? (line 29) | def can_be_accepted? method generate_token (line 35) | def generate_token method set_expiry (line 39) | def set_expiry method clear_family_cache (line 43) | def clear_family_cache FILE: app/models/family/location_request.rb class Family::LocationRequest (line 3) | class Family::LocationRequest < ApplicationRecord method requester_cannot_be_target (line 24) | def requester_cannot_be_target method set_defaults (line 30) | def set_defaults FILE: app/models/family/membership.rb class Family::Membership (line 3) | class Family::Membership < ApplicationRecord method clear_family_cache (line 21) | def clear_family_cache method cleanup_on_departure (line 25) | def cleanup_on_departure FILE: app/models/import.rb class Import (line 3) | class Import < ApplicationRecord method process! (line 30) | def process! method process_user_data_archive! (line 38) | def process_user_data_archive! method reverse_geocoded_points_count (line 42) | def reverse_geocoded_points_count method years_and_months_tracked (line 46) | def years_and_months_tracked method migrate_to_new_storage (line 53) | def migrate_to_new_storage method set_processing_started_at (line 63) | def set_processing_started_at method status_changed_to_processing? (line 67) | def status_changed_to_processing? method remove_attached_file (line 71) | def remove_attached_file method file_size_within_limit (line 75) | def file_size_within_limit method import_count_within_limit (line 83) | def import_count_within_limit method recalculate_stats (line 92) | def recalculate_stats FILE: app/models/notification.rb class Notification (line 3) | class Notification < ApplicationRecord method read? (line 14) | def read? method broadcast_notification (line 20) | def broadcast_notification FILE: app/models/place.rb class Place (line 3) | class Place < ApplicationRecord method lon (line 26) | def lon method lat (line 30) | def lat method osm_id (line 34) | def osm_id method osm_key (line 38) | def osm_key method osm_value (line 42) | def osm_value method osm_type (line 46) | def osm_type method build_lonlat (line 52) | def build_lonlat FILE: app/models/place_visit.rb class PlaceVisit (line 3) | class PlaceVisit < ApplicationRecord FILE: app/models/point.rb class Point (line 3) | class Point < ApplicationRecord method without_raw_data (line 40) | def self.without_raw_data method recorded_at (line 44) | def recorded_at method async_reverse_geocode (line 48) | def async_reverse_geocode method reverse_geocoded? (line 54) | def reverse_geocoded? method lon (line 58) | def lon method lat (line 62) | def lat method found_in_country (line 66) | def found_in_country method country_name (line 70) | def country_name method broadcast_coordinates (line 78) | def broadcast_coordinates method should_broadcast_to_family? (line 98) | def should_broadcast_to_family? method broadcast_to_family (line 106) | def broadcast_to_family method set_country (line 121) | def set_country method recalculate_track (line 126) | def recalculate_track FILE: app/models/points/raw_data_archive.rb type Points (line 3) | module Points class RawDataArchive (line 4) | class RawDataArchive < ApplicationRecord method month_display (line 29) | def month_display method filename (line 33) | def filename method size_mb (line 37) | def size_mb method verified? (line 43) | def verified? method count_mismatch? (line 47) | def count_mismatch? method metadata_contains_expected_and_actual_counts (line 60) | def metadata_contains_expected_and_actual_counts FILE: app/models/stat.rb class Stat (line 3) | class Stat < ApplicationRecord method distance_by_day (line 12) | def distance_by_day method year_distance (line 17) | def self.year_distance(year, user) method points (line 28) | def points method sharing_enabled? (line 35) | def sharing_enabled? method sharing_expired? (line 39) | def sharing_expired? method public_accessible? (line 55) | def public_accessible? method hexagons_available? (line 59) | def hexagons_available? method generate_new_sharing_uuid! (line 65) | def generate_new_sharing_uuid! method enable_sharing! (line 69) | def enable_sharing!(expiration: '1h') method disable_sharing! (line 91) | def disable_sharing! method calculate_data_bounds (line 101) | def calculate_data_bounds method process! (line 130) | def process! method generate_sharing_uuid (line 136) | def generate_sharing_uuid method timespan (line 140) | def timespan method calculate_daily_distances (line 144) | def calculate_daily_distances(monthly_points) method user_timezone (line 148) | def user_timezone FILE: app/models/tag.rb class Tag (line 3) | class Tag < ApplicationRecord method privacy_zone? (line 22) | def privacy_zone? method icon_is_not_ascii_letter (line 28) | def icon_is_not_ascii_letter FILE: app/models/tagging.rb class Tagging (line 3) | class Tagging < ApplicationRecord FILE: app/models/track.rb class Track (line 3) | class Track < ApplicationRecord method last_for_day (line 41) | def self.last_for_day(user, day) method segment_points_in_sql (line 51) | def self.segment_points_in_sql(user_id, start_timestamp, end_timestamp... method get_segments_with_points (line 129) | def self.get_segments_with_points(user_id, start_timestamp, end_timest... method parse_postgres_array (line 154) | def self.parse_postgres_array(pg_array_string) method activity_breakdown (line 161) | def activity_breakdown method update_dominant_mode! (line 165) | def update_dominant_mode! method broadcast_geojson_updated (line 173) | def broadcast_geojson_updated method broadcast_track_created (line 186) | def broadcast_track_created method broadcast_track_updated (line 190) | def broadcast_track_updated method broadcast_track_destroyed (line 194) | def broadcast_track_destroyed method broadcast_track_update (line 198) | def broadcast_track_update(action) FILE: app/models/track_segment.rb class TrackSegment (line 3) | class TrackSegment < ApplicationRecord method end_index_greater_than_or_equal_to_start_index (line 24) | def end_index_greater_than_or_equal_to_start_index FILE: app/models/trip.rb class Trip (line 3) | class Trip < ApplicationRecord method enqueue_calculation_jobs (line 17) | def enqueue_calculation_jobs method points (line 21) | def points method photo_previews (line 25) | def photo_previews method photo_sources (line 29) | def photo_sources method calculate_countries (line 33) | def calculate_countries method photos (line 39) | def photos method select_dominant_orientation (line 43) | def select_dominant_orientation(photos) method started_at_before_ended_at (line 52) | def started_at_before_ended_at FILE: app/models/user.rb class User (line 3) | class User < ApplicationRecord method safe_settings (line 45) | def safe_settings method countries_visited (line 49) | def countries_visited method cities_visited (line 55) | def cities_visited method total_distance (line 61) | def total_distance method total_countries (line 68) | def total_countries method total_cities (line 72) | def total_cities method total_reverse_geocoded_points (line 76) | def total_reverse_geocoded_points method total_reverse_geocoded_points_without_data (line 80) | def total_reverse_geocoded_points_without_data method immich_integration_configured? (line 84) | def immich_integration_configured? method photoprism_integration_configured? (line 88) | def photoprism_integration_configured? method years_tracked (line 92) | def years_tracked method can_subscribe? (line 114) | def can_subscribe? method generate_subscription_token (line 118) | def generate_subscription_token method export_data (line 130) | def export_data method trial_state? (line 134) | def trial_state? method countries_visited_uncached (line 142) | def countries_visited_uncached method cities_visited_uncached (line 161) | def cities_visited_uncached method home_place_coordinates (line 183) | def home_place_coordinates method supporter? (line 194) | def supporter? method supporter_platform (line 198) | def supporter_platform method supporter_info (line 202) | def supporter_info method create_api_key (line 210) | def create_api_key method activate (line 216) | def activate method sanitize_input (line 220) | def sanitize_input method start_trial (line 226) | def start_trial method schedule_welcome_emails (line 233) | def schedule_welcome_emails method schedule_post_trial_emails (line 241) | def schedule_post_trial_emails FILE: app/models/users/digest.rb class Users::Digest (line 3) | class Users::Digest < ApplicationRecord method sharing_enabled? (line 22) | def sharing_enabled? method sharing_expired? (line 26) | def sharing_expired? method public_accessible? (line 42) | def public_accessible? method generate_new_sharing_uuid! (line 46) | def generate_new_sharing_uuid! method enable_sharing! (line 50) | def enable_sharing!(expiration: '24h') method disable_sharing! (line 71) | def disable_sharing! method countries_count (line 81) | def countries_count method cities_count (line 87) | def cities_count method first_time_countries (line 93) | def first_time_countries method first_time_cities (line 97) | def first_time_cities method top_countries_by_time (line 101) | def top_countries_by_time method top_cities_by_time (line 105) | def top_cities_by_time method yoy_distance_change (line 109) | def yoy_distance_change method yoy_countries_change (line 113) | def yoy_countries_change method yoy_cities_change (line 117) | def yoy_cities_change method previous_year (line 121) | def previous_year method total_countries_all_time (line 125) | def total_countries_all_time method total_cities_all_time (line 129) | def total_cities_all_time method total_distance_all_time (line 133) | def total_distance_all_time method daily_distances (line 140) | def daily_distances method active_days_count (line 144) | def active_days_count method days_in_month (line 150) | def days_in_month method weekly_pattern (line 156) | def weekly_pattern method mom_distance_change (line 168) | def mom_distance_change method mom_countries_change (line 172) | def mom_countries_change method mom_cities_change (line 176) | def mom_cities_change method time_of_day_distribution (line 181) | def time_of_day_distribution method seasonality (line 185) | def seasonality method day_of_week_distances (line 189) | def day_of_week_distances method activity_breakdown (line 193) | def activity_breakdown method previous_month_value (line 197) | def previous_month_value method previous_month_year (line 201) | def previous_month_year method month_name (line 205) | def month_name method untracked_days (line 211) | def untracked_days method distance_km (line 216) | def distance_km method distance_comparison_text (line 220) | def distance_comparison_text method generate_sharing_uuid (line 232) | def generate_sharing_uuid method total_tracked_days (line 236) | def total_tracked_days method total_tracked_minutes (line 240) | def total_tracked_minutes FILE: app/models/visit.rb class Visit (line 3) | class Visit < ApplicationRecord method coordinates (line 17) | def coordinates method default_name (line 21) | def default_name method default_radius (line 26) | def default_radius method center (line 38) | def center method center_from_points (line 48) | def center_from_points method async_reverse_geocode (line 58) | def async_reverse_geocode FILE: app/models/visit_draft.rb class VisitDraft (line 3) | class VisitDraft method initialize (line 6) | def initialize(start_time) method add_point (line 12) | def add_point(point) method duration_in_minutes (line 17) | def duration_in_minutes method valid? (line 21) | def valid? FILE: app/policies/application_policy.rb class ApplicationPolicy (line 3) | class ApplicationPolicy method initialize (line 6) | def initialize(user, record) method index? (line 11) | def index? method show? (line 15) | def show? method create? (line 19) | def create? method new? (line 23) | def new? method update? (line 27) | def update? method edit? (line 31) | def edit? method destroy? (line 35) | def destroy? class Scope (line 39) | class Scope method initialize (line 40) | def initialize(user, scope) method resolve (line 45) | def resolve FILE: app/policies/family/invitation_policy.rb class Family::InvitationPolicy (line 3) | class Family::InvitationPolicy < ApplicationPolicy method create? (line 4) | def create? method accept? (line 10) | def accept? method destroy? (line 16) | def destroy? FILE: app/policies/family/membership_policy.rb class Family::MembershipPolicy (line 3) | class Family::MembershipPolicy < ApplicationPolicy method create? (line 4) | def create? method destroy? (line 11) | def destroy? FILE: app/policies/family_policy.rb class FamilyPolicy (line 3) | class FamilyPolicy < ApplicationPolicy method show? (line 4) | def show? method create? (line 8) | def create? method update? (line 17) | def update? method destroy? (line 21) | def destroy? method leave? (line 25) | def leave? method invite? (line 29) | def invite? method manage_invitations? (line 33) | def manage_invitations? method update_location_sharing? (line 37) | def update_location_sharing? method family_owner_with_members? (line 43) | def family_owner_with_members? FILE: app/policies/import_policy.rb class ImportPolicy (line 3) | class ImportPolicy < ApplicationPolicy method index? (line 5) | def index? method show? (line 10) | def show? method new? (line 15) | def new? method create? (line 19) | def create? method edit? (line 24) | def edit? method update? (line 28) | def update? method destroy? (line 33) | def destroy? class Scope (line 37) | class Scope < ApplicationPolicy::Scope method resolve (line 38) | def resolve FILE: app/policies/insights_policy.rb class InsightsPolicy (line 3) | class InsightsPolicy < ApplicationPolicy method index? (line 4) | def index? method details? (line 8) | def details? FILE: app/policies/place_policy.rb class PlacePolicy (line 3) | class PlacePolicy < ApplicationPolicy class Scope (line 4) | class Scope < Scope method resolve (line 5) | def resolve method index? (line 10) | def index? method show? (line 14) | def show? method create? (line 18) | def create? method new? (line 22) | def new? method update? (line 26) | def update? method edit? (line 30) | def edit? method destroy? (line 34) | def destroy? method nearby? (line 38) | def nearby? method owner? (line 44) | def owner? FILE: app/policies/tag_policy.rb class TagPolicy (line 3) | class TagPolicy < ApplicationPolicy class Scope (line 4) | class Scope < Scope method resolve (line 5) | def resolve method index? (line 10) | def index? method show? (line 14) | def show? method create? (line 18) | def create? method new? (line 22) | def new? method update? (line 26) | def update? method edit? (line 30) | def edit? method destroy? (line 34) | def destroy? method owner? (line 40) | def owner? FILE: app/queries/stats/daily_distance_query.rb class Stats::DailyDistanceQuery (line 3) | class Stats::DailyDistanceQuery method initialize (line 4) | def initialize(monthly_points, timespan, timezone = nil) method call (line 10) | def call method daily_distances (line 21) | def daily_distances(monthly_points) method distance_by_day_map (line 57) | def distance_by_day_map(daily_distances) method convert_to_daily_distances (line 63) | def convert_to_daily_distances(distance_by_day_map) method validate_timezone (line 72) | def validate_timezone(timezone) FILE: app/queries/stats/time_of_day_query.rb type Stats (line 3) | module Stats class TimeOfDayQuery (line 4) | class TimeOfDayQuery method initialize (line 12) | def initialize(user, year, month = nil, timezone = 'UTC') method call (line 19) | def call method execute_query (line 28) | def execute_query method start_timestamp (line 55) | def start_timestamp method end_timestamp (line 63) | def end_timestamp method normalize_to_percentages (line 71) | def normalize_to_percentages(result) method empty_result (line 81) | def empty_result method validate_timezone (line 85) | def validate_timezone(timezone_name) FILE: app/queries/stats_query.rb class StatsQuery (line 3) | class StatsQuery method initialize (line 4) | def initialize(user) method points_stats (line 8) | def points_stats method cached_points_geocoded_stats (line 20) | def cached_points_geocoded_stats FILE: app/queries/tracks/index_query.rb class Tracks::IndexQuery (line 3) | class Tracks::IndexQuery method initialize (line 6) | def initialize(user:, params: {}) method call (line 11) | def call method pagination_headers (line 22) | def pagination_headers(paginated_relation) method normalize_params (line 34) | def normalize_params(params) method page_param (line 44) | def page_param method per_page_param (line 49) | def per_page_param method apply_date_range (line 54) | def apply_date_range(scope) method parse_timestamp (line 64) | def parse_timestamp(value) FILE: app/serializers/api/digest_detail_serializer.rb class Api::DigestDetailSerializer (line 3) | class Api::DigestDetailSerializer method initialize (line 4) | def initialize(digest, distance_unit:) method call (line 9) | def call method serialize_monthly_distances (line 29) | def serialize_monthly_distances method serialize_distance (line 38) | def serialize_distance method serialize_toponyms (line 48) | def serialize_toponyms method serialize_year_over_year (line 63) | def serialize_year_over_year method serialize_all_time_stats (line 74) | def serialize_all_time_stats method serialize_travel_patterns (line 83) | def serialize_travel_patterns FILE: app/serializers/api/digest_list_serializer.rb class Api::DigestListSerializer (line 3) | class Api::DigestListSerializer method initialize (line 4) | def initialize(digests:, available_years:) method call (line 9) | def call method serialize_digest (line 20) | def serialize_digest(digest) FILE: app/serializers/api/insights_details_serializer.rb class Api::InsightsDetailsSerializer (line 3) | class Api::InsightsDetailsSerializer method initialize (line 4) | def initialize(year:, comparison:, travel_patterns:) method call (line 10) | def call method serialize_comparison (line 22) | def serialize_comparison method serialize_travel_patterns (line 34) | def serialize_travel_patterns FILE: app/serializers/api/insights_overview_serializer.rb class Api::InsightsOverviewSerializer (line 3) | class Api::InsightsOverviewSerializer method initialize (line 4) | def initialize(year:, available_years:, totals:, heatmap:, distance_un... method call (line 12) | def call method serialize_totals (line 25) | def serialize_totals method serialize_heatmap (line 37) | def serialize_heatmap FILE: app/serializers/api/location_search_result_serializer.rb class Api::LocationSearchResultSerializer (line 3) | class Api::LocationSearchResultSerializer method initialize (line 4) | def initialize(search_result) method call (line 8) | def call method serialize_locations (line 19) | def serialize_locations(locations) method serialize_visits (line 33) | def serialize_visits(visits) FILE: app/serializers/api/photo_serializer.rb class Api::PhotoSerializer (line 3) | class Api::PhotoSerializer method initialize (line 4) | def initialize(photo, source) method call (line 9) | def call method id (line 29) | def id method latitude (line 33) | def latitude method longitude (line 37) | def longitude method local_date_time (line 41) | def local_date_time method original_file_name (line 45) | def original_file_name method city (line 49) | def city method state (line 53) | def state method country (line 57) | def country method type (line 61) | def type method orientation (line 65) | def orientation FILE: app/serializers/api/place_serializer.rb class Api::PlaceSerializer (line 3) | class Api::PlaceSerializer method initialize (line 4) | def initialize(place) method call (line 8) | def call FILE: app/serializers/api/point_serializer.rb class Api::PointSerializer (line 3) | class Api::PointSerializer method initialize (line 9) | def initialize(point) method call (line 13) | def call FILE: app/serializers/api/slim_point_serializer.rb class Api::SlimPointSerializer (line 3) | class Api::SlimPointSerializer method initialize (line 4) | def initialize(point) method call (line 8) | def call FILE: app/serializers/api/user_serializer.rb class Api::UserSerializer (line 3) | class Api::UserSerializer method initialize (line 4) | def initialize(user) method call (line 8) | def call method settings (line 28) | def settings method subscription (line 51) | def subscription FILE: app/serializers/api/visit_serializer.rb class Api::VisitSerializer (line 3) | class Api::VisitSerializer method initialize (line 4) | def initialize(visit) method call (line 8) | def call FILE: app/serializers/export_serializer.rb class ExportSerializer (line 3) | class ExportSerializer method initialize (line 6) | def initialize(points, user_email) method call (line 11) | def call method export_points (line 17) | def export_points method export_point (line 23) | def export_point(point) method battery_status (line 47) | def battery_status(point) method trigger (line 56) | def trigger(point) method connection (line 69) | def connection(point) FILE: app/serializers/exports/point_geojson_serializer.rb class Exports::PointGeojsonSerializer (line 3) | class Exports::PointGeojsonSerializer method initialize (line 6) | def initialize(points_scope) method call (line 10) | def call method write_to (line 24) | def write_to(io) FILE: app/serializers/exports/point_gpx_serializer.rb class Exports::PointGpxSerializer (line 3) | class Exports::PointGpxSerializer method initialize (line 6) | def initialize(points_scope, name) method call (line 11) | def call method write_to (line 25) | def write_to(io) method write_header (line 37) | def write_header(io) method write_footer (line 47) | def write_footer(io) method write_trackpoint (line 55) | def write_trackpoint(io, point) method escape_xml (line 74) | def escape_xml(str) FILE: app/serializers/point_serializer.rb class PointSerializer (line 3) | class PointSerializer method initialize (line 9) | def initialize(point) method call (line 13) | def call FILE: app/serializers/points/geojson_serializer.rb class Points::GeojsonSerializer (line 3) | class Points::GeojsonSerializer method initialize (line 4) | def initialize(points) method call (line 8) | def call FILE: app/serializers/points/gpx_serializer.rb class EnhancedGpxFile (line 4) | class EnhancedGpxFile < GPX::GPXFile method initialize (line 5) | def initialize(name, xml_string) method to_s (line 10) | def to_s class Points::GpxSerializer (line 15) | class Points::GpxSerializer method initialize (line 16) | def initialize(points, name) method call (line 21) | def call method create_base_gpx_file (line 33) | def create_base_gpx_file method add_track_points_to_gpx (line 44) | def add_track_points_to_gpx(gpx_file) method create_track_point (line 53) | def create_track_point(point) method build_track_point_attributes (line 58) | def build_track_point_attributes(point) method enhance_gpx_with_speed_and_course (line 67) | def enhance_gpx_with_speed_and_course(gpx_xml) method add_gpx_namespace (line 72) | def add_gpx_namespace(gpx_xml) method enhance_trackpoints_with_speed_and_course (line 76) | def enhance_trackpoints_with_speed_and_course(xml_string) method enhance_single_trackpoint (line 85) | def enhance_single_trackpoint(trkpt_xml, point) method add_speed_to_trackpoint (line 90) | def add_speed_to_trackpoint(trkpt_xml, point) method add_course_to_trackpoint (line 96) | def add_course_to_trackpoint(trkpt_xml, point) method should_include_speed? (line 103) | def should_include_speed?(point) method should_include_course? (line 107) | def should_include_course?(point) FILE: app/serializers/stats_serializer.rb class StatsSerializer (line 3) | class StatsSerializer method initialize (line 6) | def initialize(user) method call (line 10) | def call method total_distance_km (line 23) | def total_distance_km method reverse_geocoded_points (line 29) | def reverse_geocoded_points method yearly_stats (line 33) | def yearly_stats method stats_distance_km (line 45) | def stats_distance_km(stats) method monthly_distance (line 51) | def monthly_distance(year, stats) method distance_km (line 59) | def distance_km(month, year, stats) FILE: app/serializers/tag_serializer.rb class TagSerializer (line 3) | class TagSerializer method initialize (line 4) | def initialize(tag) method call (line 8) | def call method places (line 23) | def places FILE: app/serializers/track_serializer.rb class TrackSerializer (line 3) | class TrackSerializer method initialize (line 4) | def initialize(track) method call (line 8) | def call FILE: app/serializers/tracks/geojson_serializer.rb class Tracks::GeojsonSerializer (line 3) | class Tracks::GeojsonSerializer method initialize (line 36) | def initialize(tracks, include_segments: false) method call (line 41) | def call method feature_for (line 52) | def feature_for(track) method properties_for (line 60) | def properties_for(track) method base_properties (line 64) | def base_properties(track) method segment_properties (line 76) | def segment_properties(track) method segments_for (line 91) | def segments_for(track) method serialize_segment (line 107) | def serialize_segment(segment, start_time = nil) method segment_identity (line 113) | def segment_identity(segment) method segment_stats (line 123) | def segment_stats(segment) method segment_times (line 132) | def segment_times(segment, start_time) method mode_timeline_for (line 142) | def mode_timeline_for(track) method emoji_for_mode (line 164) | def emoji_for_mode(mode) method color_for_mode (line 168) | def color_for_mode(mode) method geometry_for (line 172) | def geometry_for(track) FILE: app/serializers/tracks_serializer.rb class TracksSerializer (line 3) | class TracksSerializer method initialize (line 4) | def initialize(user, track_ids) method call (line 9) | def call FILE: app/services/areas/visits/create.rb class Areas::Visits::Create (line 3) | class Areas::Visits::Create method initialize (line 6) | def initialize(user, areas) method call (line 13) | def call method area_visits (line 20) | def area_visits(area) method distinct_months_for_area (line 40) | def distinct_months_for_area(area) method area_points_for_month (line 59) | def area_points_for_month(area, month) method create_or_update_visit (line 74) | def create_or_update_visit(area, time_range, visit_points) method find_or_initialize_visit (line 93) | def find_or_initialize_visit(area_id, timestamp) FILE: app/services/cache/clean.rb class Cache::Clean (line 3) | class Cache::Clean method call (line 5) | def call method delete_control_flag (line 23) | def delete_control_flag method delete_version_cache (line 27) | def delete_version_cache method delete_years_tracked_cache (line 31) | def delete_years_tracked_cache(user) method delete_points_geocoded_stats_cache (line 35) | def delete_points_geocoded_stats_cache(user) method delete_countries_cities_cache (line 39) | def delete_countries_cities_cache(user) method delete_total_distance_cache (line 44) | def delete_total_distance_cache(user) method delete_insights_digest_cache (line 48) | def delete_insights_digest_cache(user) FILE: app/services/cache/invalidate_user_caches.rb class Cache::InvalidateUserCaches (line 3) | class Cache::InvalidateUserCaches method initialize (line 9) | def initialize(user_id, year: nil) method call (line 14) | def call method invalidate_countries_visited (line 22) | def invalidate_countries_visited method invalidate_cities_visited (line 26) | def invalidate_cities_visited method invalidate_points_geocoded_stats (line 30) | def invalidate_points_geocoded_stats method invalidate_total_distance (line 34) | def invalidate_total_distance method invalidate_insights_digest (line 38) | def invalidate_insights_digest FILE: app/services/cache/preheat_insights_digests.rb class Cache::PreheatInsightsDigests (line 3) | class Cache::PreheatInsightsDigests method initialize (line 7) | def initialize(user) method call (line 11) | def call method recent_years_with_stats (line 24) | def recent_years_with_stats method preheat_year (line 29) | def preheat_year(year) method digest_stale? (line 42) | def digest_stale?(digest, year) FILE: app/services/check_app_version.rb class CheckAppVersion (line 3) | class CheckAppVersion method initialize (line 6) | def initialize method call (line 10) | def call method latest_version (line 20) | def latest_version FILE: app/services/concerns/ssl_configurable.rb type SslConfigurable (line 3) | module SslConfigurable function ssl_verification_enabled? (line 8) | def ssl_verification_enabled?(user, service_type) function http_options_with_ssl (line 15) | def http_options_with_ssl(user, service_type, base_options = {}) function http_options_with_ssl_flag (line 20) | def http_options_with_ssl_flag(skip_ssl_verification, base_options = {}) FILE: app/services/countries/iso_code_mapper.rb class Countries::IsoCodeMapper (line 3) | class Countries::IsoCodeMapper method iso_a3_from_a2 (line 289) | def self.iso_a3_from_a2(iso_a2) method iso_codes_from_country_name (line 296) | def self.iso_codes_from_country_name(country_name) method fallback_codes_from_country_name (line 325) | def self.fallback_codes_from_country_name(country_name) method standardize_country_name (line 340) | def self.standardize_country_name(country_name) method country_flag (line 365) | def self.country_flag(iso_a2) method country_by_iso2 (line 372) | def self.country_by_iso2(iso_a2) method country_by_name (line 378) | def self.country_by_name(country_name) method all_countries (line 386) | def self.all_countries method find_country_by_name (line 390) | def self.find_country_by_name(name) FILE: app/services/countries_and_cities.rb class CountriesAndCities (line 3) | class CountriesAndCities method initialize (line 7) | def initialize(points, min_minutes_spent_in_city: 60, max_gap_minutes:... method call (line 13) | def call method canonical_country_name (line 25) | def canonical_country_name(point) method country_names_by_id (line 32) | def country_names_by_id method process_country_points (line 39) | def process_country_points(country_points) method create_city_data_if_valid (line 47) | def create_city_data_if_valid(city_points) method build_city_data (line 56) | def build_city_data(city, points_count, timestamps, duration) method calculate_duration_in_minutes (line 67) | def calculate_duration_in_minutes(timestamps) FILE: app/services/exception_reporter.rb class ExceptionReporter (line 3) | class ExceptionReporter method call (line 4) | def self.call(exception, human_message = 'Exception reported') FILE: app/services/exports/create.rb class Exports::Create (line 3) | class Exports::Create method initialize (line 4) | def initialize(export:) method call (line 12) | def call method time_framed_points (line 32) | def time_framed_points method build_export_tempfile (line 39) | def build_export_tempfile method notify_export_finished (line 47) | def notify_export_finished method notify_export_failed (line 56) | def notify_export_failed(error) method attach_export_file (line 65) | def attach_export_file(tempfile) method content_type (line 71) | def content_type FILE: app/services/families/accept_invitation.rb type Families (line 3) | module Families class AcceptInvitation (line 4) | class AcceptInvitation method initialize (line 7) | def initialize(invitation:, user:) method call (line 13) | def call method can_accept? (line 39) | def can_accept? method validate_invitation (line 47) | def validate_invitation method validate_email_match (line 55) | def validate_email_match method validate_family_capacity (line 63) | def validate_family_capacity method create_membership (line 71) | def create_membership method update_invitation (line 79) | def update_invitation method send_notifications (line 83) | def send_notifications method send_user_notification (line 88) | def send_user_notification method send_owner_notification (line 97) | def send_owner_notification method handle_record_invalid_error (line 108) | def handle_record_invalid_error(error) method handle_generic_error (line 117) | def handle_generic_error(error) FILE: app/services/families/create.rb type Families (line 3) | module Families class Create (line 4) | class Create method initialize (line 15) | def initialize(user:, name:) method call (line 21) | def call method validate_user_eligibility (line 49) | def validate_user_eligibility method validate_feature_access (line 63) | def validate_feature_access method can_create_family? (line 76) | def can_create_family? method create_family (line 84) | def create_family method create_owner_membership (line 88) | def create_owner_membership method send_notification (line 96) | def send_notification method handle_record_invalid_error (line 108) | def handle_record_invalid_error(error) method handle_uniqueness_error (line 117) | def handle_uniqueness_error(_error) method handle_generic_error (line 121) | def handle_generic_error(error) FILE: app/services/families/create_location_request.rb class Families::CreateLocationRequest (line 3) | class Families::CreateLocationRequest method initialize (line 8) | def initialize(requester:, target_user:) method call (line 13) | def call method in_same_family? (line 34) | def in_same_family? method cooldown_active? (line 38) | def cooldown_active? method create_request! (line 46) | def create_request! method create_notification! (line 54) | def create_notification!(request) method enqueue_email (line 72) | def enqueue_email(request) method not_in_same_family_error (line 76) | def not_in_same_family_error method already_sharing_error (line 80) | def already_sharing_error method cooldown_error (line 85) | def cooldown_error FILE: app/services/families/invite.rb type Families (line 3) | module Families class Invite (line 4) | class Invite method initialize (line 11) | def initialize(family:, email:, invited_by:) method call (line 17) | def call method error_message (line 39) | def error_message method invite_sendable? (line 48) | def invite_sendable? method add_error_and_false (line 60) | def add_error_and_false(attribute, message) method user_already_in_family? (line 65) | def user_already_in_family? method pending_invitation_exists? (line 71) | def pending_invitation_exists? method create_invitation (line 75) | def create_invitation method send_invitation_email (line 83) | def send_invitation_email(invitation) method send_notification (line 87) | def send_notification method handle_record_invalid_error (line 107) | def handle_record_invalid_error(error) method handle_email_error (line 115) | def handle_email_error(error) method handle_generic_error (line 123) | def handle_generic_error(error) FILE: app/services/families/locations.rb class Families::Locations (line 3) | class Families::Locations method initialize (line 6) | def initialize(user) method call (line 12) | def call method history (line 22) | def history(start_at:, end_at:) method family_feature_enabled? (line 34) | def family_feature_enabled? method family_members_with_sharing_enabled (line 38) | def family_members_with_sharing_enabled method build_family_locations (line 43) | def build_family_locations(sharing_members) method build_family_history (line 62) | def build_family_history(sharing_members, start_at:, end_at:) method numbered_rows_sql (line 88) | def numbered_rows_sql(scope) FILE: app/services/families/memberships/destroy.rb type Families (line 3) | module Families type Memberships (line 4) | module Memberships class Destroy (line 5) | class Destroy method initialize (line 8) | def initialize(user:, member_to_remove: nil) method call (line 14) | def call method validate_can_leave (line 38) | def validate_can_leave method validate_in_family (line 45) | def validate_in_family method validate_removal_allowed (line 52) | def validate_removal_allowed method removing_self? (line 62) | def removing_self? method validate_owner_can_leave (line 66) | def validate_owner_can_leave method validate_remover_is_owner (line 73) | def validate_remover_is_owner method validate_same_family (line 80) | def validate_same_family method validate_not_removing_owner (line 87) | def validate_not_removing_owner method remove_membership (line 94) | def remove_membership method send_notifications (line 98) | def send_notifications method send_self_removal_notifications (line 106) | def send_self_removal_notifications method send_member_removed_notifications (line 124) | def send_member_removed_notifications method handle_record_invalid_error (line 142) | def handle_record_invalid_error(error) method handle_generic_error (line 151) | def handle_generic_error(error) FILE: app/services/families/update_location_sharing.rb class Families::UpdateLocationSharing (line 3) | class Families::UpdateLocationSharing method initialize (line 6) | def initialize(user:, enabled:, duration:, share_history: nil, history... method call (line 15) | def call method update_location_sharing (line 29) | def update_location_sharing method enabled? (line 38) | def enabled? method success_result (line 42) | def success_result method failure_result (line 58) | def failure_result(message, status) method build_sharing_message (line 62) | def build_sharing_message FILE: app/services/geojson/importer.rb class Geojson::Importer (line 3) | class Geojson::Importer method initialize (line 11) | def initialize(import, user_id, file_path = nil) method call (line 17) | def call method bulk_insert_points (line 40) | def bulk_insert_points(batch) method create_notification (line 54) | def create_notification(message) FILE: app/services/geojson/params.rb class Geojson::Params (line 3) | class Geojson::Params method initialize (line 6) | def initialize(json) method call (line 10) | def call method process_feature (line 19) | def process_feature(json) method process_feature_collection (line 30) | def process_feature_collection(json) method build_point (line 34) | def build_point(feature) method build_line (line 51) | def build_line(feature) method build_multi_line (line 57) | def build_multi_line(feature) method build_line_point (line 65) | def build_line_point(point) method battery_level (line 73) | def battery_level(level) method altitude (line 79) | def altitude(feature) method timestamp (line 83) | def timestamp(feature) method parse_array_timestamp (line 93) | def parse_array_timestamp(value) method numeric_timestamp (line 99) | def numeric_timestamp(feature) method parse_string_timestamp (line 106) | def parse_string_timestamp(feature) method speed (line 115) | def speed(feature) method accuracy (line 121) | def accuracy(feature) FILE: app/services/google_maps/phone_takeout_importer.rb class GoogleMaps::PhoneTakeoutImporter (line 3) | class GoogleMaps::PhoneTakeoutImporter method initialize (line 9) | def initialize(import, user_id, file_path = nil) method call (line 17) | def call method parse_json (line 37) | def parse_json method parse_coordinates (line 56) | def parse_coordinates(coordinates) method point_hash (line 64) | def point_hash(lat, lon, timestamp, raw_data) method parse_visit_place_location (line 76) | def parse_visit_place_location(data_point) method parse_activity (line 83) | def parse_activity(data_point) method parse_timeline_path (line 96) | def parse_timeline_path(data_point) method parse_semantic_visit (line 109) | def parse_semantic_visit(segment) method parse_semantic_activity (line 116) | def parse_semantic_activity(segment) method parse_semantic_timeline_path (line 128) | def parse_semantic_timeline_path(segment) method parse_raw_array (line 137) | def parse_raw_array(raw_data) method parse_semantic_segments (line 149) | def parse_semantic_segments(semantic_segments) method parse_raw_signals (line 164) | def parse_raw_signals(raw_signals) method bulk_insert_points (line 175) | def bulk_insert_points(batch) method create_notification (line 189) | def create_notification(message) FILE: app/services/google_maps/records_importer.rb class GoogleMaps::RecordsImporter (line 6) | class GoogleMaps::RecordsImporter method initialize (line 12) | def initialize(import, current_index = 0) method call (line 18) | def call(locations) method prepare_location_data (line 28) | def prepare_location_data(location) method bulk_insert_points (line 49) | def bulk_insert_points(batch) method deduplicate_batch (line 63) | def deduplicate_batch(batch) method parse_timestamp (line 73) | def parse_timestamp(location) method parse_battery_charging (line 79) | def parse_battery_charging(battery_charging) method create_notification (line 85) | def create_notification(message) FILE: app/services/google_maps/records_storage_importer.rb class GoogleMaps::RecordsStorageImporter (line 6) | class GoogleMaps::RecordsStorageImporter method initialize (line 11) | def initialize(import, user_id, file_path = nil) method call (line 17) | def call method process_file_in_batches (line 28) | def process_file_in_batches method process_locations_in_batches (line 36) | def process_locations_in_batches(locations) method process_batch (line 54) | def process_batch(batch, index) FILE: app/services/google_maps/semantic_history_importer.rb class GoogleMaps::SemanticHistoryImporter (line 3) | class GoogleMaps::SemanticHistoryImporter method initialize (line 10) | def initialize(import, user_id, file_path = nil) method call (line 17) | def call method process_batch (line 27) | def process_batch(batch) method prepare_point_data (line 41) | def prepare_point_data(point_data) method create_notification (line 57) | def create_notification(message) method points_data (line 66) | def points_data method parse_timeline_object (line 74) | def parse_timeline_object(timeline_object) method parse_activity_segment (line 82) | def parse_activity_segment(activity) method parse_waypoints (line 96) | def parse_waypoints(activity) method parse_place_visit (line 109) | def parse_place_visit(place_visit) method parse_candidate_location (line 124) | def parse_candidate_location(candidate, place_visit) method build_point_from_location (line 136) | def build_point_from_location(longitude:, latitude:, timestamp:, raw_d... FILE: app/services/gpx/track_importer.rb class Gpx::TrackImporter (line 5) | class Gpx::TrackImporter method initialize (line 11) | def initialize(import, user_id, file_path = nil) method call (line 17) | def call method parse_track (line 32) | def parse_track(track) method prepare_point (line 41) | def prepare_point(point) method bulk_insert_points (line 57) | def bulk_insert_points(batch) method create_notification (line 73) | def create_notification(message) method speed (line 82) | def speed(point) FILE: app/services/immich/connection_tester.rb class Immich::ConnectionTester (line 3) | class Immich::ConnectionTester method initialize (line 8) | def initialize(url, api_key, skip_ssl_verification: false) method call (line 14) | def call method test_connection (line 25) | def test_connection method search_metadata (line 35) | def search_metadata method test_thumbnail_access (line 58) | def test_thumbnail_access(asset_id) method extract_asset_id (line 76) | def extract_asset_id(body) method missing_asset_view_permission? (line 83) | def missing_asset_view_permission?(response) FILE: app/services/immich/import_geodata.rb class Immich::ImportGeodata (line 3) | class Immich::ImportGeodata method initialize (line 6) | def initialize(user, start_date: '1970-01-01', end_date: nil) method call (line 12) | def call method retrieve_immich_data (line 37) | def retrieve_immich_data method parse_immich_data (line 41) | def parse_immich_data(immich_data) method valid? (line 51) | def valid?(asset) method extract_geodata (line 59) | def extract_geodata(asset) method log_no_data (line 68) | def log_no_data method create_import_failed_notification (line 72) | def create_import_failed_notification(import_name) method file_name (line 82) | def file_name(immich_data_json) FILE: app/services/immich/request_photos.rb class Immich::RequestPhotos (line 3) | class Immich::RequestPhotos method initialize (line 8) | def initialize(user, start_date: '1970-01-01', end_date: nil) method call (line 16) | def call method retrieve_immich_data (line 28) | def retrieve_immich_data method headers (line 70) | def headers method request_body (line 78) | def request_body(page) method time_framed_data (line 92) | def time_framed_data(data) method normalize_date (line 105) | def normalize_date(value) method parse_time (line 110) | def parse_time(value) FILE: app/services/immich/response_analyzer.rb class Immich::ResponseAnalyzer (line 3) | class Immich::ResponseAnalyzer method initialize (line 6) | def initialize(response) method permission_error? (line 10) | def permission_error? method error_message (line 19) | def error_message FILE: app/services/immich/response_validator.rb type Immich (line 3) | module Immich class ResponseValidator (line 4) | class ResponseValidator method validate_and_parse (line 5) | def self.validate_and_parse(response, logger: Rails.logger) method validate_and_parse_body (line 22) | def self.validate_and_parse_body(body_string, logger: Rails.logger) method json_content_type? (line 33) | def self.json_content_type?(response) method truncate_body (line 38) | def self.truncate_body(body, max_length: 1000) FILE: app/services/imports/broadcaster.rb type Imports::Broadcaster (line 3) | module Imports::Broadcaster function broadcast_import_progress (line 7) | def broadcast_import_progress(import, index) function broadcast_status_update (line 23) | def broadcast_status_update function should_broadcast? (line 36) | def should_broadcast?(index) function broadcast_replace_to (line 45) | def broadcast_replace_to(stream, target:, partial:, locals:) FILE: app/services/imports/create.rb class Imports::Create (line 3) | class Imports::Create method initialize (line 8) | def initialize(user, import) method call (line 13) | def call method importer (line 50) | def importer(source) method update_import_points_count (line 67) | def update_import_points_count(import) method schedule_stats_creating (line 71) | def schedule_stats_creating(user_id) method schedule_visit_suggesting (line 77) | def schedule_visit_suggesting(user_id, import) method create_import_failed_notification (line 89) | def create_import_failed_notification(import, user, error) method should_detect_source? (line 100) | def should_detect_source? method detect_source_from_file (line 105) | def detect_source_from_file(temp_file_path) method import_failed_message (line 111) | def import_failed_message(import, error) FILE: app/services/imports/destroy.rb class Imports::Destroy (line 3) | class Imports::Destroy method initialize (line 8) | def initialize(user, import) method call (line 13) | def call method delete_points_in_batches (line 27) | def delete_points_in_batches FILE: app/services/imports/file_loader.rb type Imports (line 3) | module Imports type FileLoader (line 4) | module FileLoader function load_json_data (line 9) | def load_json_data function load_file_content (line 18) | def load_file_content FILE: app/services/imports/secure_file_downloader.rb class Imports::SecureFileDownloader (line 3) | class Imports::SecureFileDownloader method initialize (line 7) | def initialize(storage_attachment) method download_with_verification (line 11) | def download_with_verification method download_to_temp_file (line 17) | def download_to_temp_file method download_to_string (line 68) | def download_to_string method create_temp_file (line 114) | def create_temp_file method cleanup_temp_file (line 120) | def cleanup_temp_file(temp_file) method verify_file_integrity (line 129) | def verify_file_integrity(file_content) method verify_temp_file_integrity (line 149) | def verify_temp_file_integrity(temp_file) FILE: app/services/imports/source_detector.rb class Imports::SourceDetector (line 3) | class Imports::SourceDetector class UnknownSourceError (line 4) | class UnknownSourceError < StandardError; end method initialize (line 57) | def initialize(file_content, filename = nil, file_path = nil) method new_from_file_header (line 63) | def self.new_from_file_header(file_path) method detect_source (line 72) | def detect_source method detect_source! (line 89) | def detect_source! method gpx_file? (line 100) | def gpx_file? method kml_file? (line 120) | def kml_file? method owntracks_file? (line 145) | def owntracks_file? method parse_json (line 162) | def parse_json method matches_format? (line 183) | def matches_format?(json_data, rules) method matches_pattern? (line 192) | def matches_pattern?(json_data, pattern) method structure_matches? (line 208) | def structure_matches?(json_data, required_structure) method has_required_keys? (line 219) | def has_required_keys?(json_data, keys) method has_required_values? (line 225) | def has_required_values?(json_data, values) method has_nested_patterns? (line 231) | def has_nested_patterns?(json_data, patterns) method nested_key_exists? (line 235) | def nested_key_exists?(data, key_path) FILE: app/services/imports/watcher.rb class Imports::Watcher (line 3) | class Imports::Watcher class UnsupportedSourceError (line 4) | class UnsupportedSourceError < StandardError; end method call (line 9) | def call method user_directories (line 26) | def user_directories method file_names (line 34) | def file_names(directory_path) method create_import (line 38) | def create_import(user, directory_path, file_name) method source (line 54) | def source(file_name) method mime_type (line 73) | def mime_type(source) FILE: app/services/insights/activity_heatmap_calculator.rb type Insights (line 3) | module Insights class ActivityHeatmapCalculator (line 4) | class ActivityHeatmapCalculator method initialize (line 18) | def initialize(stats, year) method call (line 23) | def call method empty_result (line 45) | def empty_result method aggregate_daily_distances (line 59) | def aggregate_daily_distances method normalize_daily_distance (line 78) | def normalize_daily_distance(daily_distance) method build_date (line 84) | def build_date(year, month, day) method calculate_activity_levels (line 90) | def calculate_activity_levels(distances) method percentile (line 103) | def percentile(sorted_array, pct) method default_activity_levels (line 110) | def default_activity_levels method calculate_streaks (line 114) | def calculate_streaks(daily_data) method calculate_current_streak (line 156) | def calculate_current_streak(active_dates, reference_date) method default_streak_data (line 182) | def default_streak_data FILE: app/services/insights/travel_insight_generator.rb type Insights (line 3) | module Insights class TravelInsightGenerator (line 6) | class TravelInsightGenerator method initialize (line 18) | def initialize(time_of_day:, day_of_week:, seasonality:) method call (line 24) | def call method time_of_day_insight (line 44) | def time_of_day_insight method day_of_week_insight (line 53) | def day_of_week_insight method seasonality_insight (line 70) | def seasonality_insight method generate_suggestion (line 79) | def generate_suggestion method time_based_suggestion (line 88) | def time_based_suggestion method day_based_suggestion (line 101) | def day_based_suggestion FILE: app/services/insights/travel_patterns_loader.rb type Insights (line 3) | module Insights class TravelPatternsLoader (line 4) | class TravelPatternsLoader method initialize (line 13) | def initialize(user, year, month, monthly_digest: nil) method call (line 20) | def call method load_time_of_day (line 33) | def load_time_of_day method load_day_of_week (line 38) | def load_day_of_week method load_seasonality (line 42) | def load_seasonality method load_activity_breakdown (line 48) | def load_activity_breakdown FILE: app/services/insights/year_comparison_calculator.rb type Insights (line 3) | module Insights class YearComparisonCalculator (line 4) | class YearComparisonCalculator method initialize (line 18) | def initialize(current_totals, previous_year_stats, distance_unit:) method call (line 24) | def call method calculate_change (line 44) | def calculate_change(current, previous) FILE: app/services/insights/year_totals_calculator.rb type Insights (line 3) | module Insights class YearTotalsCalculator (line 4) | class YearTotalsCalculator method initialize (line 15) | def initialize(stats, distance_unit:) method call (line 20) | def call method calculate_total_distance (line 40) | def calculate_total_distance method extract_toponyms (line 45) | def extract_toponyms(countries, cities) method calculate_days_traveling (line 63) | def calculate_days_traveling method find_biggest_month (line 69) | def find_biggest_month FILE: app/services/jobs/create.rb class Jobs::Create (line 3) | class Jobs::Create class InvalidJobName (line 4) | class InvalidJobName < StandardError; end method initialize (line 8) | def initialize(job_name, user_id) method call (line 13) | def call FILE: app/services/kml/importer.rb class Kml::Importer (line 6) | class Kml::Importer method initialize (line 12) | def initialize(import, user_id, file_path = nil) method call (line 18) | def call method load_and_parse_kml_document (line 29) | def load_and_parse_kml_document method extract_all_points (line 34) | def extract_all_points(doc) method save_points_in_batches (line 41) | def save_points_in_batches(points_data) method extract_points_from_placemarks (line 47) | def extract_points_from_placemarks(doc) method extract_points_from_gx_tracks (line 55) | def extract_points_from_gx_tracks(doc) method load_kml_content (line 63) | def load_kml_content method read_file_content (line 69) | def read_file_content method download_and_read_content (line 77) | def download_and_read_content method ensure_binary_encoding (line 82) | def ensure_binary_encoding(content) method kmz_file? (line 87) | def kmz_file?(content) method extract_kml_from_kmz (line 91) | def extract_kml_from_kmz(kmz_content) method find_kml_in_zip (line 100) | def find_kml_in_zip(kmz_content) method kml_entry? (line 115) | def kml_entry?(entry) method parse_placemark (line 119) | def parse_placemark(placemark) method extract_point_geometry (line 132) | def extract_point_geometry(placemark, timestamp) method extract_linestring_geometry (line 140) | def extract_linestring_geometry(placemark, timestamp) method extract_multigeometry (line 148) | def extract_multigeometry(placemark, timestamp) method parse_gx_track (line 159) | def parse_gx_track(track) method extract_gx_timestamps (line 166) | def extract_gx_timestamps(track) method extract_gx_coordinates (line 174) | def extract_gx_coordinates(track) method build_gx_track_points (line 182) | def build_gx_track_points(timestamps, coordinates) method build_gx_track_point (line 194) | def build_gx_track_point(timestamp_str, coord_str, index) method parse_coordinates (line 217) | def parse_coordinates(coord_text) method parse_single_coordinate (line 223) | def parse_single_coordinate(coord_str) method explicit_timestamp? (line 234) | def explicit_timestamp?(placemark) method extract_timestamp (line 238) | def extract_timestamp(placemark) method find_timestamp_node (line 248) | def find_timestamp_node(placemark) method build_point (line 254) | def build_point(coord, timestamp, placemark) method invalid_coordinates? (line 270) | def invalid_coordinates?(coord) method format_point_geometry (line 274) | def format_point_geometry(coord) method extract_velocity (line 278) | def extract_velocity(placemark) method find_speed_node (line 285) | def find_speed_node(placemark) method extract_extended_data (line 291) | def extract_extended_data(placemark) method extract_name_and_description (line 301) | def extract_name_and_description(placemark) method extract_custom_data_fields (line 313) | def extract_custom_data_fields(placemark) method bulk_insert_points (line 325) | def bulk_insert_points(batch) method deduplicate_batch (line 333) | def deduplicate_batch(batch) method upsert_points (line 337) | def upsert_points(batch) method create_notification (line 347) | def create_notification(message) FILE: app/services/location_search/geocoding_service.rb type LocationSearch (line 3) | module LocationSearch class GeocodingService (line 4) | class GeocodingService method initialize (line 7) | def initialize(query) method search (line 11) | def search method provider_name (line 20) | def provider_name method perform_geocoding_search (line 28) | def perform_geocoding_search(query) method normalize_geocoding_results (line 35) | def normalize_geocoding_results(results) method deduplicate_results (line 59) | def deduplicate_results(results) method calculate_distance_in_meters (line 78) | def calculate_distance_in_meters(lat1, lon1, lat2, lon2) method valid_coordinates? (line 92) | def valid_coordinates?(lat, lon) FILE: app/services/location_search/point_finder.rb type LocationSearch (line 3) | module LocationSearch class PointFinder (line 4) | class PointFinder method initialize (line 5) | def initialize(user, params = {}) method call (line 15) | def call method find_matching_points (line 29) | def find_matching_points(geocoded_locations) method spatial_matcher (line 75) | def spatial_matcher method result_aggregator (line 79) | def result_aggregator method date_filter_options (line 83) | def date_filter_options method determine_search_radius (line 90) | def determine_search_radius(location_type) method valid_coordinates? (line 109) | def valid_coordinates? method empty_result (line 114) | def empty_result FILE: app/services/location_search/result_aggregator.rb type LocationSearch (line 3) | module LocationSearch class ResultAggregator (line 4) | class ResultAggregator method group_points_into_visits (line 10) | def group_points_into_visits(points) method within_visit_threshold? (line 37) | def within_visit_threshold?(previous_point, current_point) method create_visit_from_points (line 42) | def create_visit_from_points(points) method format_duration (line 84) | def format_duration(minutes) method calculate_altitude_range (line 97) | def calculate_altitude_range(points) FILE: app/services/location_search/spatial_matcher.rb type LocationSearch (line 3) | module LocationSearch class SpatialMatcher (line 4) | class SpatialMatcher method initialize (line 5) | def initialize method find_points_near (line 9) | def find_points_near(user, latitude, longitude, radius_meters, date_... method build_spatial_query (line 23) | def build_spatial_query(user, latitude, longitude, radius_meters, da... method build_plan_filter (line 65) | def build_plan_filter(user) method build_date_filter (line 71) | def build_date_filter(date_options) method format_point_result (line 95) | def format_point_result(row) FILE: app/services/maps/bounds_calculator.rb type Maps (line 3) | module Maps class BoundsCalculator (line 4) | class BoundsCalculator class NoUserFoundError (line 5) | class NoUserFoundError < StandardError; end class NoDateRangeError (line 6) | class NoDateRangeError < StandardError; end method initialize (line 8) | def initialize(user:, start_date:, end_date:) method call (line 14) | def call method validate_inputs! (line 35) | def validate_inputs! method execute_bounds_query (line 40) | def execute_bounds_query(start_timestamp, end_timestamp) method build_success_response (line 54) | def build_success_response(bounds_result, point_count) method build_no_data_response (line 67) | def build_no_data_response method parse_date_parameter (line 75) | def parse_date_parameter(param) FILE: app/services/maps/hexagon_center_manager.rb type Maps (line 3) | module Maps class HexagonCenterManager (line 4) | class HexagonCenterManager method initialize (line 5) | def initialize(stat:, user:) method call (line 10) | def call method pre_calculated_centers_available? (line 20) | def pre_calculated_centers_available? method build_response_from_centers (line 26) | def build_response_from_centers method recalculate_h3_hex_ids (line 34) | def recalculate_h3_hex_ids method update_stat_with_new_hex_ids (line 38) | def update_stat_with_new_hex_ids(new_hex_ids) method build_hexagons_from_h3_ids (line 45) | def build_hexagons_from_h3_ids(hex_ids) method build_hexagon_feature_from_h3 (line 56) | def build_hexagon_feature_from_h3(h3_index, data, index) method build_hexagon_properties (line 67) | def build_hexagon_properties(index, count, earliest, latest) method build_feature_collection (line 76) | def build_feature_collection(hexagon_features) FILE: app/services/maps/hexagon_polygon_generator.rb type Maps (line 3) | module Maps class HexagonPolygonGenerator (line 4) | class HexagonPolygonGenerator method initialize (line 5) | def initialize(h3_index:) method call (line 9) | def call FILE: app/services/maps/hexagon_request_handler.rb type Maps (line 3) | module Maps class HexagonRequestHandler (line 4) | class HexagonRequestHandler method initialize (line 5) | def initialize(params:, user: nil, stat: nil, start_date: nil, end_d... method call (line 13) | def call method find_matching_stat (line 32) | def find_matching_stat method empty_feature_collection (line 50) | def empty_feature_collection FILE: app/services/metrics/archives/compression_ratio.rb class Metrics::Archives::CompressionRatio (line 3) | class Metrics::Archives::CompressionRatio method initialize (line 4) | def initialize(original_size:, compressed_size:) method call (line 8) | def call FILE: app/services/metrics/archives/count_mismatch.rb class Metrics::Archives::CountMismatch (line 3) | class Metrics::Archives::CountMismatch method initialize (line 4) | def initialize(user_id:, year:, month:, expected:, actual:) method call (line 12) | def call FILE: app/services/metrics/archives/operation.rb class Metrics::Archives::Operation (line 3) | class Metrics::Archives::Operation method initialize (line 6) | def initialize(operation:, status:) method call (line 11) | def call FILE: app/services/metrics/archives/points_archived.rb class Metrics::Archives::PointsArchived (line 3) | class Metrics::Archives::PointsArchived method initialize (line 4) | def initialize(count:, operation:) method call (line 9) | def call FILE: app/services/metrics/archives/size.rb class Metrics::Archives::Size (line 3) | class Metrics::Archives::Size method initialize (line 4) | def initialize(size_bytes:) method call (line 8) | def call FILE: app/services/metrics/archives/verification.rb class Metrics::Archives::Verification (line 3) | class Metrics::Archives::Verification method initialize (line 4) | def initialize(duration_seconds:, status:, check_name: nil) method call (line 10) | def call FILE: app/services/notifications.rb type Notifications (line 3) | module Notifications class Create (line 4) | class Create method initialize (line 7) | def initialize(user:, kind:, title:, content:) method call (line 14) | def call FILE: app/services/overland/params.rb class Overland::Params (line 3) | class Overland::Params method initialize (line 6) | def initialize(json) method call (line 11) | def call method battery_level (line 36) | def battery_level(level) method lonlat (line 42) | def lonlat(point) method normalize (line 49) | def normalize(json) FILE: app/services/overland/points_creator.rb class Overland::PointsCreator (line 3) | class Overland::PointsCreator method initialize (line 8) | def initialize(params, user_id) method call (line 13) | def call method upsert_points (line 34) | def upsert_points(locations) FILE: app/services/own_tracks/importer.rb class OwnTracks::Importer (line 3) | class OwnTracks::Importer method initialize (line 9) | def initialize(import, user_id, file_path = nil) method call (line 15) | def call method bulk_insert_points (line 35) | def bulk_insert_points(batch) method create_notification (line 53) | def create_notification(message) method point_valid? (line 62) | def point_valid?(point) FILE: app/services/own_tracks/params.rb class OwnTracks::Params (line 3) | class OwnTracks::Params method initialize (line 6) | def initialize(params) method call (line 10) | def call method battery_status (line 38) | def battery_status method trigger (line 49) | def trigger method connection (line 64) | def connection method speed (line 75) | def speed method owntracks_point? (line 83) | def owntracks_point? method valid_point? (line 87) | def valid_point? FILE: app/services/own_tracks/point_creator.rb class OwnTracks::PointCreator (line 3) | class OwnTracks::PointCreator method initialize (line 8) | def initialize(params, user_id) method call (line 13) | def call method upsert_points (line 32) | def upsert_points(locations) FILE: app/services/own_tracks/rec_parser.rb class OwnTracks::RecParser (line 3) | class OwnTracks::RecParser method initialize (line 6) | def initialize(file) method call (line 10) | def call FILE: app/services/photoprism/cache_preview_token.rb class Photoprism::CachePreviewToken (line 3) | class Photoprism::CachePreviewToken method initialize (line 8) | def initialize(user, preview_token) method call (line 13) | def call FILE: app/services/photoprism/connection_tester.rb class Photoprism::ConnectionTester (line 3) | class Photoprism::ConnectionTester method initialize (line 8) | def initialize(url, api_key, skip_ssl_verification: false) method call (line 14) | def call method test_connection (line 25) | def test_connection FILE: app/services/photoprism/import_geodata.rb class Photoprism::ImportGeodata (line 3) | class Photoprism::ImportGeodata method initialize (line 6) | def initialize(user, start_date: '1970-01-01', end_date: nil) method call (line 12) | def call method create_and_process_import (line 22) | def create_and_process_import(json_data) method find_or_create_import (line 35) | def find_or_create_import(json_data) method retrieve_photoprism_data (line 42) | def retrieve_photoprism_data method parse_photoprism_data (line 46) | def parse_photoprism_data(photoprism_data) method valid? (line 56) | def valid?(asset) method extract_geodata (line 64) | def extract_geodata(asset) method log_no_data (line 73) | def log_no_data method create_import_failed_notification (line 77) | def create_import_failed_notification(import_name) method file_name (line 87) | def file_name(photoprism_data_json) FILE: app/services/photoprism/request_photos.rb class Photoprism::RequestPhotos (line 7) | class Photoprism::RequestPhotos method initialize (line 12) | def initialize(user, start_date: '1970-01-01', end_date: nil) method call (line 20) | def call method retrieve_photoprism_data (line 33) | def retrieve_photoprism_data method fetch_page (line 55) | def fetch_page(offset) method headers (line 80) | def headers method request_params (line 88) | def request_params(offset = 0) method default_params (line 94) | def default_params method time_framed_data (line 104) | def time_framed_data(data, start_date, end_date) method cache_preview_token (line 113) | def cache_preview_token(headers) FILE: app/services/photoprism/response_validator.rb type Photoprism (line 3) | module Photoprism class ResponseValidator (line 4) | class ResponseValidator method validate_and_parse (line 5) | def self.validate_and_parse(response, logger: Rails.logger) method json_content_type? (line 22) | def self.json_content_type?(response) method truncate_body (line 27) | def self.truncate_body(body, max_length: 1000) FILE: app/services/photos/cache_cleaner.rb class Photos::CacheCleaner (line 3) | class Photos::CacheCleaner method call (line 6) | def self.call(user) method initialize (line 10) | def initialize(user) method call (line 14) | def call FILE: app/services/photos/importer.rb class Photos::Importer (line 3) | class Photos::Importer method initialize (line 11) | def initialize(import, user_id, file_path = nil) method call (line 17) | def call method prepare_point_data (line 29) | def prepare_point_data(point) method bulk_insert_points (line 45) | def bulk_insert_points(batch) method create_notification (line 59) | def create_notification(message) method valid? (line 68) | def valid?(point) FILE: app/services/photos/search.rb class Photos::Search (line 3) | class Photos::Search method initialize (line 6) | def initialize(user, start_date: '1970-01-01', end_date: nil) method call (line 13) | def call method request_immich (line 27) | def request_immich method request_photoprism (line 41) | def request_photoprism method transform_asset (line 49) | def transform_asset(asset, source) FILE: app/services/photos/thumbnail.rb class Photos::Thumbnail (line 3) | class Photos::Thumbnail method initialize (line 8) | def initialize(user, source, id) method call (line 14) | def call method source_url (line 31) | def source_url method source_api_key (line 35) | def source_api_key method source_path (line 39) | def source_path method request_url (line 49) | def request_url method headers (line 53) | def headers method unsupported_source_error (line 63) | def unsupported_source_error method source_type (line 67) | def source_type FILE: app/services/places/name_fetcher.rb type Places (line 3) | module Places class NameFetcher (line 4) | class NameFetcher method initialize (line 5) | def initialize(place) method call (line 9) | def call method update_place_name (line 34) | def update_place_name(properties, geodata) method update_visits_name (line 43) | def update_visits_name(properties) FILE: app/services/places/nearby_search.rb type Places (line 3) | module Places class NearbySearch (line 4) | class NearbySearch method initialize (line 8) | def initialize(latitude:, longitude:, radius: RADIUS_KM, limit: MAX_... method call (line 15) | def call method reverse_geocoding_enabled? (line 36) | def reverse_geocoding_enabled? method format_results (line 40) | def format_results(results) method extract_name (line 62) | def extract_name(data) FILE: app/services/places/visits/create.rb class Places::Visits::Create (line 3) | class Places::Visits::Create method initialize (line 9) | def initialize(user, places) method call (line 16) | def call method place_visits (line 22) | def place_visits(place) method distinct_months_for_place (line 42) | def distinct_months_for_place(place) method place_points_for_month (line 56) | def place_points_for_month(place, month) method create_or_update_visit (line 76) | def create_or_update_visit(place, time_range, visit_points) method find_or_initialize_visit (line 95) | def find_or_initialize_visit(place_id, timestamp) FILE: app/services/points/create.rb class Points::Create (line 3) | class Points::Create method initialize (line 6) | def initialize(user, params) method call (line 11) | def call FILE: app/services/points/live_broadcaster.rb class Points::LiveBroadcaster (line 13) | class Points::LiveBroadcaster method initialize (line 16) | def initialize(user_id, upserted_results, payloads) method call (line 22) | def call FILE: app/services/points/motion_data_extractor.rb type Points (line 3) | module Points class MotionDataExtractor (line 9) | class MotionDataExtractor method from_overland_properties (line 12) | def from_overland_properties(properties) method from_google_phone_takeout (line 26) | def from_google_phone_takeout(raw_data) method from_google_records (line 38) | def from_google_records(location) method from_google_semantic_history (line 48) | def from_google_semantic_history(raw_data) method from_owntracks (line 60) | def from_owntracks(params) method from_raw_data (line 74) | def from_raw_data(raw_data) method from_google_all (line 86) | def from_google_all(raw_data) FILE: app/services/points/params.rb class Points::Params (line 3) | class Points::Params method initialize (line 6) | def initialize(json, user_id) method call (line 12) | def call method battery_level (line 38) | def battery_level(level) method params_valid? (line 44) | def params_valid?(point) method lonlat (line 49) | def lonlat(point) FILE: app/services/points/raw_data/archiver.rb type Points (line 3) | module Points type RawData (line 4) | module RawData class Archiver (line 5) | class Archiver method initialize (line 8) | def initialize method call (line 12) | def call method archive_specific_month (line 28) | def archive_specific_month(user_id, year, month) method archival_enabled? (line 41) | def archival_enabled? method archivable_months (line 45) | def archivable_months method process_month (line 71) | def process_month(month_data) method archive_month (line 106) | def archive_month(user_id, year, month) method find_archivable_points (line 134) | def find_archivable_points(user_id, year, month) method month_timestamp_range (line 143) | def month_timestamp_range(year, month) method mark_points_as_archived (line 149) | def mark_points_as_archived(point_ids, archive_id) method update_stats (line 159) | def update_stats(archived_count) method log_archival_start (line 163) | def log_archival_start(user_id, year, month, count) method log_archival_success (line 167) | def log_archival_success(archive) method create_archive_chunk (line 171) | def create_archive_chunk(user_id, year, month, points, point_ids) method calculate_checksum (line 252) | def calculate_checksum(point_ids) method verify_archive_immediately (line 256) | def verify_archive_immediately(archive, expected_point_ids) method download_and_decrypt_archive (line 270) | def download_and_decrypt_archive(archive, start_time) method parse_and_verify_point_ids (line 290) | def parse_and_verify_point_ids(compressed_content, expected_point_... method extract_point_ids (line 313) | def extract_point_ids(compressed_content) method verify_content_checksum! (line 321) | def verify_content_checksum!(content, metadata) method report_verification_metric (line 329) | def report_verification_metric(start_time, status, check_name = nil) FILE: app/services/points/raw_data/chunk_compressor.rb type Points (line 3) | module Points type RawData (line 4) | module RawData class ChunkCompressor (line 5) | class ChunkCompressor method initialize (line 6) | def initialize(points_relation) method compress (line 10) | def compress FILE: app/services/points/raw_data/clearer.rb type Points (line 3) | module Points type RawData (line 4) | module RawData class Clearer (line 5) | class Clearer method initialize (line 8) | def initialize method call (line 12) | def call method clear_specific_archive (line 23) | def clear_specific_archive(archive_id) method clear_month (line 34) | def clear_month(user_id, year, month) method verified_archives (line 45) | def verified_archives method points_needing_clearing (line 52) | def points_needing_clearing method clear_archive_points (line 58) | def clear_archive_points(archive) method clear_points_in_batches (line 97) | def clear_points_in_batches(point_ids) FILE: app/services/points/raw_data/encryption.rb type Points (line 3) | module Points type RawData (line 4) | module RawData class Encryption (line 5) | class Encryption method encrypt (line 12) | def encrypt(data) method decrypt (line 17) | def decrypt(data) method decrypt_if_needed (line 24) | def decrypt_if_needed(content, archive) method reset! (line 32) | def reset! method encryptor (line 38) | def encryptor method derive_key (line 42) | def derive_key FILE: app/services/points/raw_data/restorer.rb type Points (line 3) | module Points type RawData (line 4) | module RawData class Restorer (line 5) | class Restorer method restore_to_database (line 8) | def restore_to_database(user_id, year, month) method restore_to_memory (line 55) | def restore_to_memory(user_id, year, month) method restore_all_for_user (line 72) | def restore_all_for_user(user_id) method restore_archive_to_db (line 90) | def restore_archive_to_db(archive) method parse_archived_data (line 106) | def parse_archived_data(decompressed) method restore_batch (line 113) | def restore_batch(batch) method batch_update_points (line 130) | def batch_update_points(entries) method restore_archive_to_cache (line 140) | def restore_archive_to_cache(archive, cache_key_prefix) method download_and_decompress (line 159) | def download_and_decompress(archive) FILE: app/services/points/raw_data/verifier.rb type Points (line 3) | module Points type RawData (line 4) | module RawData class Verifier (line 5) | class Verifier method initialize (line 6) | def initialize method call (line 10) | def call method verify_specific_archive (line 21) | def verify_specific_archive(archive_id) method verify_month (line 26) | def verify_month(user_id, year, month) method unverified_archives (line 37) | def unverified_archives method verify_archive (line 41) | def verify_archive(archive) method perform_verification (line 88) | def perform_verification(archive) method download_and_verify_content (line 99) | def download_and_verify_content(archive) method verify_content_integrity (line 110) | def verify_content_integrity(raw_content, archive) method parse_and_verify_points (line 121) | def parse_and_verify_points(archive, compressed_content) method verify_existing_points (line 140) | def verify_existing_points(archive, point_ids, sampled_data) method stream_parse_archive (line 164) | def stream_parse_archive(compressed_content, expected_count) method build_sample_indices (line 192) | def build_sample_indices(total_count) method verify_raw_data_matches (line 201) | def verify_raw_data_matches(sampled_data) method calculate_checksum (line 229) | def calculate_checksum(point_ids) method report_verification_metric (line 233) | def report_verification_metric(start_time, status, check_name = nil) method extract_check_name_from_error (line 243) | def extract_check_name_from_error(error_message) FILE: app/services/points/raw_data_lonlat_extractor.rb class Points::RawDataLonlatExtractor (line 3) | class Points::RawDataLonlatExtractor method initialize (line 4) | def initialize(point) method call (line 8) | def call method extract_lonlat (line 19) | def extract_lonlat(point) FILE: app/services/points_limit_exceeded.rb class PointsLimitExceeded (line 3) | class PointsLimitExceeded method initialize (line 4) | def initialize(user) method call (line 8) | def call method cache_key (line 18) | def cache_key method points_limit (line 22) | def points_limit FILE: app/services/prometheus_metrics.rb class PrometheusMetrics (line 6) | class PrometheusMetrics method fetch_data (line 8) | def fetch_data method prometheus_enabled? (line 30) | def prometheus_enabled? FILE: app/services/reverse_geocoding/places/fetch_data.rb class ReverseGeocoding::Places::FetchData (line 3) | class ReverseGeocoding::Places::FetchData method initialize (line 6) | def initialize(place_id) method call (line 10) | def call method update_place (line 34) | def update_place(reverse_geocoded_place) method find_place (line 50) | def find_place(place_data, existing_places) method place_name (line 66) | def place_name(data) method extract_osm_ids (line 77) | def extract_osm_ids(places) method find_existing_places (line 81) | def find_existing_places(osm_ids) method prepare_places_for_bulk_operations (line 88) | def prepare_places_for_bulk_operations(places, existing_places) method populate_place_attributes (line 108) | def populate_place_attributes(place, data) method save_places (line 122) | def save_places(places_to_create, places_to_update) method with_deadlock_retry (line 160) | def with_deadlock_retry method build_point_coordinates (line 173) | def build_point_coordinates(coordinates) method geocoder_places (line 177) | def geocoder_places method normalize_geocoder_data (line 194) | def normalize_geocoder_data(data) method extract_nominatim_name (line 217) | def extract_nominatim_name(data, address) FILE: app/services/reverse_geocoding/points/fetch_data.rb class ReverseGeocoding::Points::FetchData (line 3) | class ReverseGeocoding::Points::FetchData method initialize (line 6) | def initialize(point_id) method call (line 14) | def call method update_point_with_geocoding_data (line 24) | def update_point_with_geocoding_data FILE: app/services/settings/update.rb class Settings::Update (line 3) | class Settings::Update method initialize (line 6) | def initialize(user, settings_params, refresh_photos_cache: false) method call (line 12) | def call method cast_boolean_params (line 41) | def cast_boolean_params(params) method settings_changed? (line 49) | def settings_changed?(existing_settings, updated_settings, keys) method test_immich_connection (line 53) | def test_immich_connection(updated_settings, notices, alerts) method test_photoprism_connection (line 62) | def test_photoprism_connection(updated_settings, notices, alerts) FILE: app/services/stats/bulk_calculator.rb type Stats (line 3) | module Stats class BulkCalculator (line 4) | class BulkCalculator method initialize (line 5) | def initialize(user_id) method call (line 9) | def call method user (line 17) | def user method fetch_months (line 21) | def fetch_months method schedule_calculations (line 39) | def schedule_calculations(months) FILE: app/services/stats/calculate_month.rb class Stats::CalculateMonth (line 3) | class Stats::CalculateMonth method initialize (line 4) | def initialize(user_id, year, month) method call (line 10) | def call method start_timestamp (line 26) | def start_timestamp = DateTime.new(year, month, 1).to_i method end_timestamp (line 28) | def end_timestamp method update_month_stats (line 32) | def update_month_stats(year, month) method points (line 50) | def points method distance (line 63) | def distance(distance_by_day) method toponyms (line 67) | def toponyms method create_stats_update_failed_notification (line 75) | def create_stats_update_failed_notification(user, error) method destroy_month_stats (line 84) | def destroy_month_stats(year, month) method calculate_h3_hex_ids (line 88) | def calculate_h3_hex_ids FILE: app/services/stats/hexagon_calculator.rb class Stats::HexagonCalculator (line 3) | class Stats::HexagonCalculator class PostGISError (line 8) | class PostGISError < StandardError; end method initialize (line 10) | def initialize(user_id, year, month) method call (line 16) | def call(h3_resolution: DEFAULT_H3_RESOLUTION) method calculate_h3_hexagon_centers (line 24) | def calculate_h3_hexagon_centers(h3_resolution) method calculate_hexagons (line 40) | def calculate_hexagons(h3_resolution) method start_timestamp (line 69) | def start_timestamp method end_timestamp (line 73) | def end_timestamp method points (line 77) | def points method calculate_h3_indexes (line 89) | def calculate_h3_indexes(points, h3_resolution) FILE: app/services/subscription/decode_jwt_token.rb class Subscription::DecodeJwtToken (line 3) | class Subscription::DecodeJwtToken method initialize (line 4) | def initialize(token) method call (line 8) | def call FILE: app/services/subscription/encode_jwt_token.rb class Subscription::EncodeJwtToken (line 3) | class Subscription::EncodeJwtToken method initialize (line 4) | def initialize(payload, secret_key) method call (line 9) | def call FILE: app/services/supporter/verify_email.rb type Supporter (line 3) | module Supporter class VerifyEmail (line 4) | class VerifyEmail method initialize (line 10) | def initialize(email) method call (line 14) | def call method cache_key (line 22) | def cache_key method fetch_supporter_status (line 28) | def fetch_supporter_status method email_hash (line 41) | def email_hash FILE: app/services/tasks/imports/google_records.rb class Tasks::Imports::GoogleRecords (line 5) | class Tasks::Imports::GoogleRecords method initialize (line 8) | def initialize(file_path, user_email) method call (line 13) | def call method create_import (line 27) | def create_import method process_file_in_batches (line 31) | def process_file_in_batches(import_id) method log_start (line 52) | def log_start method log_success (line 59) | def log_success FILE: app/services/timeline/day_assembler.rb type Timeline (line 3) | module Timeline class DayAssembler (line 4) | class DayAssembler method initialize (line 5) | def initialize(user, start_at:, end_at:, distance_unit: 'km') method call (line 12) | def call method fetch_visits (line 28) | def fetch_visits method fetch_tracks (line 35) | def fetch_tracks method group_by_day (line 41) | def group_by_day(visits, tracks) method build_days (line 59) | def build_days(days) method build_day (line 63) | def build_day(date, visits, tracks) method interleave (line 73) | def interleave(visits, tracks) method build_visit_entry (line 80) | def build_visit_entry(visit) method build_journey_entry (line 92) | def build_journey_entry(track) method build_place (line 109) | def build_place(place) method build_summary (line 119) | def build_summary(visits, tracks) method build_bounds (line 133) | def build_bounds(visits, tracks) method extract_track_coordinates (line 162) | def extract_track_coordinates(track) method parse_linestring (line 172) | def parse_linestring(wkt) method convert_distance (line 181) | def convert_distance(meters) method convert_speed (line 185) | def convert_speed(kmh) method speed_unit_label (line 194) | def speed_unit_label FILE: app/services/tracks/boundary_detector.rb class Tracks::BoundaryDetector (line 5) | class Tracks::BoundaryDetector method initialize (line 11) | def initialize(user) method resolve_cross_chunk_tracks (line 16) | def resolve_cross_chunk_tracks method find_boundary_track_candidates (line 31) | def find_boundary_track_candidates method find_connected_tracks (line 64) | def find_connected_tracks(track, all_tracks) method tracks_spatially_connected? (line 90) | def tracks_spatially_connected?(track1, track2) method points_are_close? (line 116) | def points_are_close?(point1, point2, threshold_meters) method valid_boundary_group? (line 124) | def valid_boundary_group?(group) method merge_boundary_tracks (line 142) | def merge_boundary_tracks(track_group) method distance_threshold_meters (line 177) | def distance_threshold_meters method time_threshold_minutes (line 181) | def time_threshold_minutes FILE: app/services/tracks/build_path.rb class Tracks::BuildPath (line 3) | class Tracks::BuildPath method initialize (line 4) | def initialize(coordinates) method call (line 8) | def call method factory (line 18) | def factory FILE: app/services/tracks/deduplicator.rb class Tracks::Deduplicator (line 10) | class Tracks::Deduplicator method initialize (line 13) | def initialize(user) method call (line 17) | def call method duplicates_exist? (line 33) | def duplicates_exist? method keeper_ids_subquery (line 47) | def keeper_ids_subquery method delete_orphaned_segments (line 55) | def delete_orphaned_segments method delete_duplicate_tracks (line 68) | def delete_duplicate_tracks FILE: app/services/tracks/incremental_generator.rb class Tracks::IncrementalGenerator (line 22) | class Tracks::IncrementalGenerator method initialize (line 27) | def initialize(user) method call (line 31) | def call method fetch_untracked_segments (line 51) | def fetch_untracked_segments method lookback_start (line 62) | def lookback_start method time_threshold_minutes (line 66) | def time_threshold_minutes method distance_threshold_meters (line 70) | def distance_threshold_meters method merge_with_recent_track (line 74) | def merge_with_recent_track(new_track) FILE: app/services/tracks/merger.rb class Tracks::Merger (line 21) | class Tracks::Merger method initialize (line 24) | def initialize(older_track, newer_track) method call (line 29) | def call method invalid_merge? (line 65) | def invalid_merge? FILE: app/services/tracks/parallel_generator.rb class Tracks::ParallelGenerator (line 5) | class Tracks::ParallelGenerator method initialize (line 11) | def initialize(user, start_at: nil, end_at: nil, mode: :bulk, chunk_si... method call (line 19) | def call method generate_time_chunks (line 45) | def generate_time_chunks method create_generation_session (line 56) | def create_generation_session(total_chunks) method enqueue_chunk_jobs (line 74) | def enqueue_chunk_jobs(session_id, time_chunks) method enqueue_boundary_resolver (line 84) | def enqueue_boundary_resolver(session_id, chunk_count) method clean_existing_tracks (line 94) | def clean_existing_tracks method time_range_defined? (line 106) | def time_range_defined? method time_range (line 110) | def time_range method daily_time_range (line 125) | def daily_time_range method distance_threshold_meters (line 130) | def distance_threshold_meters method time_threshold_minutes (line 134) | def time_threshold_minutes method humanize_duration (line 138) | def humanize_duration(duration) method duration_unit_and_count (line 144) | def duration_unit_and_count(seconds) FILE: app/services/tracks/realtime_debouncer.rb class Tracks::RealtimeDebouncer (line 25) | class Tracks::RealtimeDebouncer method initialize (line 29) | def initialize(user_id) method trigger (line 33) | def trigger method clear (line 47) | def clear method redis_key (line 53) | def redis_key method redis_pool (line 57) | def redis_pool FILE: app/services/tracks/reprocessor.rb type Tracks (line 3) | module Tracks class Reprocessor (line 8) | class Reprocessor method initialize (line 11) | def initialize(import: nil, track: nil) method reprocess_for_import (line 16) | def reprocess_for_import method reprocess_single (line 36) | def reprocess_single method reprocess (line 43) | def self.reprocess(track) method reprocess_track (line 49) | def reprocess_track(track) method extract_user_thresholds (line 79) | def extract_user_thresholds(user) method create_segments (line 86) | def create_segments(track, segment_data) method update_dominant_mode (line 107) | def update_dominant_mode(track, segments) FILE: app/services/tracks/segmentation.rb type Tracks::Segmentation (line 43) | module Tracks::Segmentation function split_points_into_segments (line 48) | def split_points_into_segments(points) function should_start_new_segment? (line 73) | def should_start_new_segment?(current_point, previous_point) function time_gap_exceeded? (line 79) | def time_gap_exceeded?(current_timestamp, previous_timestamp) function time_threshold_minutes (line 86) | def time_threshold_minutes FILE: app/services/tracks/session_manager.rb class Tracks::SessionManager (line 5) | class Tracks::SessionManager method initialize (line 11) | def initialize(user_id, session_id = nil) method create_session (line 17) | def create_session(metadata = {}) method update_session (line 40) | def update_session(updates) method get_session_data (line 50) | def get_session_data method session_exists? (line 61) | def session_exists? method mark_started (line 66) | def mark_started(total_chunks) method increment_completed_chunks (line 75) | def increment_completed_chunks method increment_tracks_created (line 83) | def increment_tracks_created(count = 1) method mark_completed (line 91) | def mark_completed method mark_failed (line 99) | def mark_failed(error_message) method all_chunks_completed? (line 108) | def all_chunks_completed? method progress_percentage (line 117) | def progress_percentage method cleanup_session (line 129) | def cleanup_session method create_for_user (line 139) | def create_for_user(user_id, metadata = {}) method find_session (line 144) | def find_session(user_id, session_id) method cleanup_expired_sessions (line 150) | def cleanup_expired_sessions method cache_key (line 159) | def cache_key method counter_key (line 163) | def counter_key(field) method counter_value (line 167) | def counter_value(field) method atomic_increment (line 173) | def atomic_increment(key, amount) FILE: app/services/tracks/time_chunker.rb class Tracks::TimeChunker (line 5) | class Tracks::TimeChunker method initialize (line 8) | def initialize(user, start_at: nil, end_at: nil, chunk_size: 1.day, bu... method call (line 16) | def call method determine_time_range (line 40) | def determine_time_range method create_chunk (line 62) | def create_chunk(chunk_start, chunk_end, global_start, global_end) method chunk_has_points? (line 80) | def chunk_has_points?(chunk) FILE: app/services/tracks/track_builder.rb type Tracks::TrackBuilder (line 49) | module Tracks::TrackBuilder function create_track_from_points (line 52) | def create_track_from_points(points, pre_calculated_distance) function build_path (line 86) | def build_path(points) function calculate_duration (line 90) | def calculate_duration(points) function calculate_average_speed (line 94) | def calculate_average_speed(distance_in_meters, duration_seconds) function calculate_elevation_stats (line 105) | def calculate_elevation_stats(points) function default_elevation_stats (line 132) | def default_elevation_stats function detect_and_create_segments (line 141) | def detect_and_create_segments(track, points) function update_dominant_mode (line 167) | def update_dominant_mode(track, segments) function user (line 178) | def user FILE: app/services/tracks/transportation_recalculation_status.rb type Tracks (line 3) | module Tracks class TransportationRecalculationStatus (line 6) | class TransportationRecalculationStatus method initialize (line 14) | def initialize(user_id) method in_progress? (line 18) | def in_progress? method current_status (line 22) | def current_status method data (line 26) | def data method start (line 30) | def start(total_tracks:) method update_progress (line 43) | def update_progress(processed_tracks:, total_tracks:) method complete (line 55) | def complete method fail (line 67) | def fail(error_message) method cache_key (line 80) | def cache_key FILE: app/services/transportation_modes/activity_backfiller.rb type TransportationModes (line 3) | module TransportationModes class ActivityBackfiller (line 6) | class ActivityBackfiller method initialize (line 15) | def initialize(import) method call (line 19) | def call method supported? (line 27) | def supported? method process_import (line 33) | def process_import method process_google_semantic_history (line 45) | def process_google_semantic_history method process_google_phone_takeout (line 61) | def process_google_phone_takeout method process_activity_segment (line 83) | def process_activity_segment(segment) method update_point_activity (line 103) | def update_point_activity(point, activity_data) method download_file (line 112) | def download_file method parse_timestamp (line 119) | def parse_timestamp(location) method parse_segment_timestamp (line 124) | def parse_segment_timestamp(timestamp) method parse_timestamp_value (line 128) | def parse_timestamp_value(timestamp) FILE: app/services/transportation_modes/detector.rb type TransportationModes (line 3) | module TransportationModes class Detector (line 23) | class Detector method initialize (line 31) | def initialize(track, points, user_thresholds: nil, user_expert_thre... method call (line 38) | def call method skip_detection? (line 51) | def skip_detection? method default_unknown_segment (line 58) | def default_unknown_segment method extract_source_activity_data (line 75) | def extract_source_activity_data method infer_segments_from_movement (line 79) | def infer_segments_from_movement FILE: app/services/transportation_modes/mode_classifier.rb type TransportationModes (line 3) | module TransportationModes class ModeClassifier (line 13) | class ModeClassifier method initialize (line 61) | def initialize(avg_speed_kmh:, max_speed_kmh: nil, avg_acceleration:... method classify (line 75) | def classify method confidence (line 83) | def confidence method normalize_hash_keys (line 95) | def normalize_hash_keys(hash) method build_speed_thresholds (line 101) | def build_speed_thresholds method build_classification_thresholds (line 128) | def build_classification_thresholds method stationary? (line 152) | def stationary? method likely_flying? (line 156) | def likely_flying? method likely_train? (line 160) | def likely_train? method classify_medium_speed_mode (line 170) | def classify_medium_speed_mode method clear_classification? (line 219) | def clear_classification? method ambiguous_speed_range? (line 225) | def ambiguous_speed_range? method speed_variance_low? (line 231) | def speed_variance_low? method regular_stop_pattern? (line 238) | def regular_stop_pattern? FILE: app/services/transportation_modes/movement_analyzer.rb type TransportationModes (line 3) | module TransportationModes class MovementAnalyzer (line 12) | class MovementAnalyzer method initialize (line 34) | def initialize(track, points, user_thresholds: nil, user_expert_thre... method call (line 45) | def call method normalize_hash_keys (line 62) | def normalize_hash_keys(hash) method extract_min_segment_duration (line 68) | def extract_min_segment_duration method extract_time_gap_threshold (line 73) | def extract_time_gap_threshold method calculate_movement_metrics (line 78) | def calculate_movement_metrics method calculate_distance (line 111) | def calculate_distance(point1, point2) method geocoder_distance (line 124) | def geocoder_distance(point1, point2) method get_speed (line 147) | def get_speed(_point1, point2, distance, time_diff) method detect_segment_boundaries (line 160) | def detect_segment_boundaries(movement_data) method smooth_speeds (line 199) | def smooth_speeds(speeds, window: 3) method merge_short_segments (line 210) | def merge_short_segments(boundaries, movement_data) method calculate_boundary_duration (line 233) | def calculate_boundary_duration(boundary, movement_data) method build_classified_segments (line 244) | def build_classified_segments(boundaries, movement_data) method merge_same_mode_segments (line 254) | def merge_same_mode_segments(segments) method merge_two_segments (line 274) | def merge_two_segments(seg1, seg2) method weighted_avg_speed (line 289) | def weighted_avg_speed(seg1, seg2) method weighted_avg_accel (line 297) | def weighted_avg_accel(seg1, seg2) method lower_confidence (line 305) | def lower_confidence(conf1, conf2) method build_segment (line 312) | def build_segment(boundary, movement_data) FILE: app/services/transportation_modes/source_data_extractor.rb type TransportationModes (line 3) | module TransportationModes class SourceDataExtractor (line 10) | class SourceDataExtractor method initialize (line 64) | def initialize(points) method call (line 68) | def call method extract_modes_from_points (line 81) | def extract_modes_from_points method extract_mode_from_raw_data (line 96) | def extract_mode_from_raw_data(raw_data) method extract_overland_mode (line 122) | def extract_overland_mode(data) method extract_google_mode (line 152) | def extract_google_mode(data) method extract_most_probable_google_activity (line 171) | def extract_most_probable_google_activity(activities) method extract_owntracks_mode (line 191) | def extract_owntracks_mode(data) method detect_source (line 199) | def detect_source(raw_data) method build_segments_from_point_modes (line 222) | def build_segments_from_point_modes(point_modes) method merge_unknown_into_adjacent_segments (line 271) | def merge_unknown_into_adjacent_segments(segments) method merge_consecutive_same_mode_segments (line 310) | def merge_consecutive_same_mode_segments(segments) method finalize_segment (line 329) | def finalize_segment(segment) method calculate_segment_distance (line 354) | def calculate_segment_distance(points) method calculate_segment_duration (line 370) | def calculate_segment_duration(points) method calculate_avg_speed (line 376) | def calculate_avg_speed(distance_m, duration_s) method calculate_max_speed (line 383) | def calculate_max_speed(points) FILE: app/services/trips/photos.rb class Trips::Photos (line 3) | class Trips::Photos method initialize (line 4) | def initialize(trip, user) method call (line 9) | def call method can_fetch_photos? (line 19) | def can_fetch_photos? method photos (line 23) | def photos method photo_thumbnail (line 35) | def photo_thumbnail(asset) FILE: app/services/users/destroy.rb class Users::Destroy (line 3) | class Users::Destroy method initialize (line 6) | def initialize(user) method call (line 10) | def call method cancel_scheduled_jobs (line 90) | def cancel_scheduled_jobs method purge_attachments_for (line 107) | def purge_attachments_for(record_type, relation) method cleanup_user_cache (line 116) | def cleanup_user_cache(user_id) FILE: app/services/users/digests/activity_breakdown_calculator.rb type Users (line 3) | module Users type Digests (line 4) | module Digests class ActivityBreakdownCalculator (line 5) | class ActivityBreakdownCalculator method initialize (line 12) | def initialize(user, year, month = nil) method call (line 18) | def call method fetch_durations (line 28) | def fetch_durations method add_inter_track_time (line 34) | def add_inter_track_time(duration_by_mode) method add_duration (line 43) | def add_duration(duration_by_mode, mode, time) method calculate_inter_track_times (line 49) | def calculate_inter_track_times(boundary_points) method classify_gap (line 57) | def classify_gap(track_pair) method classify_gap_by_distance (line 69) | def classify_gap_by_distance(gap_seconds, distance_km) method stationary_gap? (line 76) | def stationary_gap?(gap_seconds, distance_km) method flying_gap? (line 80) | def flying_gap?(gap_seconds, distance_km) method fetch_track_boundary_points (line 86) | def fetch_track_boundary_points method fetch_tracks_in_range (line 94) | def fetch_tracks_in_range method fetch_boundary_points (line 101) | def fetch_boundary_points(track_ids, order) method build_boundary_data (line 109) | def build_boundary_data(tracks, first_points, last_points) method calculate_breakdown (line 115) | def calculate_breakdown(duration_by_mode) method start_time (line 127) | def start_time = month ? Time.zone.local(year, month, 1).beginning... method end_time (line 128) | def end_time = month ? Time.zone.local(year, month, 1).end_of_mont... FILE: app/services/users/digests/calculate_month.rb type Users (line 3) | module Users type Digests (line 4) | module Digests class CalculateMonth (line 5) | class CalculateMonth method initialize (line 8) | def initialize(user_id, year, month) method call (line 14) | def call method stat (line 40) | def stat method calculate_time_spent (line 44) | def calculate_time_spent method format_top_countries (line 54) | def format_top_countries(country_minutes) method calculate_actual_country_minutes (line 61) | def calculate_actual_country_minutes method group_points_by_date (line 80) | def group_points_by_date method calculate_proportional_time (line 88) | def calculate_proportional_time(day_points, country_minutes) method fetch_month_points_with_country_ordered (line 107) | def fetch_month_points_with_country_ordered method calculate_city_time_spent (line 119) | def calculate_city_time_spent method aggregate_city_time_from_stat (line 128) | def aggregate_city_time_from_stat method calculate_first_time_visits (line 151) | def calculate_first_time_visits method calculate_mom_comparison (line 155) | def calculate_mom_comparison method calculate_all_time_stats (line 159) | def calculate_all_time_stats method calculate_travel_patterns (line 167) | def calculate_travel_patterns FILE: app/services/users/digests/calculate_year.rb type Users (line 3) | module Users type Digests (line 4) | module Digests class CalculateYear (line 5) | class CalculateYear method initialize (line 8) | def initialize(user_id, year) method call (line 13) | def call method monthly_stats (line 37) | def monthly_stats method total_distance (line 41) | def total_distance method aggregate_toponyms (line 45) | def aggregate_toponyms method build_monthly_distances (line 78) | def build_monthly_distances method calculate_time_spent (line 93) | def calculate_time_spent method format_top_countries (line 103) | def format_top_countries(country_minutes) method calculate_actual_country_minutes (line 110) | def calculate_actual_country_minutes method fetch_daily_country_stats (line 130) | def fetch_daily_country_stats method calculate_proportional_time_from_stats (line 153) | def calculate_proportional_time_from_stats(day_rows, country_minutes) method calculate_city_time_spent (line 170) | def calculate_city_time_spent method aggregate_city_time_from_monthly_stats (line 179) | def aggregate_city_time_from_monthly_stats method process_stat_toponyms (line 189) | def process_stat_toponyms(stat, city_time) method process_toponym_cities (line 198) | def process_toponym_cities(toponym, city_time) method calculate_first_time_visits (line 212) | def calculate_first_time_visits method calculate_yoy_comparison (line 216) | def calculate_yoy_comparison method calculate_all_time_stats (line 220) | def calculate_all_time_stats method calculate_travel_patterns (line 228) | def calculate_travel_patterns FILE: app/services/users/digests/first_time_visits_calculator.rb type Users (line 3) | module Users type Digests (line 4) | module Digests class FirstTimeVisitsCalculator (line 5) | class FirstTimeVisitsCalculator method initialize (line 6) | def initialize(user, year) method call (line 11) | def call method previous_years_stats (line 22) | def previous_years_stats method current_year_stats (line 26) | def current_year_stats method previous_countries (line 30) | def previous_countries method previous_cities (line 34) | def previous_cities method current_countries (line 38) | def current_countries method current_cities (line 42) | def current_cities method first_time_countries (line 46) | def first_time_countries method first_time_cities (line 50) | def first_time_cities method extract_countries (line 54) | def extract_countries(stats) method extract_cities (line 63) | def extract_cities(stats) FILE: app/services/users/digests/month_over_month_calculator.rb type Users (line 3) | module Users type Digests (line 4) | module Digests class MonthOverMonthCalculator (line 5) | class MonthOverMonthCalculator method initialize (line 6) | def initialize(user, year, month) method call (line 12) | def call method prev_year (line 28) | def prev_year method prev_month (line 32) | def prev_month method previous_month_stat (line 36) | def previous_month_stat method current_month_stat (line 40) | def current_month_stat method calculate_distance_change_percent (line 44) | def calculate_distance_change_percent method calculate_countries_change (line 52) | def calculate_countries_change method calculate_cities_change (line 59) | def calculate_cities_change method count_countries (line 66) | def count_countries(stat) method count_cities (line 75) | def count_cities(stat) FILE: app/services/users/digests/monthly_first_time_visits_calculator.rb type Users (line 3) | module Users type Digests (line 4) | module Digests class MonthlyFirstTimeVisitsCalculator (line 5) | class MonthlyFirstTimeVisitsCalculator method initialize (line 6) | def initialize(user, year, month) method call (line 12) | def call method previous_stats (line 23) | def previous_stats method current_stat (line 31) | def current_stat method previous_countries (line 35) | def previous_countries method previous_cities (line 39) | def previous_cities method current_countries (line 43) | def current_countries method current_cities (line 47) | def current_cities method first_time_countries (line 51) | def first_time_countries method first_time_cities (line 55) | def first_time_cities method extract_countries (line 59) | def extract_countries(stats) method extract_cities (line 68) | def extract_cities(stats) FILE: app/services/users/digests/seasonality_calculator.rb type Users (line 3) | module Users type Digests (line 4) | module Digests class SeasonalityCalculator (line 5) | class SeasonalityCalculator method initialize (line 14) | def initialize(user, year) method call (line 19) | def call method calculate_distances_by_season (line 34) | def calculate_distances_by_season method empty_result (line 42) | def empty_result FILE: app/services/users/digests/year_over_year_calculator.rb type Users (line 3) | module Users type Digests (line 4) | module Digests class YearOverYearCalculator (line 5) | class YearOverYearCalculator method initialize (line 6) | def initialize(user, year) method call (line 11) | def call method previous_year_stats (line 26) | def previous_year_stats method current_year_stats (line 30) | def current_year_stats method calculate_distance_change_percent (line 34) | def calculate_distance_change_percent method calculate_countries_change (line 42) | def calculate_countries_change method calculate_cities_change (line 49) | def calculate_cities_change method count_countries (line 56) | def count_countries(stats) method count_cities (line 65) | def count_cities(stats) FILE: app/services/users/export_data.rb class Users::ExportData (line 59) | class Users::ExportData method initialize (line 62) | def initialize(user) method export (line 68) | def export method export_all_data (line 116) | def export_all_data method export_settings (line 141) | def export_settings method export_areas (line 149) | def export_areas method export_places (line 161) | def export_places method export_imports (line 173) | def export_imports method export_exports (line 185) | def export_exports method export_trips (line 197) | def export_trips method export_notifications (line 209) | def export_notifications method export_tags (line 221) | def export_tags method export_taggings (line 233) | def export_taggings method build_tagging_hash (line 248) | def build_tagging_hash(tag, tagging) method export_points_by_month (line 265) | def export_points_by_month method export_visits_by_month (line 274) | def export_visits_by_month method export_stats_by_month (line 283) | def export_stats_by_month method export_tracks_by_month (line 292) | def export_tracks_by_month method export_digests_by_month (line 301) | def export_digests_by_month method export_raw_data_archives (line 310) | def export_raw_data_archives method write_manifest (line 339) | def write_manifest method dawarich_version (line 361) | def dawarich_version method calculate_entity_counts (line 365) | def calculate_entity_counts method create_zip_archive (line 388) | def create_zip_archive(export_directory, zip_file_path) method cleanup_temporary_files (line 405) | def cleanup_temporary_files(export_directory) method create_success_notification (line 414) | def create_success_notification FILE: app/services/users/export_data/areas.rb class Users::ExportData::Areas (line 3) | class Users::ExportData::Areas method initialize (line 4) | def initialize(user) method call (line 8) | def call FILE: app/services/users/export_data/digests.rb class Users::ExportData::Digests (line 3) | class Users::ExportData::Digests method initialize (line 7) | def initialize(user, output_directory = nil) method call (line 17) | def call method stream_to_monthly_files (line 30) | def stream_to_monthly_files method extract_month_key (line 47) | def extract_month_key(digest) method monthly_writer_for (line 60) | def monthly_writer_for(month_key) method close_all_writers (line 74) | def close_all_writers FILE: app/services/users/export_data/exports.rb class Users::ExportData::Exports (line 5) | class Users::ExportData::Exports method initialize (line 6) | def initialize(user, files_directory) method call (line 11) | def call method process_export (line 28) | def process_export(export) method add_file_data_to_export (line 44) | def add_file_data_to_export(export, export_hash) method add_empty_file_data_to_export (line 58) | def add_empty_file_data_to_export(export_hash) method generate_sanitized_export_filename (line 63) | def generate_sanitized_export_filename(export) method download_and_save_export_file (line 67) | def download_and_save_export_file(export, file_path) method add_file_metadata_to_export (line 72) | def add_file_metadata_to_export(export, export_hash, sanitized_filename) FILE: app/services/users/export_data/imports.rb class Users::ExportData::Imports (line 5) | class Users::ExportData::Imports method initialize (line 6) | def initialize(user, files_directory) method call (line 11) | def call method process_import (line 28) | def process_import(import) method add_file_data_to_import (line 44) | def add_file_data_to_import(import, import_hash) method add_empty_file_data_to_import (line 58) | def add_empty_file_data_to_import(import_hash) method generate_sanitized_filename (line 63) | def generate_sanitized_filename(import) method download_and_save_import_file (line 67) | def download_and_save_import_file(import, file_path) method add_file_metadata_to_import (line 72) | def add_file_metadata_to_import(import, import_hash, sanitized_filename) FILE: app/services/users/export_data/notifications.rb class Users::ExportData::Notifications (line 3) | class Users::ExportData::Notifications method initialize (line 4) | def initialize(user) method call (line 8) | def call FILE: app/services/users/export_data/places.rb class Users::ExportData::Places (line 3) | class Users::ExportData::Places method initialize (line 4) | def initialize(user) method call (line 8) | def call FILE: app/services/users/export_data/points.rb class Users::ExportData::Points (line 3) | class Users::ExportData::Points method initialize (line 9) | def initialize(user, output_directory = nil) method call (line 18) | def call method stream_to_monthly_files (line 32) | def stream_to_monthly_files method extract_month_key (line 67) | def extract_month_key(row) method monthly_writer_for (line 79) | def monthly_writer_for(month_key) method close_all_writers (line 93) | def close_all_writers method load_all_points (line 98) | def load_all_points method build_full_query (line 105) | def build_full_query method build_batch_query (line 134) | def build_batch_query method build_point_hash (line 163) | def build_point_hash(row) method add_relationship_references (line 208) | def add_relationship_references(point_hash, row) method log_progress (line 234) | def log_progress(processed, total) method populate_coordinate_fields (line 239) | def populate_coordinate_fields(point_hash, row) FILE: app/services/users/export_data/stats.rb class Users::ExportData::Stats (line 3) | class Users::ExportData::Stats method initialize (line 7) | def initialize(user, output_directory = nil) method call (line 17) | def call method stream_to_monthly_files (line 31) | def stream_to_monthly_files method extract_month_key (line 48) | def extract_month_key(stat) method monthly_writer_for (line 57) | def monthly_writer_for(month_key) method close_all_writers (line 71) | def close_all_writers FILE: app/services/users/export_data/tracks.rb class Users::ExportData::Tracks (line 3) | class Users::ExportData::Tracks method initialize (line 7) | def initialize(user, output_directory = nil) method call (line 17) | def call method stream_to_monthly_files (line 30) | def stream_to_monthly_files method build_track_hash (line 47) | def build_track_hash(track) method extract_month_key (line 64) | def extract_month_key(track) method monthly_writer_for (line 73) | def monthly_writer_for(month_key) method close_all_writers (line 87) | def close_all_writers FILE: app/services/users/export_data/trips.rb class Users::ExportData::Trips (line 3) | class Users::ExportData::Trips method initialize (line 4) | def initialize(user) method call (line 8) | def call FILE: app/services/users/export_data/visits.rb class Users::ExportData::Visits (line 3) | class Users::ExportData::Visits method initialize (line 7) | def initialize(user, output_directory = nil) method call (line 17) | def call method stream_to_monthly_files (line 31) | def stream_to_monthly_files method export_as_array (line 48) | def export_as_array method build_visit_hash (line 54) | def build_visit_hash(visit) method extract_month_key (line 69) | def extract_month_key(visit) method monthly_writer_for (line 78) | def monthly_writer_for(month_key) method close_all_writers (line 92) | def close_all_writers FILE: app/services/users/import_data.rb class Users::ImportData (line 30) | class Users::ImportData class UnsupportedFormatError (line 31) | class UnsupportedFormatError < StandardError; end method initialize (line 37) | def initialize(user, archive_path) method import (line 60) | def import method extract_archive (line 86) | def extract_archive method sanitize_zip_entry_name (line 126) | def sanitize_zip_entry_name(entry_name) method process_archive_data (line 142) | def process_archive_data method detect_format_version (line 155) | def detect_format_version method create_handler (line 174) | def create_handler(format_version) method cleanup_temporary_files (line 185) | def cleanup_temporary_files(import_directory) method create_success_notification (line 194) | def create_success_notification method create_failure_notification (line 217) | def create_failure_notification(error) method validate_import_completeness (line 226) | def validate_import_completeness(expected_counts) FILE: app/services/users/import_data/areas.rb class Users::ImportData::Areas (line 3) | class Users::ImportData::Areas method initialize (line 6) | def initialize(user, areas_data) method call (line 11) | def call method filter_and_prepare_areas (line 39) | def filter_and_prepare_areas method prepare_area_attributes (line 61) | def prepare_area_attributes(area_data) method filter_existing_areas (line 76) | def filter_existing_areas(areas) method bulk_import_areas (line 96) | def bulk_import_areas(areas) method valid_area_data? (line 122) | def valid_area_data?(area_data) FILE: app/services/users/import_data/digests.rb class Users::ImportData::Digests (line 3) | class Users::ImportData::Digests method initialize (line 4) | def initialize(user, digests_data) method call (line 9) | def call method find_existing_digest (line 44) | def find_existing_digest(digest_data) method create_digest_record (line 52) | def create_digest_record(digest_data) FILE: app/services/users/import_data/exports.rb class Users::ImportData::Exports (line 3) | class Users::ImportData::Exports method initialize (line 4) | def initialize(user, exports_data, files_directory) method call (line 10) | def call method import_single_export (line 34) | def import_single_export(export_data) method already_imported? (line 48) | def already_imported?(export_data) method valid_export_data? (line 56) | def valid_export_data?(export_data) method create_export_record (line 61) | def create_export_record(export_data) method prepare_export_attributes (line 66) | def prepare_export_attributes(export_data) method restore_export_file (line 76) | def restore_export_file(export_record, export_data) FILE: app/services/users/import_data/imports.rb class Users::ImportData::Imports (line 3) | class Users::ImportData::Imports method initialize (line 4) | def initialize(user, imports_data, files_directory) method call (line 10) | def call method create_import_record (line 48) | def create_import_record(import_data) method prepare_import_attributes (line 63) | def prepare_import_attributes(import_data) method restore_import_file (line 74) | def restore_import_file(import_record, import_data) FILE: app/services/users/import_data/notifications.rb class Users::ImportData::Notifications (line 3) | class Users::ImportData::Notifications method initialize (line 6) | def initialize(user, notifications_data) method call (line 11) | def call method filter_and_prepare_notifications (line 39) | def filter_and_prepare_notifications method prepare_notification_attributes (line 62) | def prepare_notification_attributes(notification_data) method filter_existing_notifications (line 78) | def filter_existing_notifications(notifications) method build_existing_notifications_lookup (line 99) | def build_existing_notifications_lookup method normalize_timestamp (line 111) | def normalize_timestamp(timestamp) method bulk_import_notifications (line 123) | def bulk_import_notifications(notifications) method valid_notification_data? (line 149) | def valid_notification_data?(notification_data) FILE: app/services/users/import_data/places.rb class Users::ImportData::Places (line 3) | class Users::ImportData::Places method initialize (line 6) | def initialize(user, places_data = nil, batch_size: BATCH_SIZE, logger... method call (line 15) | def call method add (line 25) | def add(place_data) method finalize (line 32) | def finalize method enumerate (line 42) | def enumerate(collection, &block) method collection_description (line 46) | def collection_description(collection) method flush_batch (line 52) | def flush_batch method find_or_create_place_for_import (line 64) | def find_or_create_place_for_import(place_data) FILE: app/services/users/import_data/points.rb class Users::ImportData::Points (line 5) | class Users::ImportData::Points method initialize (line 8) | def initialize(user, points_data = nil, batch_size: BATCH_SIZE, logger... method call (line 25) | def call method add (line 38) | def add(point_data) method finalize (line 58) | def finalize method enumerate (line 73) | def enumerate(collection, &block) method collection_description (line 77) | def collection_description(collection) method flush_batch (line 83) | def flush_batch method preload_reference_data (line 116) | def preload_reference_data method normalize_point_keys (line 146) | def normalize_point_keys(points) method valid_point_data? (line 156) | def valid_point_data?(point_data) method prepare_point_attributes (line 171) | def prepare_point_attributes(point_data) method resolve_import_reference (line 203) | def resolve_import_reference(attributes, import_reference) method resolve_country_reference (line 224) | def resolve_country_reference(attributes, country_info) method resolve_visit_reference (line 240) | def resolve_visit_reference(attributes, visit_reference) method ensure_lonlat_field (line 262) | def ensure_lonlat_field(attributes, point_data) method normalize_timestamp_for_lookup (line 271) | def normalize_timestamp_for_lookup(timestamp) FILE: app/services/users/import_data/raw_data_archives.rb class Users::ImportData::RawDataArchives (line 3) | class Users::ImportData::RawDataArchives method initialize (line 4) | def initialize(user, archives_data, files_directory) method call (line 10) | def call method find_existing_archive (line 47) | def find_existing_archive(archive_data) method create_archive_record (line 55) | def create_archive_record(archive_data) method restore_archive_file (line 63) | def restore_archive_file(archive_record, archive_data) FILE: app/services/users/import_data/settings.rb class Users::ImportData::Settings (line 3) | class Users::ImportData::Settings method initialize (line 4) | def initialize(user, settings_data) method call (line 9) | def call FILE: app/services/users/import_data/stats.rb class Users::ImportData::Stats (line 3) | class Users::ImportData::Stats method initialize (line 6) | def initialize(user, stats_data) method call (line 11) | def call method filter_and_prepare_stats (line 39) | def filter_and_prepare_stats method prepare_stat_attributes (line 60) | def prepare_stat_attributes(stat_data) method filter_existing_stats (line 75) | def filter_existing_stats(stats) method bulk_import_stats (line 95) | def bulk_import_stats(stats) method valid_stat_data? (line 119) | def valid_stat_data?(stat_data) FILE: app/services/users/import_data/taggings.rb class Users::ImportData::Taggings (line 3) | class Users::ImportData::Taggings method initialize (line 4) | def initialize(user, taggings_data) method call (line 9) | def call method find_tag (line 48) | def find_tag(tagging_data) method find_taggable (line 55) | def find_taggable(tagging_data) method find_place (line 68) | def find_place(tagging_data) FILE: app/services/users/import_data/tags.rb class Users::ImportData::Tags (line 3) | class Users::ImportData::Tags method initialize (line 4) | def initialize(user, tags_data) method call (line 9) | def call FILE: app/services/users/import_data/tracks.rb class Users::ImportData::Tracks (line 3) | class Users::ImportData::Tracks method initialize (line 4) | def initialize(user, tracks_data) method call (line 9) | def call method find_existing_track (line 49) | def find_existing_track(track_data) method create_track_record (line 57) | def create_track_record(track_data) method create_segments (line 63) | def create_segments(track, segments_data) FILE: app/services/users/import_data/trips.rb class Users::ImportData::Trips (line 3) | class Users::ImportData::Trips method initialize (line 6) | def initialize(user, trips_data) method call (line 11) | def call method filter_and_prepare_trips (line 39) | def filter_and_prepare_trips method prepare_trip_attributes (line 60) | def prepare_trip_attributes(trip_data) method filter_existing_trips (line 74) | def filter_existing_trips(trips) method normalize_timestamp (line 94) | def normalize_timestamp(timestamp) method bulk_import_trips (line 107) | def bulk_import_trips(trips) method valid_trip_data? (line 131) | def valid_trip_data?(trip_data) method validate_trip_name (line 144) | def validate_trip_name(trip_data) method validate_trip_started_at (line 153) | def validate_trip_started_at(trip_data) method validate_trip_ended_at (line 162) | def validate_trip_ended_at(trip_data) FILE: app/services/users/import_data/v1_handler.rb class Users::ImportData::V1Handler (line 27) | class Users::ImportData::V1Handler method initialize (line 31) | def initialize(user, import_directory, import_stats) method process (line 38) | def process method handle_section (line 63) | def handle_section(key, value) method handle_stream_value (line 88) | def handle_stream_value(section, value) method finish_stream (line 102) | def finish_stream(section) method initialize_stream_state (line 117) | def initialize_stream_state method finalize_stream_processing (line 123) | def finalize_stream_processing method queue_place_for_import (line 134) | def queue_place_for_import(place_data) method flush_places_batch (line 145) | def flush_places_batch method import_places_batch (line 152) | def import_places_batch(batch) method append_to_stream (line 158) | def append_to_stream(section, value) method stream_writer (line 165) | def stream_writer(section) method stream_temp_path (line 175) | def stream_temp_path(section) method close_stream_writer (line 179) | def close_stream_writer(section) method process_visits_stream (line 185) | def process_visits_stream method import_visits_batch (line 206) | def import_visits_batch(batch) method process_points_stream (line 211) | def process_points_stream method import_settings (line 228) | def import_settings(settings_data) method import_areas (line 234) | def import_areas(areas_data) method import_imports (line 240) | def import_imports(imports_data) method import_exports (line 249) | def import_exports(exports_data) method import_trips (line 258) | def import_trips(trips_data) method import_stats_section (line 264) | def import_stats_section(stats_data) method import_notifications (line 270) | def import_notifications(notifications_data) FILE: app/services/users/import_data/v2_handler.rb class Users::ImportData::V2Handler (line 37) | class Users::ImportData::V2Handler method initialize (line 40) | def initialize(user, import_directory, import_stats) method process (line 47) | def process method expected_counts (line 72) | def expected_counts method load_manifest (line 80) | def load_manifest method import_settings (line 90) | def import_settings method import_areas (line 107) | def import_areas method import_places (line 114) | def import_places method import_tags (line 139) | def import_tags method import_taggings (line 146) | def import_taggings method import_imports (line 153) | def import_imports method import_exports (line 163) | def import_exports method import_trips (line 173) | def import_trips method import_notifications (line 180) | def import_notifications method import_stats_from_files (line 187) | def import_stats_from_files method import_digests_from_files (line 213) | def import_digests_from_files method import_tracks_from_files (line 237) | def import_tracks_from_files method import_raw_data_archives (line 261) | def import_raw_data_archives method import_visits_from_files (line 271) | def import_visits_from_files method import_visits_from_monthly_file (line 290) | def import_visits_from_monthly_file(relative_path) method import_visits_batch (line 310) | def import_visits_batch(batch) method import_points_from_files (line 315) | def import_points_from_files method import_jsonl_file (line 355) | def import_jsonl_file(filename) method read_jsonl_file (line 363) | def read_jsonl_file(file_path) FILE: app/services/users/import_data/visits.rb class Users::ImportData::Visits (line 3) | class Users::ImportData::Visits method initialize (line 4) | def initialize(user, visits_data) method call (line 9) | def call method find_existing_visit (line 49) | def find_existing_visit(visit_data) method create_visit_record (line 57) | def create_visit_record(visit_data) method prepare_visit_attributes (line 62) | def prepare_visit_attributes(visit_data) method find_or_create_referenced_place (line 73) | def find_or_create_referenced_place(place_reference) FILE: app/services/users/safe_settings.rb class Users::SafeSettings (line 3) | class Users::SafeSettings method initialize (line 57) | def initialize(settings = {}, plan: nil) method config (line 62) | def config method fog_of_war_meters (line 95) | def fog_of_war_meters method meters_between_routes (line 99) | def meters_between_routes method preferred_map_layer (line 103) | def preferred_map_layer method speed_colored_routes (line 107) | def speed_colored_routes method points_rendering_mode (line 111) | def points_rendering_mode method minutes_between_routes (line 115) | def minutes_between_routes method time_threshold_minutes (line 119) | def time_threshold_minutes method merge_threshold_minutes (line 123) | def merge_threshold_minutes method live_map_enabled (line 127) | def live_map_enabled method route_opacity (line 131) | def route_opacity method immich_url (line 135) | def immich_url method immich_api_key (line 139) | def immich_api_key method photoprism_url (line 143) | def photoprism_url method photoprism_api_key (line 147) | def photoprism_api_key method immich_skip_ssl_verification (line 151) | def immich_skip_ssl_verification method photoprism_skip_ssl_verification (line 155) | def photoprism_skip_ssl_verification method maps (line 159) | def maps method distance_unit (line 163) | def distance_unit method visits_suggestions_enabled? (line 167) | def visits_suggestions_enabled? method speed_color_scale (line 171) | def speed_color_scale method fog_of_war_threshold (line 175) | def fog_of_war_threshold method enabled_map_layers (line 179) | def enabled_map_layers method maps_maplibre_style (line 184) | def maps_maplibre_style method globe_projection (line 188) | def globe_projection method digest_emails_enabled? (line 194) | def digest_emails_enabled? method news_emails_enabled? (line 201) | def news_emails_enabled? method supporter_email (line 208) | def supporter_email method show_supporter_badge? (line 212) | def show_supporter_badge? method transportation_thresholds (line 219) | def transportation_thresholds method transportation_expert_thresholds (line 223) | def transportation_expert_thresholds method transportation_expert_mode? (line 227) | def transportation_expert_mode? method min_minutes_spent_in_city (line 231) | def min_minutes_spent_in_city method max_gap_minutes_in_city (line 235) | def max_gap_minutes_in_city method timezone (line 239) | def timezone method lite? (line 245) | def lite? FILE: app/services/users/transportation_thresholds_updater.rb type Users (line 3) | module Users class TransportationThresholdsUpdater (line 6) | class TransportationThresholdsUpdater method initialize (line 11) | def initialize(user, settings_params) method call (line 17) | def call method recalculation_in_progress? (line 29) | def recalculation_in_progress? method capture_current_thresholds (line 35) | def capture_current_thresholds method apply_settings (line 39) | def apply_settings method sanitize_gated_layers (line 49) | def sanitize_gated_layers method trigger_recalculation_if_needed (line 56) | def trigger_recalculation_if_needed method thresholds_changed? (line 63) | def thresholds_changed? method threshold_params_present? (line 71) | def threshold_params_present? method status_manager (line 75) | def status_manager method locked_result (line 79) | def locked_result method failure_result (line 87) | def failure_result method success_result (line 95) | def success_result FILE: app/services/visits/bulk_update.rb type Visits (line 3) | module Visits class BulkUpdate (line 4) | class BulkUpdate method initialize (line 7) | def initialize(user, visit_ids, status) method call (line 14) | def call method validate (line 23) | def validate method update_visits (line 34) | def update_visits FILE: app/services/visits/create.rb type Visits (line 3) | module Visits class Create (line 4) | class Create method initialize (line 7) | def initialize(user, params) method call (line 14) | def call method find_or_create_place (line 37) | def find_or_create_place method find_existing_place (line 45) | def find_existing_place method create_new_place (line 54) | def create_new_place method create_visit (line 71) | def create_visit(place) FILE: app/services/visits/creator.rb type Visits (line 3) | module Visits class Creator (line 5) | class Creator method initialize (line 8) | def initialize(user) method create_visits (line 12) | def create_visits(visits) method find_existing_confirmed_visit (line 59) | def find_existing_confirmed_visit(visit_data) method associate_suggested_places (line 94) | def associate_suggested_places(visit, suggested_places) method find_matching_area (line 112) | def find_matching_area(visit_data) method near_area? (line 118) | def near_area?(center, area) method generate_visit_name (line 127) | def generate_visit_name(area, place, suggested_name) FILE: app/services/visits/detector.rb type Visits (line 3) | module Visits class Detector (line 5) | class Detector method initialize (line 12) | def initialize(points) method detect_potential_visits (line 17) | def detect_potential_visits method initialize_visit (line 44) | def initialize_visit(point) method belongs_to_current_visit? (line 54) | def belongs_to_current_visit?(point, visit) method calculate_max_radius (line 71) | def calculate_max_radius(duration_seconds) method valid_visit? (line 79) | def valid_visit?(visit) method finalize_visit (line 84) | def finalize_visit(visit) method calculate_center (line 97) | def calculate_center(points) method calculate_visit_radius (line 105) | def calculate_visit_radius(points, center) method suggest_place_name (line 114) | def suggest_place_name(points) method fetch_place_name (line 118) | def fetch_place_name(center) FILE: app/services/visits/find_in_time.rb type Visits (line 3) | module Visits class FindInTime (line 4) | class FindInTime method initialize (line 5) | def initialize(user, params) method call (line 11) | def call method parse_time (line 22) | def parse_time(time_string) FILE: app/services/visits/find_within_bounding_box.rb type Visits (line 3) | module Visits class FindWithinBoundingBox (line 5) | class FindWithinBoundingBox method initialize (line 6) | def initialize(user, params) method call (line 14) | def call FILE: app/services/visits/finder.rb type Visits (line 3) | module Visits class Finder (line 5) | class Finder method initialize (line 6) | def initialize(user, params) method call (line 11) | def call method area_selected? (line 23) | def area_selected? FILE: app/services/visits/group.rb class Visits::Group (line 3) | class Visits::Group method initialize (line 4) | def initialize(time_threshold_minutes: 30, merge_threshold_minutes: 15) method call (line 11) | def call(points, already_sorted: false) method process_points (line 20) | def process_points(sorted_points) method process_point (line 24) | def process_point(point) method start_new_visit (line 31) | def start_new_visit(point_time, point) method handle_existing_visit (line 38) | def handle_existing_visit(point_time, point) method calculate_time_difference (line 50) | def calculate_time_difference(point_time) method finalize_current_visit (line 54) | def finalize_current_visit method merge_visits (line 67) | def merge_visits method merge_visit (line 90) | def merge_visit(previous_visit, current_visit) method convert_to_hash (line 95) | def convert_to_hash method format_time_range (line 101) | def format_time_range(visit) method format_time (line 107) | def format_time(timestamp) method log_point_processing (line 111) | def log_point_processing(point_time) method log_new_visit (line 115) | def log_new_visit(point_time) method log_time_difference (line 119) | def log_time_difference(time_difference) method log_valid_visit (line 123) | def log_valid_visit method log_invalid_visit (line 127) | def log_invalid_visit FILE: app/services/visits/merge_service.rb type Visits (line 3) | module Visits class MergeService (line 5) | class MergeService method initialize (line 8) | def initialize(visits) method call (line 16) | def call method add_error (line 24) | def add_error(message) method merge_visits (line 29) | def merge_visits method prepare_base_visit (line 44) | def prepare_base_visit method update_base_visit (line 58) | def update_base_visit(base_visit) method reassign_points (line 70) | def reassign_points(base_visit, visits) FILE: app/services/visits/merger.rb type Visits (line 3) | module Visits class Merger (line 5) | class Merger method initialize (line 11) | def initialize(points) method merge_visits (line 15) | def merge_visits(visits) method can_merge_visits? (line 38) | def can_merge_visits?(first_visit, second_visit) method same_location? (line 46) | def same_location?(first_visit, second_visit) method gap_too_large? (line 57) | def gap_too_large?(first_visit, second_visit) method significant_movement_between? (line 62) | def significant_movement_between?(first_visit, second_visit) FILE: app/services/visits/names/builder.rb type Visits (line 3) | module Visits type Names (line 4) | module Names class Builder (line 6) | class Builder method build_from_properties (line 7) | def self.build_from_properties(properties) method initialize (line 21) | def initialize(features, feature_type, name) method call (line 27) | def call method feature (line 43) | def feature method find_feature (line 47) | def find_feature method find_feature_by_osm_value (line 54) | def find_feature_by_osm_value method properties (line 61) | def properties FILE: app/services/visits/names/fetcher.rb type Visits (line 3) | module Visits type Names (line 4) | module Names class Fetcher (line 6) | class Fetcher method initialize (line 7) | def initialize(center) method call (line 11) | def call method geocoder_results (line 21) | def geocoder_results method build_place_name (line 31) | def build_place_name method features (line 50) | def features method properties (line 58) | def properties FILE: app/services/visits/names/suggester.rb type Visits (line 3) | module Visits type Names (line 4) | module Names class Suggester (line 6) | class Suggester method initialize (line 7) | def initialize(points) method call (line 11) | def call method extract_geocoded_points (line 33) | def extract_geocoded_points(points) method extract_features (line 37) | def extract_features(geocoded_points) method find_most_common_feature_type (line 45) | def find_most_common_feature_type(features) method find_most_common_name (line 51) | def find_most_common_name(features, feature_type) FILE: app/services/visits/place_finder.rb type Visits (line 3) | module Visits class PlaceFinder (line 5) | class PlaceFinder method initialize (line 12) | def initialize(user) method find_or_create_place (line 16) | def find_or_create_place(visit_data) method find_existing_place (line 49) | def find_existing_place(lat, lon, name) method collect_potential_places (line 63) | def collect_potential_places(visit_data) method extract_places_from_points (line 87) | def extract_places_from_points(points) method create_place_from_point (line 106) | def create_place_from_point(point) method reverse_geocoded_places (line 142) | def reverse_geocoded_places(lat, lon) method create_place_from_api_result (line 162) | def create_place_from_api_result(result) method select_or_create_main_place (line 198) | def select_or_create_main_place(potential_places, lat, lon, suggeste... method create_default_place (line 210) | def create_default_place(lat, lon, suggested_name) method find_suggested_places (line 226) | def find_suggested_places(lat, lon) method build_place_name (line 232) | def build_place_name(properties) method place_name_exists? (line 251) | def place_name_exists?(places, name) FILE: app/services/visits/smart_detect.rb type Visits (line 3) | module Visits class SmartDetect (line 5) | class SmartDetect method initialize (line 12) | def initialize(user, start_at:, end_at:) method call (line 21) | def call method group_nearby_visits (line 33) | def group_nearby_visits(visits) FILE: app/services/visits/suggest.rb class Visits::Suggest (line 3) | class Visits::Suggest method initialize (line 6) | def initialize(user, start_at:, end_at:) method call (line 13) | def call method create_visits_notification (line 35) | def create_visits_notification(user) FILE: app/services/visits/time_chunks.rb type Visits (line 3) | module Visits class TimeChunks (line 4) | class TimeChunks method initialize (line 5) | def initialize(start_at:, end_at:) method call (line 11) | def call method start_in_future? (line 39) | def start_in_future? method same_year? (line 43) | def same_year? FILE: config/application.rb type Dawarich (line 11) | module Dawarich class Application (line 12) | class Application < Rails::Application FILE: config/initializers/00_random.rb class Random (line 4) | class Random method gen_random_openssl (line 11) | def gen_random_openssl(num_bytes) FILE: config/initializers/03_dawarich_settings.rb class DawarichSettings (line 3) | class DawarichSettings method reverse_geocoding_enabled? (line 8) | def reverse_geocoding_enabled? method photon_enabled? (line 12) | def photon_enabled? method photon_uses_komoot_io? (line 16) | def photon_uses_komoot_io? method geoapify_enabled? (line 20) | def geoapify_enabled? method locationiq_enabled? (line 24) | def locationiq_enabled? method self_hosted? (line 28) | def self_hosted? method prometheus_exporter_enabled? (line 32) | def prometheus_exporter_enabled? method nominatim_enabled? (line 39) | def nominatim_enabled? method store_geodata? (line 43) | def store_geodata? method family_feature_enabled? (line 47) | def family_feature_enabled? method oidc_enabled? (line 54) | def oidc_enabled? method features (line 58) | def features method archive_raw_data_enabled? (line 65) | def archive_raw_data_enabled? method registration_enabled? (line 69) | def registration_enabled? method set_registration_enabled (line 73) | def set_registration_enabled(enabled) FILE: config/initializers/dns_cache.rb function getaddress (line 13) | def getaddress(name) function ip_address? (line 28) | def ip_address?(name) FILE: config/initializers/httparty.rb function warn_about_nil_deprecation (line 7) | def warn_about_nil_deprecation; end FILE: config/initializers/rack_attack.rb class Rack::Attack (line 13) | class Rack::Attack FILE: db/data/20240525110530_bind_existing_points_to_first_user.rb class BindExistingPointsToFirstUser (line 3) | class BindExistingPointsToFirstUser < ActiveRecord::Migration[7.1] method up (line 4) | def up method down (line 16) | def down FILE: db/data/20240610170930_remove_points_without_coordinates.rb class RemovePointsWithoutCoordinates (line 3) | class RemovePointsWithoutCoordinates < ActiveRecord::Migration[7.1] method up (line 4) | def up method down (line 18) | def down FILE: db/data/20240625201842_add_fog_of_war_meters_to_settings.rb class AddFogOfWarMetersToSettings (line 3) | class AddFogOfWarMetersToSettings < ActiveRecord::Migration[7.1] method up (line 4) | def up method down (line 11) | def down FILE: db/data/20240713103122_make_first_user_admin.rb class MakeFirstUserAdmin (line 3) | class MakeFirstUserAdmin < ActiveRecord::Migration[7.1] method up (line 4) | def up method down (line 9) | def down FILE: db/data/20240724141417_add_visit_settings_to_user.rb class AddVisitSettingsToUser (line 3) | class AddVisitSettingsToUser < ActiveRecord::Migration[7.1] method up (line 4) | def up method down (line 14) | def down FILE: db/data/20240730130922_add_route_opacity_to_settings.rb class AddRouteOpacityToSettings (line 3) | class AddRouteOpacityToSettings < ActiveRecord::Migration[7.1] method up (line 4) | def up method down (line 11) | def down FILE: db/data/20240808133112_run_initial_visit_suggestion.rb class RunInitialVisitSuggestion (line 3) | class RunInitialVisitSuggestion < ActiveRecord::Migration[7.1] method up (line 4) | def up method down (line 13) | def down FILE: db/data/20240815174852_add_owntracks_points_data.rb class AddOwntracksPointsData (line 3) | class AddOwntracksPointsData < ActiveRecord::Migration[7.1] method up (line 4) | def up method down (line 37) | def down method update_point (line 43) | def update_point(point, params) FILE: db/data/20240822094532_add_counter_cache_to_imports.rb class AddCounterCacheToImports (line 3) | class AddCounterCacheToImports < ActiveRecord::Migration[7.1] method up (line 4) | def up method down (line 10) | def down FILE: db/data/20241022100309_add_points_rendering_mode_to_settings.rb class AddPointsRenderingModeToSettings (line 3) | class AddPointsRenderingModeToSettings < ActiveRecord::Migration[7.2] method up (line 4) | def up method down (line 11) | def down FILE: db/data/20241107112451_add_live_map_enabled_to_settings.rb class AddLiveMapEnabledToSettings (line 3) | class AddLiveMapEnabledToSettings < ActiveRecord::Migration[7.2] method up (line 4) | def up method down (line 11) | def down FILE: db/data/20241202125248_set_reverse_geocoded_at_for_points.rb class SetReverseGeocodedAtForPoints (line 3) | class SetReverseGeocodedAtForPoints < ActiveRecord::Migration[7.2] method up (line 4) | def up method down (line 8) | def down FILE: db/data/20241206163450_create_telemetry_notification.rb class CreateTelemetryNotification (line 3) | class CreateTelemetryNotification < ActiveRecord::Migration[7.2] method up (line 4) | def up; end method down (line 6) | def down; end FILE: db/data/20250104204852_create_photon_load_notification.rb class CreatePhotonLoadNotification (line 3) | class CreatePhotonLoadNotification < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 14) | def down method notification_content (line 20) | def notification_content FILE: db/data/20250120154554_remove_duplicate_points.rb class RemoveDuplicatePoints (line 3) | class RemoveDuplicatePoints < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 27) | def down FILE: db/data/20250123151849_create_paths_for_trips.rb class CreatePathsForTrips (line 3) | class CreatePathsForTrips < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 10) | def down FILE: db/data/20250222213848_migrate_points_latlon.rb class MigratePointsLatlon (line 3) | class MigratePointsLatlon < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 10) | def down FILE: db/data/20250226192005_activate_selfhosted_users.rb class ActivateSelfhostedUsers (line 3) | class ActivateSelfhostedUsers < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 10) | def down FILE: db/data/20250303194123_migrate_places_lonlat.rb class MigratePlacesLonlat (line 3) | class MigratePlacesLonlat < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 10) | def down FILE: db/data/20250403204658_update_imports_points_count.rb class UpdateImportsPointsCount (line 3) | class UpdateImportsPointsCount < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 10) | def down FILE: db/data/20250404182629_set_active_until_for_selfhosted_users.rb class SetActiveUntilForSelfhostedUsers (line 3) | class SetActiveUntilForSelfhostedUsers < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 11) | def down FILE: db/data/20250516180933_set_points_country_ids.rb class SetPointsCountryIds (line 3) | class SetPointsCountryIds < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 8) | def down FILE: db/data/20250518173936_fix_france_codes.rb class FixFranceCodes (line 3) | class FixFranceCodes < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 8) | def down FILE: db/data/20250518174305_set_default_distance_unit_for_user.rb class SetDefaultDistanceUnitForUser (line 3) | class SetDefaultDistanceUnitForUser < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 21) | def down FILE: db/data/20250704185707_create_tracks_from_points.rb class CreateTracksFromPoints (line 3) | class CreateTracksFromPoints < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 10) | def down FILE: db/data/20250709195003_recalculate_trips_distance.rb class RecalculateTripsDistance (line 3) | class RecalculateTripsDistance < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 8) | def down FILE: db/data/20250720171241_recalculate_stats_after_changing_distance_units.rb class RecalculateStatsAfterChangingDistanceUnits (line 3) | class RecalculateStatsAfterChangingDistanceUnits < ActiveRecord::Migrati... method up (line 4) | def up method down (line 8) | def down FILE: db/migrate/20220325100310_devise_create_users.rb class DeviseCreateUsers (line 3) | class DeviseCreateUsers < ActiveRecord::Migration[7.0] method change (line 4) | def change FILE: db/migrate/20231021104256_add_service_name_to_active_storage_blobs.active_storage.rb class AddServiceNameToActiveStorageBlobs (line 4) | class AddServiceNameToActiveStorageBlobs < ActiveRecord::Migration[6.0] method up (line 5) | def up method down (line 19) | def down FILE: db/migrate/20231021104257_create_active_storage_variant_records.active_storage.rb class CreateActiveStorageVariantRecords (line 4) | class CreateActiveStorageVariantRecords < ActiveRecord::Migration[6.0] method change (line 5) | def change method primary_key_type (line 20) | def primary_key_type method blobs_primary_key_type (line 25) | def blobs_primary_key_type FILE: db/migrate/20231021104258_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb class RemoveNotNullOnActiveStorageBlobsChecksum (line 4) | class RemoveNotNullOnActiveStorageBlobsChecksum < ActiveRecord::Migratio... method change (line 5) | def change FILE: db/migrate/20240315213523_create_points.rb class CreatePoints (line 3) | class CreatePoints < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240315215423_create_imports.rb class CreateImports (line 3) | class CreateImports < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240317171559_add_indicies_to_points_latitude_longitude.rb class AddIndiciesToPointsLatitudeLongitude (line 3) | class AddIndiciesToPointsLatitudeLongitude < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240323125126_add_raw_points_and_doubles_to_import.rb class AddRawPointsAndDoublesToImport (line 3) | class AddRawPointsAndDoublesToImport < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240323160300_create_stats.rb class CreateStats (line 3) | class CreateStats < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240323161049_add_index_to_points_timestamp.rb class AddIndexToPointsTimestamp (line 3) | class AddIndexToPointsTimestamp < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240323190039_add_user_id_to_stat.rb class AddUserIdToStat (line 3) | class AddUserIdToStat < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240324161309_create_active_storage_tables.active_storage.rb class CreateActiveStorageTables (line 4) | class CreateActiveStorageTables < ActiveRecord::Migration[7.0] method change (line 5) | def change method primary_and_foreign_key_types (line 54) | def primary_and_foreign_key_types FILE: db/migrate/20240324161800_add_processed_to_imports.rb class AddProcessedToImports (line 3) | class AddProcessedToImports < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240324173315_add_daily_distance_to_stat.rb class AddDailyDistanceToStat (line 3) | class AddDailyDistanceToStat < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240404154959_add_api_key_to_users.rb class AddApiKeyToUsers (line 3) | class AddApiKeyToUsers < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240425200155_add_raw_data_to_imports.rb class AddRawDataToImports (line 3) | class AddRawDataToImports < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240518095848_add_theme_to_users.rb class AddThemeToUsers (line 3) | class AddThemeToUsers < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240525110244_add_user_id_to_points.rb class AddUserIdToPoints (line 3) | class AddUserIdToPoints < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240612152451_create_exports.rb class CreateExports (line 3) | class CreateExports < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240620205120_add_settings_to_users.rb class AddSettingsToUsers (line 3) | class AddSettingsToUsers < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240630093005_add_fog_of_war_to_default_settings.rb class AddFogOfWarToDefaultSettings (line 3) | class AddFogOfWarToDefaultSettings < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240703105734_create_notifications.rb class CreateNotifications (line 3) | class CreateNotifications < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240712141303_add_geodata_to_points.rb class AddGeodataToPoints (line 3) | class AddGeodataToPoints < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240713103051_add_admin_to_users.rb class AddAdminToUsers (line 3) | class AddAdminToUsers < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240721165313_create_areas.rb class CreateAreas (line 3) | class CreateAreas < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240721183005_create_visits.rb class CreateVisits (line 3) | class CreateVisits < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240721183116_add_visit_id_to_points.rb class AddVisitIdToPoints (line 3) | class AddVisitIdToPoints < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240805150111_create_places.rb class CreatePlaces (line 3) | class CreatePlaces < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240808102348_add_place_id_to_visits.rb class AddPlaceIdToVisits (line 3) | class AddPlaceIdToVisits < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240808102425_make_area_id_optional_in_visits.rb class MakeAreaIdOptionalInVisits (line 3) | class MakeAreaIdOptionalInVisits < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240808121027_create_place_visits.rb class CreatePlaceVisits (line 3) | class CreatePlaceVisits < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20240822092405_add_points_count_to_imports.rb class AddPointsCountToImports (line 3) | class AddPointsCountToImports < ActiveRecord::Migration[7.1] method change (line 4) | def change FILE: db/migrate/20241127161621_create_trips.rb class CreateTrips (line 3) | class CreateTrips < ActiveRecord::Migration[7.2] method change (line 4) | def change FILE: db/migrate/20241128095325_create_action_text_tables.action_text.rb class CreateActionTextTables (line 4) | class CreateActionTextTables < ActiveRecord::Migration[6.0] method change (line 5) | def change method primary_and_foreign_key_types (line 22) | def primary_and_foreign_key_types FILE: db/migrate/20241202114820_add_reverse_geocoded_at_to_points.rb class AddReverseGeocodedAtToPoints (line 3) | class AddReverseGeocodedAtToPoints < ActiveRecord::Migration[7.2] method change (line 6) | def change FILE: db/migrate/20241205160055_add_devise_trackable_columns_to_users.rb class AddDeviseTrackableColumnsToUsers (line 3) | class AddDeviseTrackableColumnsToUsers < ActiveRecord::Migration[7.2] method change (line 4) | def change FILE: db/migrate/20241211113119_add_started_at_index_to_visits.rb class AddStartedAtIndexToVisits (line 3) | class AddStartedAtIndexToVisits < ActiveRecord::Migration[7.2] method change (line 6) | def change FILE: db/migrate/20241226202204_add_database_users_constraints.rb class AddDatabaseUsersConstraints (line 3) | class AddDatabaseUsersConstraints < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20241226202831_validate_add_database_users_constraints.rb class ValidateAddDatabaseUsersConstraints (line 3) | class ValidateAddDatabaseUsersConstraints < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 10) | def down FILE: db/migrate/20250120152014_add_course_and_course_accuracy_to_points.rb class AddCourseAndCourseAccuracyToPoints (line 3) | class AddCourseAndCourseAccuracyToPoints < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250120152540_add_external_track_id_to_points.rb class AddExternalTrackIdToPoints (line 3) | class AddExternalTrackIdToPoints < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20250120154555_add_unique_index_to_points.rb class AddUniqueIndexToPoints (line 3) | class AddUniqueIndexToPoints < ActiveRecord::Migration[8.0] method up (line 6) | def up method down (line 31) | def down FILE: db/migrate/20250123145155_enable_postgis_extension.rb class EnablePostgisExtension (line 3) | class EnablePostgisExtension < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250123151657_add_path_to_trips.rb class AddPathToTrips (line 3) | class AddPathToTrips < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250219195822_add_status_to_users.rb class AddStatusToUsers (line 3) | class AddStatusToUsers < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250221181805_add_lonlat_to_points.rb class AddLonlatToPoints (line 3) | class AddLonlatToPoints < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250221185032_add_lonlat_index.rb class AddLonlatIndex (line 3) | class AddLonlatIndex < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20250221194430_remove_points_latitude_longitude_uniqueness_index.rb class RemovePointsLatitudeLongitudeUniquenessIndex (line 3) | class RemovePointsLatitudeLongitudeUniquenessIndex < ActiveRecord::Migra... method up (line 6) | def up method down (line 17) | def down FILE: db/migrate/20250221194509_add_unique_lon_lat_index_to_points.rb class AddUniqueLonLatIndexToPoints (line 3) | class AddUniqueLonLatIndexToPoints < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20250303194009_add_lonlat_to_places.rb class AddLonlatToPlaces (line 3) | class AddLonlatToPlaces < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250303194043_add_lonlat_index_to_places.rb class AddLonlatIndexToPlaces (line 3) | class AddLonlatIndexToPlaces < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20250324180755_add_format_start_at_end_at_to_exports.rb class AddFormatStartAtEndAtToExports (line 3) | class AddFormatStartAtEndAtToExports < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250404182437_add_active_until_to_users.rb class AddActiveUntilToUsers (line 3) | class AddActiveUntilToUsers < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250513164521_add_visited_countries_to_trips.rb class AddVisitedCountriesToTrips (line 3) | class AddVisitedCountriesToTrips < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250515190752_create_countries.rb class CreateCountries (line 3) | class CreateCountries < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250515192211_add_country_id_to_points.rb class AddCountryIdToPoints (line 3) | class AddCountryIdToPoints < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20250625185030_add_file_type_to_exports.rb class AddFileTypeToExports (line 3) | class AddFileTypeToExports < ActiveRecord::Migration[8.0] method up (line 6) | def up method down (line 11) | def down FILE: db/migrate/20250627184017_add_status_to_imports.rb class AddStatusToImports (line 3) | class AddStatusToImports < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20250703193656_create_tracks.rb class CreateTracks (line 3) | class CreateTracks < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250703193657_add_track_id_to_points.rb class AddTrackIdToPoints (line 3) | class AddTrackIdToPoints < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20250721204404_add_index_on_places_geodata_osm_id.rb class AddIndexOnPlacesGeodataOsmId (line 3) | class AddIndexOnPlacesGeodataOsmId < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20250723164055_add_track_generation_composite_index.rb class AddTrackGenerationCompositeIndex (line 3) | class AddTrackGenerationCompositeIndex < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20250728191359_add_country_name_to_points.rb class AddCountryNameToPoints (line 3) | class AddCountryNameToPoints < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20250821192219_add_points_count_to_users.rb class AddPointsCountToUsers (line 3) | class AddPointsCountToUsers < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250823125940_remove_default_from_imports_source.rb class RemoveDefaultFromImportsSource (line 3) | class RemoveDefaultFromImportsSource < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250905120121_add_user_country_composite_index_to_points.rb class AddUserCountryCompositeIndexToPoints (line 3) | class AddUserCountryCompositeIndexToPoints < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20250910224538_add_sharing_fields_to_stats.rb class AddSharingFieldsToStats (line 3) | class AddSharingFieldsToStats < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 13) | def down FILE: db/migrate/20250910224714_add_index_to_stats_share_uuid.rb class AddIndexToStatsShareUuid (line 3) | class AddIndexToStatsShareUuid < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20250918215512_add_h3_hex_ids_to_stats.rb class AddH3HexIdsToStats (line 3) | class AddH3HexIdsToStats < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20250926220114_create_families.rb class CreateFamilies (line 3) | class CreateFamilies < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250926220135_create_family_memberships.rb class CreateFamilyMemberships (line 3) | class CreateFamilyMemberships < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250926220158_create_family_invitations.rb class CreateFamilyInvitations (line 3) | class CreateFamilyInvitations < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20250926220345_validate_family_foreign_keys.rb class ValidateFamilyForeignKeys (line 3) | class ValidateFamilyForeignKeys < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20251028130433_add_omniauth_to_users.rb class AddOmniauthToUsers (line 3) | class AddOmniauthToUsers < ActiveRecord::Migration[8.0] method up (line 6) | def up method down (line 12) | def down FILE: db/migrate/20251030190924_add_utm_parameters_to_users.rb class AddUtmParametersToUsers (line 3) | class AddUtmParametersToUsers < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20251116184506_add_user_id_to_places.rb class AddUserIdToPlaces (line 3) | class AddUserIdToPlaces < ActiveRecord::Migration[8.0] method up (line 6) | def up method down (line 13) | def down FILE: db/migrate/20251116184514_create_tags.rb class CreateTags (line 3) | class CreateTags < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20251116184520_create_taggings.rb class CreateTaggings (line 3) | class CreateTaggings < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20251118204141_add_privacy_radius_to_tags.rb class AddPrivacyRadiusToTags (line 3) | class AddPrivacyRadiusToTags < ActiveRecord::Migration[8.0] method up (line 6) | def up method down (line 14) | def down FILE: db/migrate/20251118210506_add_note_to_places.rb class AddNoteToPlaces (line 3) | class AddNoteToPlaces < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20251201192510_add_user_id_reverse_geocoded_at_index_to_points.rb class AddUserIdReverseGeocodedAtIndexToPoints (line 3) | class AddUserIdReverseGeocodedAtIndexToPoints < ActiveRecord::Migration[... method change (line 6) | def change FILE: db/migrate/20251206000001_create_points_raw_data_archives.rb class CreatePointsRawDataArchives (line 3) | class CreatePointsRawDataArchives < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20251206000002_add_archival_columns_to_points.rb class AddArchivalColumnsToPoints (line 3) | class AddArchivalColumnsToPoints < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20251206000004_validate_archival_foreign_keys.rb class ValidateArchivalForeignKeys (line 3) | class ValidateArchivalForeignKeys < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20251208210410_add_composite_index_to_stats.rb class AddCompositeIndexToStats (line 3) | class AddCompositeIndexToStats < ActiveRecord::Migration[8.0] method change (line 8) | def change FILE: db/migrate/20251210193532_add_verified_at_to_points_raw_data_archives.rb class AddVerifiedAtToPointsRawDataArchives (line 3) | class AddVerifiedAtToPointsRawDataArchives < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20251226170919_add_composite_index_to_points_user_id_timestamp.rb class AddCompositeIndexToPointsUserIdTimestamp (line 3) | class AddCompositeIndexToPointsUserIdTimestamp < ActiveRecord::Migration... method change (line 6) | def change FILE: db/migrate/20251227000001_create_digests.rb class CreateDigests (line 3) | class CreateDigests < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20251227223614_change_digests_distance_to_bigint.rb class ChangeDigestsDistanceToBigint (line 3) | class ChangeDigestsDistanceToBigint < ActiveRecord::Migration[8.0] method up (line 6) | def up method down (line 10) | def down FILE: db/migrate/20251228000000_remove_unused_indexes.rb class RemoveUnusedIndexes (line 3) | class RemoveUnusedIndexes < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20251228100000_add_performance_indexes.rb class AddPerformanceIndexes (line 3) | class AddPerformanceIndexes < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20251228163703_install_rails_pulse_tables.rb class InstallRailsPulseTables (line 4) | class InstallRailsPulseTables < ActiveRecord::Migration[8.0] method change (line 5) | def change FILE: db/migrate/20260103114630_add_indexes_to_points_for_stats_query.rb class AddIndexesToPointsForStatsQuery (line 3) | class AddIndexesToPointsForStatsQuery < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20260108192905_add_deleted_at_to_users.rb class AddDeletedAtToUsers (line 3) | class AddDeletedAtToUsers < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20260112192240_set_existing_users_to_map_v1.rb class SetExistingUsersToMapV1 (line 8) | class SetExistingUsersToMapV1 < ActiveRecord::Migration[8.0] method up (line 9) | def up method down (line 27) | def down FILE: db/migrate/20260113230537_set_points_timestamp_from_geojson_date.rb class SetPointsTimestampFromGeojsonDate (line 3) | class SetPointsTimestampFromGeojsonDate < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20260120193124_add_month_to_digests.rb class AddMonthToDigests (line 3) | class AddMonthToDigests < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20260120193200_create_track_segments.rb class CreateTrackSegments (line 3) | class CreateTrackSegments < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20260120193336_add_dominant_mode_to_tracks.rb class AddDominantModeToTracks (line 3) | class AddDominantModeToTracks < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20260120193401_add_travel_patterns_to_digests.rb class AddTravelPatternsToDigests (line 3) | class AddTravelPatternsToDigests < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20260120193501_change_tracks_distance_precision.rb class ChangeTracksDistancePrecision (line 3) | class ChangeTracksDistancePrecision < ActiveRecord::Migration[8.0] method up (line 10) | def up method down (line 16) | def down FILE: db/migrate/20260124221434_add_index_to_track_segments.rb class AddIndexToTrackSegments (line 3) | class AddIndexToTrackSegments < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20260125100000_enqueue_transportation_mode_backfill_jobs.rb class EnqueueTransportationModeBackfillJobs (line 3) | class EnqueueTransportationModeBackfillJobs < ActiveRecord::Migration[8.0] method up (line 11) | def up method down (line 16) | def down method enqueue_user_backfill_jobs (line 25) | def enqueue_user_backfill_jobs method enqueue_import_backfill_jobs (line 42) | def enqueue_import_backfill_jobs FILE: db/migrate/20260201000001_add_processing_started_at_to_exports_and_imports.rb class AddProcessingStartedAtToExportsAndImports (line 3) | class AddProcessingStartedAtToExportsAndImports < ActiveRecord::Migratio... method change (line 4) | def change FILE: db/migrate/20260201000002_add_error_message_to_exports.rb class AddErrorMessageToExports (line 3) | class AddErrorMessageToExports < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20260206202634_deduplicate_tracks.rb class DeduplicateTracks (line 3) | class DeduplicateTracks < ActiveRecord::Migration[8.0] method up (line 9) | def up method down (line 13) | def down method enqueue_deduplication_jobs (line 22) | def enqueue_deduplication_jobs FILE: db/migrate/20260216190000_add_unique_index_to_raw_data_archives.rb class AddUniqueIndexToRawDataArchives (line 3) | class AddUniqueIndexToRawDataArchives < ActiveRecord::Migration[8.0] method change (line 6) | def change FILE: db/migrate/20260217000000_optimize_points_indexes.rb class OptimizePointsIndexes (line 3) | class OptimizePointsIndexes < ActiveRecord::Migration[8.0] method up (line 6) | def up method down (line 27) | def down FILE: db/migrate/20260217000001_backfill_motion_data_from_raw_data.rb class BackfillMotionDataFromRawData (line 3) | class BackfillMotionDataFromRawData < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 8) | def down FILE: db/migrate/20260222215414_add_error_message_to_imports.rb class AddErrorMessageToImports (line 3) | class AddErrorMessageToImports < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20260301201446_add_plan_to_users.rb class AddPlanToUsers (line 3) | class AddPlanToUsers < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20260301202147_set_plan_for_existing_users.rb class SetPlanForExistingUsers (line 3) | class SetPlanForExistingUsers < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 16) | def down FILE: db/migrate/20260310000001_drop_redundant_indexes.rb class DropRedundantIndexes (line 3) | class DropRedundantIndexes < ActiveRecord::Migration[8.0] method up (line 6) | def up method down (line 29) | def down FILE: db/migrate/20260310000002_add_composite_indexes_and_drop_low_selectivity.rb class AddCompositeIndexesAndDropLowSelectivity (line 3) | class AddCompositeIndexesAndDropLowSelectivity < ActiveRecord::Migration... method up (line 6) | def up method down (line 35) | def down FILE: db/migrate/20260310000003_add_unique_index_to_place_visits.rb class AddUniqueIndexToPlaceVisits (line 3) | class AddUniqueIndexToPlaceVisits < ActiveRecord::Migration[8.0] method up (line 6) | def up method down (line 45) | def down FILE: db/migrate/20260310000006_fix_tracks_original_path_srid.rb class FixTracksOriginalPathSrid (line 3) | class FixTracksOriginalPathSrid < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 16) | def down FILE: db/migrate/20260313134546_create_family_location_requests.rb class CreateFamilyLocationRequests (line 3) | class CreateFamilyLocationRequests < ActiveRecord::Migration[8.0] method change (line 4) | def change FILE: db/migrate/20260314000001_fix_route_opacity_default.rb class FixRouteOpacityDefault (line 3) | class FixRouteOpacityDefault < ActiveRecord::Migration[8.0] method up (line 4) | def up method down (line 8) | def down FILE: db/migrate/20260315000001_backfill_onboarding_completed_for_existing_users.rb class BackfillOnboardingCompletedForExistingUsers (line 3) | class BackfillOnboardingCompletedForExistingUsers < ActiveRecord::Migrat... method up (line 4) | def up method down (line 8) | def down FILE: e2e/helpers/map.js function waitForMap (line 9) | async function waitForMap(page) { function enableLayer (line 26) | async function enableLayer(page, layerName) { function clickConfirmedVisit (line 54) | async function clickConfirmedVisit(page) { function clickSuggestedVisit (line 76) | async function clickSuggestedVisit(page) { function getMapZoom (line 98) | async function getMapZoom(page) { function openSettingsPanel (line 111) | async function openSettingsPanel(page) { function closeSettingsPanel (line 123) | async function closeSettingsPanel(page) { function hoverFirstRoute (line 136) | async function hoverFirstRoute(page) { function waitForMapLoad (line 164) | async function waitForMapLoad(page) { FILE: e2e/helpers/navigation.js function closeOnboardingModal (line 9) | async function closeOnboardingModal(page) { function navigateToMap (line 24) | async function navigateToMap(page) { function navigateToDate (line 35) | async function navigateToDate(page, startDate, endDate) { FILE: e2e/helpers/places.js function enablePlacesLayer (line 10) | async function enablePlacesLayer(page, enable) { function getPlacesLayerVisible (line 76) | async function getPlacesLayerVisible(page) { function createTestPlace (line 98) | async function createTestPlace(page, name, latitude, longitude) { FILE: e2e/helpers/selection.js function enableSelectionMode (line 9) | async function enableSelectionMode(page) { function drawSelectionRectangle (line 25) | async function drawSelectionRectangle(page, options = {}) { FILE: e2e/lite/plan-gates.spec.js function waitForToast (line 9) | async function waitForToast(page, substring, timeout = 5000) { function waitForBanner (line 20) | async function waitForBanner(page, substring, timeout = 5000) { FILE: e2e/map/map-add-visit.spec.js function waitForAddVisitController (line 8) | async function waitForAddVisitController(page) { FILE: e2e/map/map-calendar-panel.spec.js function clickCalendarButton (line 28) | async function clickCalendarButton(page) { function isPanelVisible (line 42) | async function isPanelVisible(page) { FILE: e2e/map/map-routes-tracks-selector.spec.js function selectorAvailable (line 17) | async function selectorAvailable(page) { FILE: e2e/map/map-side-panel.spec.js function clickDrawerButton (line 32) | async function clickDrawerButton(page) { function isDrawerOpen (line 42) | async function isDrawerOpen(page) { function selectAreaWithVisits (line 58) | async function selectAreaWithVisits(page) { FILE: e2e/v2/helpers/api.js constant BASE_URL (line 8) | const BASE_URL = process.env.BASE_URL || "http://localhost:3000" function resetMapSettings (line 17) | async function resetMapSettings(request, apiKey) { function enableFamilyInSettings (line 40) | async function enableFamilyInSettings(request, apiKey) { function sendOwnTracksPoint (line 66) | async function sendOwnTracksPoint( function waitForPointOnMap (line 110) | async function waitForPointOnMap( function waitForFamilyMemberOnMap (line 168) | async function waitForFamilyMemberOnMap( function waitForRecentPointVisible (line 217) | async function waitForRecentPointVisible(page, timeout = 15000) { function enableLiveMode (line 254) | async function enableLiveMode(page) { function waitForActionCableConnection (line 291) | async function waitForActionCableConnection(page, timeout = 10000) { function waitForPointsChannelConnected (line 326) | async function waitForPointsChannelConnected(page, timeout = 10000) { function getPointCount (line 361) | async function getPointCount(page) { FILE: e2e/v2/helpers/constants.js constant API_KEYS (line 6) | const API_KEYS = { constant TEST_USERS (line 14) | const TEST_USERS = { constant TEST_LOCATIONS (line 43) | const TEST_LOCATIONS = { FILE: e2e/v2/helpers/setup.js function disableGlobeProjection (line 10) | async function disableGlobeProjection(page) { function navigateToMapsV2 (line 36) | async function navigateToMapsV2(page) { function navigateToMapsV2WithDate (line 46) | async function navigateToMapsV2WithDate(page, startDate, endDate) { function waitForMapLibre (line 70) | async function waitForMapLibre(page, timeout = 15000) { function hasMapInstance (line 99) | async function hasMapInstance(page) { function getMapZoom (line 123) | async function getMapZoom(page) { function getMapCenter (line 146) | async function getMapCenter(page) { function getPointsSourceData (line 172) | async function getPointsSourceData(page) { function hasLayer (line 207) | async function hasLayer(page, layerId) { function clickMapAt (line 233) | async function clickMapAt(page, x, y) { function waitForLoadingComplete (line 242) | async function waitForLoadingComplete(page) { function hasPopup (line 270) | async function hasPopup(page) { function getLayerVisibility (line 281) | async function getLayerVisibility(page, layerId) { function getRoutesSourceData (line 307) | async function getRoutesSourceData(page) { function waitForSettingsPanel (line 341) | async function waitForSettingsPanel(page, timeout = 5000) { function waitForActiveTab (line 354) | async function waitForActiveTab(page, tabName, timeout = 5000) { function openSettingsTab (line 370) | async function openSettingsTab(page, tabName) { function waitForLayer (line 390) | async function waitForLayer(page, layerId, timeout = 10000) { function waitForLayerVisibility (line 417) | async function waitForLayerVisibility( function openReplayPanel (line 455) | async function openReplayPanel(page, closeSettingsPanel = false) { function waitForReplayPanel (line 486) | async function waitForReplayPanel(page, timeout = 5000) { function isReplayPanelVisible (line 503) | async function isReplayPanelVisible(page) { function getReplayScrubberValue (line 517) | async function getReplayScrubberValue(page) { function setReplayScrubberValue (line 531) | async function setReplayScrubberValue(page, minute) { function isReplayActive (line 548) | async function isReplayActive(page) { function getReplayState (line 569) | async function getReplayState(page) { function minuteToTimeString (line 598) | function minuteToTimeString(minute) { FILE: e2e/v2/map/interactions.spec.js function enableRoutesDisablePoints (line 13) | async function enableRoutesDisablePoints(page) { FILE: e2e/v2/map/layers/places.spec.js function _getPlaceCreationModal (line 10) | function _getPlaceCreationModal(page) { FILE: e2e/v2/map/layers/track-segments.spec.js function enableTracksLayerOnly (line 21) | async function enableTracksLayerOnly(page) { function enableTracksLayer (line 71) | async function enableTracksLayer(page) { function getTracksSourceData (line 106) | async function getTracksSourceData(page) { function waitForTracksData (line 129) | async function waitForTracksData(page) { function clickOnTrack (line 157) | async function clickOnTrack(page) { FILE: e2e/v2/map/layers/visits.spec.js function getVisitCreationModal (line 13) | function getVisitCreationModal(page) { FILE: e2e/v2/map/search.spec.js function openSearchTab (line 9) | async function openSearchTab(page) { function searchAndGetSuggestion (line 173) | async function searchAndGetSuggestion(page) { function clickSuggestionAndWaitForVisits (line 205) | async function clickSuggestionAndWaitForVisits(page, firstSuggestion) { FILE: e2e/v2/map/timeline-feed.spec.js function openTimelineFeedTab (line 12) | async function openTimelineFeedTab(page) { function waitForTimelineFeedLoaded (line 30) | async function waitForTimelineFeedLoaded(page, timeout = 10000) { FILE: lib/json_stream_handler.rb class JsonStreamHandler (line 5) | class JsonStreamHandler < Oj::Saj method initialize (line 10) | def initialize(processor) method hash_start (line 16) | def hash_start(key = nil, *_) method hash_end (line 21) | def hash_end(key = nil, *_) method array_start (line 29) | def array_start(key = nil, *_) method array_end (line 40) | def array_end(key = nil, *_) method add_value (line 52) | def add_value(value, key) method normalize_key (line 59) | def normalize_key(key) method dispatch_to_parent (line 63) | def dispatch_to_parent(parent, value, key) FILE: lib/tasks/demo.rake function create_visits (line 165) | def create_visits(user, count, status) function create_areas (line 239) | def create_areas(user, count) function distance_between (line 268) | def distance_between(point1, point2) function create_family_with_members (line 298) | def create_family_with_members(owner) function create_tracks (line 403) | def create_tracks(user, count) function create_track_segments (line 490) | def create_track_segments(track, track_points) function determine_mode_from_speed (line 563) | def determine_mode_from_speed(speed_kmh) function haversine_distance (line 575) | def haversine_distance(lat1, lon1, lat2, lon2) function create_lite_recent_points (line 595) | def create_lite_recent_points(user) function create_lite_old_points (line 622) | def create_lite_old_points(user) FILE: lib/tasks/points_raw_data.rake function validate_args! (line 387) | def validate_args!(args) FILE: lib/timestamps.rb type Timestamps (line 3) | module Timestamps function parse_timestamp (line 4) | def self.parse_timestamp(timestamp) FILE: spec/controllers/api_controller_spec.rb function index (line 9) | def index FILE: spec/controllers/application_controller_spec.rb function index (line 9) | def index FILE: spec/controllers/concerns/safe_timestamp_parser_spec.rb function index (line 11) | def index FILE: spec/factories/points_raw_data_archives.rb function gzip_test_data (line 32) | def gzip_test_data FILE: spec/jobs/application_job_spec.rb function perform (line 12) | def perform(user_id) function name (line 17) | def self.name FILE: spec/jobs/concerns/user_timezone_spec.rb function test_method (line 11) | def test_method(user) function test_method_with_error (line 38) | def test_method_with_error(user) FILE: spec/mailers/previews/users/digests_mailer_preview.rb class Users::DigestsMailerPreview (line 3) | class Users::DigestsMailerPreview < ActionMailer::Preview method year_end_digest (line 4) | def year_end_digest FILE: spec/mailers/previews/users_mailer_preview.rb class UsersMailerPreview (line 3) | class UsersMailerPreview < ActionMailer::Preview method welcome (line 4) | def welcome method explore_features (line 8) | def explore_features method trial_expires_soon (line 12) | def trial_expires_soon method trial_expired (line 16) | def trial_expired FILE: spec/models/concerns/archivable_spec.rb function gzip_data (line 107) | def gzip_data(points_array) FILE: spec/requests/imports_spec.rb function create_blob_for_file (line 281) | def create_blob_for_file(file) function generate_signed_id_for_blob (line 289) | def generate_signed_id_for_blob(blob) FILE: spec/services/points/raw_data/restorer_spec.rb function gzip_points_data (line 293) | def gzip_points_data(points_array) FILE: spec/services/tracks/segmentation_spec.rb function initialize (line 10) | def initialize(time_threshold_minutes: 30) function time_threshold_minutes (line 18) | def time_threshold_minutes FILE: spec/services/tracks/track_builder_spec.rb function initialize (line 11) | def initialize(user) FILE: spec/services/users/export_data/exports_spec.rb function create_blob (line 98) | def create_blob(filename: 'test.txt', content_type: 'text/plain') FILE: spec/services/users/export_data/imports_spec.rb function create_blob (line 164) | def create_blob(filename: 'test.txt', content_type: 'text/plain') FILE: spec/services/users/export_import_integration_spec.rb function create_full_user_dataset (line 229) | def create_full_user_dataset(user) function calculate_user_entity_counts (line 335) | def calculate_user_entity_counts(user) function verify_relationships_preserved (line 352) | def verify_relationships_preserved(original_user, target_user) function verify_settings_preserved (line 385) | def verify_settings_preserved(original_user, target_user) function verify_files_restored (line 392) | def verify_files_restored(original_user, target_user) function verify_import_files_restored (line 397) | def verify_import_files_restored(original_user, target_user) function verify_export_files_restored (line 411) | def verify_export_files_restored(original_user, target_user) FILE: spec/services/visits/group_spec.rb function time_formatter (line 42) | def time_formatter(time) FILE: spec/services/visits/suggest_spec.rb function data (line 15) | def data function create_visit_points (line 111) | def create_visit_points(user, start_time) function clear_enqueued_jobs (line 136) | def clear_enqueued_jobs function enqueued_jobs (line 140) | def enqueued_jobs function have_job_class (line 144) | def have_job_class(job_class) function have_arguments_starting_with (line 148) | def have_arguments_starting_with(first_argument) FILE: spec/support/omniauth.rb type OmniauthHelpers (line 5) | module OmniauthHelpers function mock_github_auth (line 6) | def mock_github_auth(email: 'test@github.com') function mock_google_auth (line 30) | def mock_google_auth(email: 'test@gmail.com') function mock_openid_connect_auth (line 57) | def mock_openid_connect_auth(email: 'test@oidc.com', _provider_name: '... function mock_oauth_failure (line 87) | def mock_oauth_failure(provider) FILE: spec/support/swagger_response_example.rb type SwaggerResponseExample (line 3) | module SwaggerResponseExample function capture (line 4) | def self.capture(example, response) FILE: spec/support/turbo_stream_helpers.rb type TurboStreamHelpers (line 3) | module TurboStreamHelpers function expect_turbo_stream_response (line 4) | def expect_turbo_stream_response function expect_turbo_stream_action (line 8) | def expect_turbo_stream_action(action, target) function expect_flash_stream (line 12) | def expect_flash_stream(message = nil) FILE: vendor/javascript/@rails--ujs.js method get (line 3) | get(){return true} method beforeSend (line 3) | beforeSend(t,e){if(fire(i,"ajax:beforeSend",[t,e]))return fire(i,"ajax:s... method success (line 3) | success(...t){return fire(i,"ajax:success",t)} method error (line 3) | error(...t){return fire(i,"ajax:error",t)} method complete (line 3) | complete(...t){return fire(i,"ajax:complete",t)} FILE: vendor/javascript/emoji-mart.js function $parcel$interopDefault (line 3) | function $parcel$interopDefault(e){return e&&e.__esModule?e.default:e} function $c770c458706daa72$export$2e2bcd8739ae039 (line 3) | function $c770c458706daa72$export$2e2bcd8739ae039(e,t,n){t in e?Object.d... function $fb96b826c0c5f37a$var$a (line 3) | function $fb96b826c0c5f37a$var$a(e,t){for(var n in t)e[n]=t[n];return e} function $fb96b826c0c5f37a$var$h (line 3) | function $fb96b826c0c5f37a$var$h(e){var t=e.parentNode;t&&t.removeChild(e)} function $fb96b826c0c5f37a$export$c8a8987d4410bf2d (line 3) | function $fb96b826c0c5f37a$export$c8a8987d4410bf2d(t,n,o){var r,a,i,s={}... function $fb96b826c0c5f37a$var$y (line 3) | function $fb96b826c0c5f37a$var$y(e,o,r,a,i){var s={type:e,props:o,key:r,... function $fb96b826c0c5f37a$export$7d1e3a5e95ceca43 (line 3) | function $fb96b826c0c5f37a$export$7d1e3a5e95ceca43(){return{current:null}} function $fb96b826c0c5f37a$export$ffb0004e005737fa (line 3) | function $fb96b826c0c5f37a$export$ffb0004e005737fa(e){return e.children} function $fb96b826c0c5f37a$export$16fa2f45be04daa8 (line 3) | function $fb96b826c0c5f37a$export$16fa2f45be04daa8(e,t){this.props=e,thi... function $fb96b826c0c5f37a$var$k (line 3) | function $fb96b826c0c5f37a$var$k(e,t){if(null==t)return e.__?$fb96b826c0... function $fb96b826c0c5f37a$var$b (line 3) | function $fb96b826c0c5f37a$var$b(e){var t,n;if(null!=(e=e.__)&&null!=e._... function $fb96b826c0c5f37a$var$m (line 3) | function $fb96b826c0c5f37a$var$m(e){(!e.__d&&(e.__d=!0)&&o.push(e)&&!$fb... function $fb96b826c0c5f37a$var$g (line 3) | function $fb96b826c0c5f37a$var$g(){for(var e;$fb96b826c0c5f37a$var$g.__r... function $fb96b826c0c5f37a$var$w (line 3) | function $fb96b826c0c5f37a$var$w(e,t,n,o,r,a,c,d,l,b){var p,f,h,u,$,v,g,... function $fb96b826c0c5f37a$var$x (line 3) | function $fb96b826c0c5f37a$var$x(e,t,n){for(var o,r=e.__k,a=0;r&&a!e.t... class $e0d4dda61265ff1e$export$2e2bcd8739ae039 (line 3) | class $e0d4dda61265ff1e$export$2e2bcd8739ae039 extends(0,$dc040a17866866... method shouldComponentUpdate (line 3) | shouldComponentUpdate(e){for(let t in e)if(t!="children"&&e[t]!=this.p... method render (line 3) | render(){return this.props.children} class $89bd6bb200cc8fef$export$2e2bcd8739ae039 (line 3) | class $89bd6bb200cc8fef$export$2e2bcd8739ae039 extends(0,$fb96b826c0c5f3... method getInitialState (line 3) | getInitialState(e=this.props){return{skin:(0,l).get("skin")||e.skin,th... method componentWillMount (line 3) | componentWillMount(){this.dir=(0,m).rtl?"rtl":"ltr";this.refs={menu:(0... method componentDidMount (line 3) | componentDidMount(){this.register();this.shadowRoot=this.base.parentNo... method componentWillReceiveProps (line 3) | componentWillReceiveProps(e){this.nextState||(this.nextState={});for(c... method componentWillUnmount (line 3) | componentWillUnmount(){this.unregister()} method reset (line 3) | async reset(e={}){await(0,$7adb23b0109cc36a$export$2cd8252107eb640b)(t... method register (line 3) | register(){document.addEventListener("click",this.handleClickOutside);... method unregister (line 3) | unregister(){document.removeEventListener("click",this.handleClickOuts... method observe (line 3) | observe(){this.observeCategories();this.observeRows()} method unobserve (line 3) | unobserve({except:e=[]}={}){Array.isArray(e)||(e=[e]);for(const t of t... method initGrid (line 3) | initGrid(){const{categories:e}=(0,x);this.refs.categories=new Map;cons... method initTheme (line 3) | initTheme(e){if(e!="auto")return e;if(!this.darkMedia){this.darkMedia=... method initDynamicPerLine (line 3) | initDynamicPerLine(e=this.props){if(!e.dynamicWidth)return;const{eleme... method getPerLine (line 3) | getPerLine(){return this.state.perLine||this.props.perLine} method getEmojiByPos (line 3) | getEmojiByPos([e,t]){const n=this.state.searchResults||this.grid;const... method observeCategories (line 3) | observeCategories(){const e=this.refs.navigation.current;if(!e)return;... method observeRows (line 3) | observeRows(){const e={...this.state.visibleRows};const t=new Intersec... method preventDefault (line 3) | preventDefault(e){e.preventDefault()} method unfocusSearch (line 3) | unfocusSearch(){const e=this.refs.searchInput.current;e&&e.blur()} method navigate (line 3) | navigate({e:e,input:t,left:n,right:o,up:r,down:a}){const i=this.state.... method scrollTo (line 3) | scrollTo({categoryId:e,row:t}){const n=this.state.searchResults||this.... method ignoreMouse (line 3) | ignoreMouse(){this.mouseIsIgnored=true;clearTimeout(this.ignoreMouseTi... method handleEmojiOver (line 3) | handleEmojiOver(e){this.mouseIsIgnored||this.state.showSkins||this.set... method handleEmojiClick (line 3) | handleEmojiClick({e:e,emoji:t,pos:n}){if(this.props.onEmojiSelect){!t&... method closeSkins (line 3) | closeSkins(){if(this.state.showSkins){this.setState({showSkins:null,te... method handleSkinMouseOver (line 3) | handleSkinMouseOver(e){this.setState({tempSkin:e})} method handleSkinClick (line 3) | handleSkinClick(e){this.ignoreMouse();this.closeSkins();this.setState(... method renderNav (line 3) | renderNav(){return(0,$bd9dd35321b03dd4$export$34b9dba7ce09269b)((0,$ec... method renderPreview (line 3) | renderPreview(){const e=this.getEmojiByPos(this.state.pos);const t=thi... method renderEmojiButton (line 3) | renderEmojiButton(e,{pos:t,posinset:n,grid:o}){const r=this.props.emoj... method renderSearch (line 3) | renderSearch(){const e=this.props.previewPosition=="none"||this.props.... method renderSearchResults (line 3) | renderSearchResults(){const{searchResults:e}=this.state;return e?(0,$b... method renderCategories (line 3) | renderCategories(){const{categories:e}=(0,x);const t=!!this.state.sear... method renderSkinToneButton (line 3) | renderSkinToneButton(){return this.props.skinTonePosition=="none"?null... method renderLiveRegion (line 3) | renderLiveRegion(){const e=this.getEmojiByPos(this.state.pos);const t=... method renderSkins (line 3) | renderSkins(){const e=this.refs.skinToneButton.current;const t=e.getBo... method render (line 3) | render(){const e=this.props.perLine*this.props.emojiButtonSize;return(... method constructor (line 3) | constructor(e){super();(0,$c770c458706daa72$export$2e2bcd8739ae039)(th... class $efa000751917694d$export$2e2bcd8739ae039 (line 3) | class $efa000751917694d$export$2e2bcd8739ae039 extends(0,$26f27c338a96b1... method connectedCallback (line 3) | async connectedCallback(){const e=(0,$7adb23b0109cc36a$export$75fe5f91... method constructor (line 3) | constructor(e){super(e,{styles:(0,$parcel$interopDefault(ne))})} FILE: vendor/javascript/leaflet-draw.js function o (line 1) | function o(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););ret... FILE: vendor/javascript/leaflet.control.layers.tree.js function s (line 3) | function s(e){e._layersTreeName&&(r.innerHTML=e._layersTreeName)} function s (line 3) | function s(e){var l=e.parentElement;if(l){t.DomUtil.hasClass(l,a.cls.chi... function a (line 3) | function a(e,t,l){if(e&&e.layer){l||(e.layer._layersTreeName=e.name||e.l... function r (line 3) | function r(e){return Array.isArray(e)?{noShow:true,children:e}:e} function g (line 3) | function g(e,l,s,a){var r=t.DomUtil.create(e,l,s);a&&(r.innerHTML=a);ret... function D (line 3) | function D(e){var t=e.querySelector("input[type=checkbox]");var l=true;v... function U (line 3) | function U(e,l){r.forEach((function(s){t.DomEvent.on(e,"click",(function... function S (line 3) | function S(e){return typeof e==="string"||e instanceof String} function A (line 3) | function A(e){return e&&{}.toString.call(e)==="[object Function]"} function N (line 3) | function N(e,t){var l=s.getElementsByTagName("input");for(var a=0;ae.max.x&&(i|=2);t... function _sqDist (line 7) | function _sqDist(t,e){var i=e.x-t.x,n=e.y-t.y;return i*i+n*n} function _sqClosestPointOnSegment (line 7) | function _sqClosestPointOnSegment(t,e,i,n){var o,s=e.x,a=e.y,h=i.x-s,l=i... function isFlat (line 7) | function isFlat(t){return!a(t[0])||"object"!==typeof t[0][0]&&"undefined... function _flat (line 7) | function _flat(t){console.warn("Deprecated use of _flat, please use L.Li... function polylineCenter (line 7) | function polylineCenter(t,e){var i,n,o,s,a,h,l,c;if(!t||0===t.length)thr... function icon (line 7) | function icon(t){return new ne(t)} function marker (line 7) | function marker(t,e){return new ae(t,e)} function circleMarker (line 7) | function circleMarker(t,e){return new he(t,e)} function circle (line 7) | function circle(t,e,i){return new le(t,e,i)} function polyline (line 7) | function polyline(t,e){return new ue(t,e)} function polygon (line 7) | function polygon(t,e){return new ce(t,e)} function geometryToLayer (line 7) | function geometryToLayer(t,e){var i,n,o,s,a="Feature"===t.type?t.geometr... function _pointToLayer (line 7) | function _pointToLayer(t,e,i,n){return t?t(e,i):new ae(i,n&&n.markersInh... function coordsToLatLng (line 7) | function coordsToLatLng(t){return new LatLng(t[1],t[0],t[2])} function coordsToLatLngs (line 7) | function coordsToLatLngs(t,e,i){var n=[];for(var o,s=0,a=t.length;s4&&void 0!==arguments[4]?argu... function Q (line 7) | function Q(){var e=new C(2);return C!=Float32Array&&(e[0]=0,e[1]=0),e} function se (line 7) | function se(e,s){var a=new C(2);return a[0]=e,a[1]=s,a} function ce (line 7) | function ce(e,s,a){return s*(oe/(e.tileSize*Math.pow(2,a-e.tileID.oversc... function pe (line 7) | function pe(e,s){return(e%s+s)%s} function fe (line 7) | function fe(e,s,a){return e*(1-a)+s*a} function xe (line 7) | function xe(e){if(e<=0)return 0;if(e>=1)return 1;const s=e*e,a=s*e;retur... function ve (line 7) | function ve(e,s,a,l){const c=new _(e,s,a,l);return e=>c.solve(e)} function we (line 7) | function we(e,s,a){return Math.min(a,Math.max(s,e))} function Te (line 7) | function Te(e,s,a){const l=a-s,c=((e-s)%l+l)%l+s;return c===s?a:c} function Se (line 7) | function Se(e,...s){for(const a of s)for(const s in a)e[s]=a[s];return e} function Ee (line 7) | function Ee(s,a,l){const c={};for(const l in s)c[l]=a.call(this||e,s[l],... function Ce (line 7) | function Ce(s,a,l){const c={};for(const l in s)a.call(this||e,s[l],l,s)&... function Ae (line 7) | function Ae(e){return Array.isArray(e)?e.map(Ae):"object"==typeof e&&e?E... function Le (line 7) | function Le(e){ke[e]||("undefined"!=typeof console&&console.warn(e),ke[e... function Fe (line 7) | function Fe(e,s,a){return(a.y-e.y)*(s.x-e.x)>(s.y-e.y)*(a.x-e.x)} function Oe (line 7) | function Oe(e){return"undefined"!=typeof WorkerGlobalScope&&void 0!==e&&... function Ne (line 7) | function Ne(e){return"undefined"!=typeof ImageBitmap&&e instanceof Image... function Ue (line 7) | function Ue(s,l,c,u,d){return a(this||e,void 0,void 0,(function*(){if("u... function qe (line 7) | function qe(e,s,a,l){return e.addEventListener(s,a,l),{unsubscribe:()=>{... function $e (line 7) | function $e(e){return e*Math.PI/180} function We (line 7) | function We(e){return e/Math.PI*180} function Ke (line 7) | function Ke(){return new Error(Ye)} function Qe (line 7) | function Qe(e){return Je.REGISTERED_PROTOCOLS[e.substring(0,e.indexOf(":... class ue (line 7) | class ue extends Error{constructor(e,s,a,l){super(`AJAXError: ${s} (${e}... method constructor (line 7) | constructor(e,s,a,l){super(`AJAXError: ${s} (${e}): ${a}`),this.status... function ht (line 7) | function ht(e){if(!e||e.indexOf("://")<=0||0===e.indexOf("data:image/")|... function ut (line 7) | function ut(e,s,a){a[e]&&-1!==a[e].indexOf(s)||(a[e]=a[e]||[],a[e].push(... function dt (line 7) | function dt(e,s,a){if(a&&a[e]){const l=a[e].indexOf(s);-1!==l&&a[e].spli... class ye (line 7) | class ye{constructor(e,s={}){Se(this,s),this.type=e}} method constructor (line 7) | constructor(e,s={}){Se(this,s),this.type=e} class me (line 7) | class me extends ye{constructor(e,s={}){super("error",Se({error:e},s))}} method constructor (line 7) | constructor(e,s={}){super("error",Se({error:e},s))} class ge (line 7) | class ge{on(e,s){return this._listeners=this._listeners||{},ut(e,s,this.... method on (line 7) | on(e,s){return this._listeners=this._listeners||{},ut(e,s,this._listen... method off (line 7) | off(e,s){return dt(e,s,this._listeners),dt(e,s,this._oneTimeListeners)... method once (line 7) | once(e,s){return s?(this._oneTimeListeners=this._oneTimeListeners||{},... method fire (line 7) | fire(e,s){"string"==typeof e&&(e=new ye(e,s||{}));const a=e.type;if(th... method listens (line 7) | listens(e){return this._listeners&&this._listeners[e]&&this._listeners... method setEventedParent (line 7) | setEventedParent(e,s){return this._eventedParent=e,this._eventedParent... function mt (line 7) | function mt(e,s){const a={};for(const s in e)"ref"!==s&&(a[s]=e[s]);retu... function _t (line 7) | function _t(e,s){if(Array.isArray(e)){if(!Array.isArray(s)||e.length!==s... function gt (line 7) | function gt(e,s){e.push(s)} function yt (line 7) | function yt(e,s,a){gt(a,{command:"addSource",args:[e,s[e]]})} function vt (line 7) | function vt(e,s,a){gt(s,{command:"removeSource",args:[e]}),a[e]=!0} function Et (line 7) | function Et(e,s,a,l){vt(e,a,l),yt(e,s,a)} function Rt (line 7) | function Rt(e,s,a){let l;for(l in e[a])if(Object.prototype.hasOwnPropert... function Vt (line 7) | function Vt(e,s,a,l,c,u){e=e||{},s=s||{};for(const d in e)Object.prototy... function Zt (line 7) | function Zt(e){return e.id} function $t (line 7) | function $t(e,s){return e[s.id]=s,e} class De (line 7) | class De{constructor(e,s,a,l){this.message=(e?`${e}: `:"")+a,l&&(this.id... method constructor (line 7) | constructor(e,s,a,l){this.message=(e?`${e}: `:"")+a,l&&(this.identifie... function ti (line 7) | function ti(e,...s){for(const a of s)for(const s in a)e[s]=a[s];return e} class Be (line 7) | class Be extends Error{constructor(e,s){super(s),this.message=s,this.key... method constructor (line 7) | constructor(e,s){super(s),this.message=s,this.key=e} class Pe (line 7) | class Pe{constructor(e,s=[]){this.parent=e,this.bindings={};for(const[e,... method constructor (line 7) | constructor(e,s=[]){this.parent=e,this.bindings={};for(const[e,a]of s)... method concat (line 7) | concat(e){return new Pe(this,e)} method get (line 7) | get(e){if(this.bindings[e])return this.bindings[e];if(this.parent)retu... method has (line 7) | has(e){return!!this.bindings[e]||!!this.parent&&this.parent.has(e)} function Ai (line 7) | function Ai(e,s){return{kind:"array",itemType:e,N:s}} function zi (line 7) | function zi(e){if("array"===e.kind){const s=zi(e.itemType);return"number... function Li (line 7) | function Li(e,s){if("error"===s.kind)return null;if("array"===e.kind){if... function Fi (line 7) | function Fi(e,s){return s.some((s=>s.kind===e.kind))} function Bi (line 7) | function Bi(e,s){return s.some((s=>"null"===s?null===e:"array"===s?Array... function Oi (line 7) | function Oi(e,s){return"array"===e.kind&&"array"===s.kind?e.itemType.kin... function Wi (line 7) | function Wi(e){return(e%=360)<0&&(e+=360),e} function Hi (line 7) | function Hi([e,s,a,l]){let c,u;const d=Yi((.2225045*(e=Xi(e))+.7168786*(... function Xi (line 7) | function Xi(e){return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)} function Yi (line 7) | function Yi(e){return e>Zi?Math.pow(e,1/3):e/Gi+ji} function Ki (line 7) | function Ki([e,s,a,l]){let c=(e+16)/116,u=isNaN(s)?c:c+s/500,d=isNaN(a)?... function Ji (line 7) | function Ji(e){return(e=e<=.00304?12.92*e:1.055*Math.pow(e,1/2.4)-.055)<... function Qi (line 7) | function Qi(e){return e>Ui?e*e*e:Gi*(e-ji)} function or (line 7) | function or(e,s){return sr(e,s)?e[s]:void 0} function lr (line 7) | function lr(e){return parseInt(e.padEnd(2,e),16)/255} function cr (line 7) | function cr(e,s){return hr(s?e/100:e,0,1)} function hr (line 7) | function hr(e,s,a){return Math.min(Math.max(s,e),a)} function ur (line 7) | function ur(e){return!e.some(Number.isNaN)} function fr (line 7) | function fr(e,s,a){return e+a*(s-e)} function mr (line 7) | function mr(e,s,a){return e.map(((e,l)=>fr(e,s[l],a)))} class It (line 7) | class It{constructor(e,s,a,l=1,c=!0){this.r=e,this.g=s,this.b=a,this.a=l... method constructor (line 7) | constructor(e,s,a,l=1,c=!0){this.r=e,this.g=s,this.b=a,this.a=l,c||(th... method parse (line 7) | static parse(e){if(e instanceof It)return e;if("string"!=typeof e)retu... method rgb (line 7) | get rgb(){const{r:e,g:s,b:a,a:l}=this,c=l||1/0;return this.overwriteGe... method hcl (line 7) | get hcl(){return this.overwriteGetter("hcl",function(e){const[s,a,l,c]... method lab (line 7) | get lab(){return this.overwriteGetter("lab",Hi(this.rgb))} method overwriteGetter (line 7) | overwriteGetter(e,s){return Object.defineProperty(this,e,{value:s}),s} method toString (line 7) | toString(){const[e,s,a,l]=this.rgb;return`rgba(${[e,s,a].map((e=>Math.... method interpolate (line 7) | static interpolate(e,s,a,l="rgb"){switch(l){case"rgb":{const[l,c,u,d]=... class Mt (line 7) | class Mt{constructor(e,s,a){this.sensitivity=e?s?"variant":"case":s?"acc... method constructor (line 7) | constructor(e,s,a){this.sensitivity=e?s?"variant":"case":s?"accent":"b... method compare (line 7) | compare(e,s){return this.collator.compare(e,s)} method resolvedLocale (line 7) | resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).... method constructor (line 7) | constructor(){this.layerIndexes={},this.crossTileIDs=new Tt,this.maxBu... method addLayer (line 7) | addLayer(e,s,a){let l=this.layerIndexes[e.id];void 0===l&&(l=this.laye... method pruneUnusedLayers (line 7) | pruneUnusedLayers(e){const s={};e.forEach((e=>{s[e]=!0}));for(const e ... class kt (line 7) | class kt{constructor(e,s,a,l,c,u){this.text=e,this.image=s,this.scale=a,... method constructor (line 7) | constructor(e,s,a,l,c,u){this.text=e,this.image=s,this.scale=a,this.fo... class Dt (line 7) | class Dt{constructor(e){this.sections=e}static fromString(e){return new ... method constructor (line 7) | constructor(e){this.sections=e} method fromString (line 7) | static fromString(e){return new Dt([new kt(e,null,null,null,null,null)])} method isEmpty (line 7) | isEmpty(){return 0===this.sections.length||!this.sections.some((e=>0!=... method factory (line 7) | static factory(e){return e instanceof Dt?e:Dt.fromString(e)} method toString (line 7) | toString(){return 0===this.sections.length?"":this.sections.map((e=>e.... class Ft (line 7) | class Ft{constructor(e){this.values=e.slice()}static parse(e){if(e insta... method constructor (line 7) | constructor(e){this.values=e.slice()} method parse (line 7) | static parse(e){if(e instanceof Ft)return e;if("number"==typeof e)retu... method toString (line 7) | toString(){return JSON.stringify(this.values)} method interpolate (line 7) | static interpolate(e,s,a){return new Ft(mr(e.values,s.values,a))} class Bt (line 7) | class Bt{constructor(e){this.values=e.slice()}static parse(e){if(e insta... method constructor (line 7) | constructor(e){this.values=e.slice()} method parse (line 7) | static parse(e){if(e instanceof Bt)return e;if("number"==typeof e)retu... method toString (line 7) | toString(){return JSON.stringify(this.values)} method interpolate (line 7) | static interpolate(e,s,a){return new Bt(mr(e.values,s.values,a))} method constructor (line 7) | constructor(e,s){var l;this.applyConstrain=(e,s)=>null!==this._constra... method apply (line 7) | apply(e,s,l){this._constrainOverride=e.constrainOverride,this._latRang... method pixelsToClipSpaceMatrix (line 7) | get pixelsToClipSpaceMatrix(){return this._pixelsToClipSpaceMatrix} method clipSpaceToPixelsMatrix (line 7) | get clipSpaceToPixelsMatrix(){return this._clipSpaceToPixelsMatrix} method minElevationForCurrentTile (line 7) | get minElevationForCurrentTile(){return this._minElevationForCurrentTile} method setMinElevationForCurrentTile (line 7) | setMinElevationForCurrentTile(e){this._minElevationForCurrentTile=e} method tileSize (line 7) | get tileSize(){return this._tileSize} method tileZoom (line 7) | get tileZoom(){return this._tileZoom} method scale (line 7) | get scale(){return this._scale} method width (line 7) | get width(){return this._width} method height (line 7) | get height(){return this._height} method bearingInRadians (line 7) | get bearingInRadians(){return this._bearingInRadians} method lngRange (line 7) | get lngRange(){return this._lngRange} method latRange (line 7) | get latRange(){return this._latRange} method pixelsToGLUnits (line 7) | get pixelsToGLUnits(){return this._pixelsToGLUnits} method minZoom (line 7) | get minZoom(){return this._minZoom} method setMinZoom (line 7) | setMinZoom(e){this._minZoom!==e&&(this._minZoom=e,this.setZoom(this.ap... method maxZoom (line 7) | get maxZoom(){return this._maxZoom} method setMaxZoom (line 7) | setMaxZoom(e){this._maxZoom!==e&&(this._maxZoom=e,this.setZoom(this.ap... method minPitch (line 7) | get minPitch(){return this._minPitch} method setMinPitch (line 7) | setMinPitch(e){this._minPitch!==e&&(this._minPitch=e,this.setPitch(Mat... method maxPitch (line 7) | get maxPitch(){return this._maxPitch} method setMaxPitch (line 7) | setMaxPitch(e){this._maxPitch!==e&&(this._maxPitch=e,this.setPitch(Mat... method renderWorldCopies (line 7) | get renderWorldCopies(){return this._renderWorldCopies} method setRenderWorldCopies (line 7) | setRenderWorldCopies(e){void 0===e?e=!0:null===e&&(e=!1),this._renderW... method constrainOverride (line 7) | get constrainOverride(){return this._constrainOverride} method setConstrainOverride (line 7) | setConstrainOverride(e){void 0===e&&(e=null),this._constrainOverride!=... method worldSize (line 7) | get worldSize(){return this._tileSize*this._scale} method centerOffset (line 7) | get centerOffset(){return this.centerPoint._sub(this.size._div(2))} method size (line 7) | get size(){return new a.P(this._width,this._height)} method bearing (line 7) | get bearing(){return this._bearingInRadians/Math.PI*180} method setBearing (line 7) | setBearing(e){const s=a.V(e,-180,180)*Math.PI/180;var l,u,d,f,_,y,b,S,... method rotationMatrix (line 7) | get rotationMatrix(){return this._rotationMatrix} method pitchInRadians (line 7) | get pitchInRadians(){return this._pitchInRadians} method pitch (line 7) | get pitch(){return this._pitchInRadians/Math.PI*180} method setPitch (line 7) | setPitch(e){const s=a.ai(e,this.minPitch,this.maxPitch)/180*Math.PI;th... method rollInRadians (line 7) | get rollInRadians(){return this._rollInRadians} method roll (line 7) | get roll(){return this._rollInRadians/Math.PI*180} method setRoll (line 7) | setRoll(e){const s=e/180*Math.PI;this._rollInRadians!==s&&(this._unmod... method fovInRadians (line 7) | get fovInRadians(){return this._fovInRadians} method fov (line 7) | get fov(){return a.aT(this._fovInRadians)} method setFov (line 7) | setFov(e){e=a.ai(e,.1,150),this.fov!==e&&(this._unmodified=!1,this._fo... method zoom (line 7) | get zoom(){return this._zoom} method setZoom (line 7) | setZoom(e){const s=this.applyConstrain(this._center,e).zoom;this._zoom... method center (line 7) | get center(){return this._center} method setCenter (line 7) | setCenter(e){e.lat===this._center.lat&&e.lng===this._center.lng||(this... method elevation (line 7) | get elevation(){return this._elevation} method setElevation (line 7) | setElevation(e){e!==this._elevation&&(this._elevation=e,this.constrain... method padding (line 7) | get padding(){return this._edgeInsets.toJSON()} method setPadding (line 7) | setPadding(e){this._edgeInsets.equals(e)||(this._unmodified=!1,this._e... method centerPoint (line 7) | get centerPoint(){return this._edgeInsets.getCenter(this._width,this._... method pixelsPerMeter (line 7) | get pixelsPerMeter(){return this._pixelPerMeter} method unmodified (line 7) | get unmodified(){return this._unmodified} method cameraToCenterDistance (line 7) | get cameraToCenterDistance(){return this._cameraToCenterDistance} method nearZ (line 7) | get nearZ(){return this._nearZ} method farZ (line 7) | get farZ(){return this._farZ} method autoCalculateNearFarZ (line 7) | get autoCalculateNearFarZ(){return this._autoCalculateNearFarZ} method overrideNearFarZ (line 7) | overrideNearFarZ(e,s){this._autoCalculateNearFarZ=!1,this._nearZ=e,thi... method clearNearFarZOverride (line 7) | clearNearFarZOverride(){this._autoCalculateNearFarZ=!0,this._calcMatri... method isPaddingEqual (line 7) | isPaddingEqual(e){return this._edgeInsets.equals(e)} method interpolatePadding (line 7) | interpolatePadding(e,s,a){this._unmodified=!1,this._edgeInsets.interpo... method resize (line 7) | resize(e,s,a=!0){this._width=e,this._height=s,a&&this.constrainInterna... method getMaxBounds (line 7) | getMaxBounds(){return this._latRange&&2===this._latRange.length&&this.... method setMaxBounds (line 7) | setMaxBounds(e){e?(this._lngRange=[e.getWest(),e.getEast()],this._latR... method getCameraQueryGeometry (line 7) | getCameraQueryGeometry(e,s){if(1===s.length)return[s[0],e];{const{minX... method constrainInternal (line 7) | constrainInternal(){if(!this.center||!this._width||!this._height||this... method _calcMatrices (line 7) | _calcMatrices(){if(this._width&&this._height){this._pixelsToGLUnits=[2... method calculateCenterFromCameraLngLatAlt (line 7) | calculateCenterFromCameraLngLatAlt(e,s,l,c){const u=void 0!==l?l:this.... method recalculateZoomAndCenter (line 7) | recalculateZoomAndCenter(e){if(this.elevation-e==0)return;const s=a.an... method getCameraPoint (line 7) | getCameraPoint(){const e=Math.tan(this.pitchInRadians)*(this.cameraToC... method getCameraAltitude (line 7) | getCameraAltitude(){return Math.cos(this.pitchInRadians)*this._cameraT... method getCameraLngLat (line 7) | getCameraLngLat(){const e=a.an(1,this.center.lat)*this.worldSize;retur... method getMercatorTileCoordinates (line 7) | getMercatorTileCoordinates(e){if(!e)return[0,0,1,1];const s=e.canonica... class Pt (line 7) | class Pt{constructor(e){this.values=e.slice()}static parse(e){if(e insta... method constructor (line 7) | constructor(e){this.values=e.slice()} method parse (line 7) | static parse(e){if(e instanceof Pt)return e;if("string"==typeof e){con... method toString (line 7) | toString(){return JSON.stringify(this.values)} method interpolate (line 7) | static interpolate(e,s,a,l="rgb"){const c=[];if(e.values.length!=s.val... method constructor (line 7) | constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0} method handleWrapJump (line 7) | handleWrapJump(e){const s=Math.round((e-this.lng)/360);if(0!==s)for(co... method addBucket (line 7) | addBucket(e,s,a){if(this.indexes[e.overscaledZ]&&this.indexes[e.oversc... method removeBucketCrossTileIDs (line 7) | removeBucketCrossTileIDs(e,s){for(const a of s.getCrossTileIDsLists())... method removeStaleBuckets (line 7) | removeStaleBuckets(e){let s=!1;for(const a in this.indexes){const l=th... class zt (line 7) | class zt extends Error{constructor(e){super(e),this.name="RuntimeError"}... method constructor (line 7) | constructor(e){super(e),this.name="RuntimeError"} method toJSON (line 7) | toJSON(){return this.message} class Ct (line 7) | class Ct{constructor(e){this.values=e.slice()}static parse(e){if(e insta... method constructor (line 7) | constructor(e){this.values=e.slice()} method parse (line 7) | static parse(e){if(e instanceof Ct)return e;if(Array.isArray(e)&&!(e.l... method toString (line 7) | toString(){return JSON.stringify(this.values)} method interpolate (line 7) | static interpolate(e,s,a){const l=e.values,c=s.values;if(l.length!==c.... class Lt (line 7) | class Lt{constructor(e){this.name=e.name,this.available=e.available}toSt... method constructor (line 7) | constructor(e){this.name=e.name,this.available=e.available} method toString (line 7) | toString(){return this.name} method fromString (line 7) | static fromString(e){return e?new Lt({name:e,available:!1}):null} method constructor (line 7) | constructor(e=0,s=0,a=0,l=0){if(isNaN(e)||e<0||isNaN(s)||s<0||isNaN(a)... method interpolate (line 7) | interpolate(e,s,l){return null!=s.top&&null!=e.top&&(this.top=a.F.numb... method getCenter (line 7) | getCenter(e,s){const l=a.ai((this.left+e-this.right)/2,0,e),c=a.ai((th... method equals (line 7) | equals(e){return this.top===e.top&&this.bottom===e.bottom&&this.left==... method clone (line 7) | clone(){return new Lt(this.top,this.bottom,this.left,this.right)} method toJSON (line 7) | toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:t... class Ot (line 7) | class Ot{constructor(e,s,a){this.from=e,this.to=s,this.transition=a}stat... method constructor (line 7) | constructor(e,s,a){this.from=e,this.to=s,this.transition=a} method interpolate (line 7) | static interpolate(e,s,a){return new Ot(e,s,a)} method parse (line 7) | static parse(e){return e instanceof Ot?e:Array.isArray(e)&&3===e.lengt... method constructor (line 7) | constructor(e,s){this.min=e,this.max=s,this.center=a.aV([],a.aW([],thi... method quadrant (line 7) | quadrant(e){const s=[e%2==0,e<2],l=a.aX(this.min),c=a.aX(this.max);for... method distanceX (line 7) | distanceX(e){return Math.max(Math.min(this.max[0],e[0]),this.min[0])-e... method distanceY (line 7) | distanceY(e){return Math.max(Math.min(this.max[1],e[1]),this.min[1])-e... method intersectsFrustum (line 7) | intersectsFrustum(e){let s=!0;for(let a=0;a0?(s+=e[... function xr (line 7) | function xr(e,s,a,l){return"number"==typeof e&&e>=0&&e<=255&&"number"==t... function vr (line 7) | function vr(e){if(null===e||"string"==typeof e||"boolean"==typeof e||"nu... function br (line 7) | function br(e){if(null===e)return oi;if("string"==typeof e)return ci;if(... function wr (line 7) | function wr(e){const s=typeof e;return null===e?"":"string"===s||"number... class qt (line 7) | class qt{constructor(e,s){this.type=e,this.value=s}static parse(e,s){if(... method constructor (line 7) | constructor(e,s){this.type=e,this.value=s} method parse (line 7) | static parse(e,s){if(2!==e.length)return s.error(`'literal' expression... method evaluate (line 7) | evaluate(){return this.value} method eachChild (line 7) | eachChild(){} method outputDefined (line 7) | outputDefined(){return!0} method constructor (line 7) | constructor(e,s,a){this.blendFunction=e,this.blendColor=s,this.mask=a} class Gt (line 7) | class Gt{constructor(e,s){this.type=e,this.args=s}static parse(e,s){if(e... method constructor (line 7) | constructor(e,s){this.type=e,this.args=s} method parse (line 7) | static parse(e,s){if(e.length<2)return s.error("Expected at least one ... method evaluate (line 7) | evaluate(e){for(let s=0;se.outputDefined()))} class Yt (line 7) | class Yt{constructor(e,s){this.type=e,this.args=s}static parse(e,s){if(e... method constructor (line 7) | constructor(e,s){this.type=e,this.args=s} method parse (line 7) | static parse(e,s){if(e.length<2)return s.error("Expected at least one ... method evaluate (line 7) | evaluate(e){switch(this.type.kind){case"boolean":return Boolean(this.a... method eachChild (line 7) | eachChild(e){this.args.forEach(e)} method outputDefined (line 7) | outputDefined(){return this.args.every((e=>e.outputDefined()))} method constructor (line 7) | constructor(e,s,a,l,c,u){this.test=e,this.ref=s,this.mask=a,this.fail=... class Ht (line 7) | class Ht{constructor(){this.globals=null,this.feature=null,this.featureS... method constructor (line 7) | constructor(){this.globals=null,this.feature=null,this.featureState=nu... method id (line 7) | id(){return this.feature&&"id"in this.feature?this.feature.id:null} method geometryType (line 7) | geometryType(){return this.feature?"number"==typeof this.feature.type?... method geometry (line 7) | geometry(){return this.feature&&"geometry"in this.feature?this.feature... method canonicalID (line 7) | canonicalID(){return this.canonical} method properties (line 7) | properties(){return this.feature&&this.feature.properties||{}} method parseColor (line 7) | parseColor(e){let s=this._parseColorCache.get(e);return s||(s=It.parse... method constructor (line 7) | constructor(e,s,a){this.enable=e,this.mode=s,this.frontFace=a} class Kt (line 7) | class Kt{constructor(e,s,a=[],l,c=new Pe,u=[]){this.registry=e,this.path... method constructor (line 7) | constructor(e,s,a=[],l,c=new Pe,u=[]){this.registry=e,this.path=a,this... method parse (line 7) | parse(e,s,a,l,c={}){return s?this.concat(s,a,l)._parse(e,c):this._pars... method _parse (line 7) | _parse(e,s){function a(e,s,a){return"assert"===a?new Gt(s,[e]):"coerce... method concat (line 7) | concat(e,s,a){const l="number"==typeof e?this.path.concat(e):this.path... method error (line 7) | error(e,...s){const a=`${this.key}${s.map((e=>`[${e}]`)).join("")}`;th... method checkSubtype (line 7) | checkSubtype(e,s){const a=Li(e,s);return a&&this.error(a),a} class Jt (line 7) | class Jt{constructor(e,s){this.type=s.type,this.bindings=[].concat(e),th... method constructor (line 7) | constructor(e,s){this.type=s.type,this.bindings=[].concat(e),this.resu... method evaluate (line 7) | evaluate(e){return this.result.evaluate(e)} method eachChild (line 7) | eachChild(e){for(const s of this.bindings)e(s[1]);e(this.result)} method parse (line 7) | static parse(e,s){if(e.length<4)return s.error(`Expected at least 3 ar... method outputDefined (line 7) | outputDefined(){return this.result.outputDefined()} class Wt (line 7) | class Wt{constructor(e,s){this.type=s.type,this.name=e,this.boundExpress... method constructor (line 7) | constructor(e,s){this.type=s.type,this.name=e,this.boundExpression=s} method parse (line 7) | static parse(e,s){if(2!==e.length||"string"!=typeof e[1])return s.erro... method evaluate (line 7) | evaluate(e){return this.boundExpression.evaluate(e)} method eachChild (line 7) | eachChild(){} method outputDefined (line 7) | outputDefined(){return!1} method useGlobeControls (line 7) | get useGlobeControls(){return!1} method handlePanInertia (line 7) | handlePanInertia(e,s){const a=e.mag(),l=Math.abs(je(s));return{easingO... method handleMapControlsRollPitchBearingZoom (line 7) | handleMapControlsRollPitchBearingZoom(e,s){e.bearingDelta&&s.setBearin... method handleMapControlsPan (line 7) | handleMapControlsPan(e,s,a){e.around.distSqr(s.centerPoint)<.01||s.set... method cameraForBoxAndBearing (line 7) | cameraForBoxAndBearing(e,s,a,l,c){return Ui(e,s,a,l,c)} method handleJumpToCenterZoom (line 7) | handleJumpToCenterZoom(e,s){e.zoom!==(void 0!==s.zoom?+s.zoom:e.zoom)&... method handleEaseTo (line 7) | handleEaseTo(e,s){const l=e.zoom,c=e.padding,u={roll:e.roll,pitch:e.pi... method handleFlyTo (line 7) | handleFlyTo(e,s){const l=void 0!==s.zoom,c=e.zoom,u=e.applyConstrain(a... class Qt (line 7) | class Qt{constructor(e,s,a){this.type=e,this.index=s,this.input=a}static... method constructor (line 7) | constructor(e,s,a){this.type=e,this.index=s,this.input=a} method parse (line 7) | static parse(e,s){if(3!==e.length)return s.error(`Expected 2 arguments... method evaluate (line 7) | evaluate(e){const s=this.index.evaluate(e),a=this.input.evaluate(e);if... method eachChild (line 7) | eachChild(e){e(this.index),e(this.input)} method outputDefined (line 7) | outputDefined(){return!1} class er (line 7) | class er{constructor(e,s){this.type=hi,this.needle=e,this.haystack=s}sta... method constructor (line 7) | constructor(e,s){this.type=hi,this.needle=e,this.haystack=s} method parse (line 7) | static parse(e,s){if(3!==e.length)return s.error(`Expected 2 arguments... method evaluate (line 7) | evaluate(e){const s=this.needle.evaluate(e),a=this.haystack.evaluate(e... method eachChild (line 7) | eachChild(e){e(this.needle),e(this.haystack)} method outputDefined (line 7) | outputDefined(){return!0} method constructor (line 7) | constructor(e,s,a,l,c){this.context=e,this.width=s,this.height=a;const... method destroy (line 7) | destroy(){const e=this.context.gl,s=this.colorAttachment.get();if(s&&e... class tr (line 7) | class tr{constructor(e,s,a){this.type=li,this.needle=e,this.haystack=s,t... method constructor (line 7) | constructor(e,s,a){this.type=li,this.needle=e,this.haystack=s,this.fro... method parse (line 7) | static parse(e,s){if(e.length<=2||e.length>=5)return s.error(`Expected... method evaluate (line 7) | evaluate(e){const s=this.needle.evaluate(e),a=this.haystack.evaluate(e... method eachChild (line 7) | eachChild(e){e(this.needle),e(this.haystack),this.fromIndex&&e(this.fr... method outputDefined (line 7) | outputDefined(){return!1} method constructor (line 7) | constructor(e){var s,a;if(this.gl=e,this.clearColor=new va(this),this.... method setDefault (line 7) | setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearD... method setDirty (line 7) | setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clea... method createIndexBuffer (line 7) | createIndexBuffer(e,s){return new pa(this,e,s)} method createVertexBuffer (line 7) | createVertexBuffer(e,s,a){return new fa(this,e,s,a)} method createRenderbuffer (line 7) | createRenderbuffer(e,s,a){const l=this.gl,c=l.createRenderbuffer();ret... method createFramebuffer (line 7) | createFramebuffer(e,s,a,l){return new er(this,e,s,a,l)} method clear (line 7) | clear({color:e,depth:s,stencil:a}){const l=this.gl;let c=0;e&&(c|=l.CO... method setCullFace (line 7) | setCullFace(e){!1===e.enable?this.cullFace.set(!1):(this.cullFace.set(... method setDepthMode (line 7) | setDepthMode(e){e.func!==this.gl.ALWAYS||e.mask?(this.depthTest.set(!0... method setStencilMode (line 7) | setStencilMode(e){e.test.func!==this.gl.ALWAYS||e.mask?(this.stencilTe... method setColorMode (line 7) | setColorMode(e){a.bL(e.blendFunction,qt.Replace)?this.blend.set(!1):(t... method createVertexArray (line 7) | createVertexArray(){var e;return $i(this.gl)?this.gl.createVertexArray... method deleteVertexArray (line 7) | deleteVertexArray(e){var s;return $i(this.gl)?this.gl.deleteVertexArra... method unbindVAO (line 7) | unbindVAO(){this.bindVertexArray.set(null)} class rr (line 7) | class rr{constructor(e,s,a,l,c,u){this.inputType=e,this.type=s,this.inpu... method constructor (line 7) | constructor(e,s,a,l,c,u){this.inputType=e,this.type=s,this.input=a,thi... method parse (line 7) | static parse(e,s){if(e.length<5)return s.error(`Expected at least 4 ar... method evaluate (line 7) | evaluate(e){const s=this.input.evaluate(e);return(br(s)===this.inputTy... method eachChild (line 7) | eachChild(e){e(this.input),this.outputs.forEach(e),e(this.otherwise)} method outputDefined (line 7) | outputDefined(){return this.outputs.every((e=>e.outputDefined()))&&thi... class nr (line 7) | class nr{constructor(e,s,a){this.type=e,this.branches=s,this.otherwise=a... method constructor (line 7) | constructor(e,s,a){this.type=e,this.branches=s,this.otherwise=a} method parse (line 7) | static parse(e,s){if(e.length<4)return s.error(`Expected at least 3 ar... method evaluate (line 7) | evaluate(e){for(const[s,a]of this.branches)if(s.evaluate(e))return a.e... method eachChild (line 7) | eachChild(e){for(const[s,a]of this.branches)e(s),e(a);e(this.otherwise)} method outputDefined (line 7) | outputDefined(){return this.branches.every((([e,s])=>s.outputDefined()... class ir (line 7) | class ir{constructor(e,s,a,l){this.type=e,this.input=s,this.beginIndex=a... method constructor (line 7) | constructor(e,s,a,l){this.type=e,this.input=s,this.beginIndex=a,this.e... method parse (line 7) | static parse(e,s){if(e.length<=2||e.length>=5)return s.error(`Expected... method evaluate (line 7) | evaluate(e){const s=this.input.evaluate(e),a=this.beginIndex.evaluate(... method eachChild (line 7) | eachChild(e){e(this.input),e(this.beginIndex),this.endIndex&&e(this.en... method outputDefined (line 7) | outputDefined(){return!1} function Ar (line 7) | function Ar(e,s){const a=e.length-1;let l,c,u=0,d=a,f=0;for(;u<=d;)if(f=... class ar (line 7) | class ar{constructor(e,s,a){this.type=e,this.input=s,this.labels=[],this... method constructor (line 7) | constructor(e,s,a){this.type=e,this.input=s,this.labels=[],this.output... method parse (line 7) | static parse(e,s){if(e.length-1<4)return s.error(`Expected at least 4 ... method evaluate (line 7) | evaluate(e){const s=this.labels,a=this.outputs;if(1===s.length)return ... method eachChild (line 7) | eachChild(e){e(this.input);for(const s of this.outputs)e(s)} method outputDefined (line 7) | outputDefined(){return this.outputs.every((e=>e.outputDefined()))} function Dr (line 7) | function Dr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.c... function s (line 7) | function s(s,a,l,c){(this||e).cx=3*s,(this||e).bx=3*(l-s)-(this||e).cx,(... class pr (line 7) | class pr{constructor(e,s,a,l,c){this.type=e,this.operator=s,this.interpo... method constructor (line 7) | constructor(e,s,a,l,c){this.type=e,this.operator=s,this.interpolation=... method interpolationFactor (line 7) | static interpolationFactor(e,s,a,l){let c=0;if("exponential"===e.name)... method parse (line 7) | static parse(e,s){let[a,l,c,...u]=e;if(!Array.isArray(l)||0===l.length... method evaluate (line 7) | evaluate(e){const s=this.labels,a=this.outputs;if(1===s.length)return ... method eachChild (line 7) | eachChild(e){e(this.input);for(const s of this.outputs)e(s)} method outputDefined (line 7) | outputDefined(){return this.outputs.every((e=>e.outputDefined()))} function Br (line 7) | function Br(e,s,a,l){const c=l-a,u=e-a;return 0===c?0:1===s?u/c:(Math.po... class yr (line 7) | class yr{constructor(e,s){this.type=e,this.args=s}static parse(e,s){if(e... method constructor (line 7) | constructor(e,s){this.type=e,this.args=s} method parse (line 7) | static parse(e,s){if(e.length<2)return s.error("Expected at least one ... method evaluate (line 7) | evaluate(e){let s,a=null,l=0;for(const c of this.args)if(l++,a=c.evalu... method eachChild (line 7) | eachChild(e){this.args.forEach(e)} method outputDefined (line 7) | outputDefined(){return this.args.every((e=>e.outputDefined()))} function Vr (line 7) | function Vr(e,s){return"=="===e||"!="===e?"boolean"===s.kind||"string"==... function Ur (line 7) | function Ur(e,s,a,l){return 0===l.compare(s,a)} function Gr (line 7) | function Gr(e,s,a){const l="=="!==e&&"!="!==e;return class i{constructor... class Tr (line 7) | class Tr{constructor(e,s,a){this.type=mi,this.locale=a,this.caseSensitiv... method constructor (line 7) | constructor(e,s,a){this.type=mi,this.locale=a,this.caseSensitive=e,thi... method parse (line 7) | static parse(e,s){if(2!==e.length)return s.error("Expected one argumen... method evaluate (line 7) | evaluate(e){return new Mt(this.caseSensitive.evaluate(e),this.diacriti... method eachChild (line 7) | eachChild(e){e(this.caseSensitive),e(this.diacriticSensitive),this.loc... method outputDefined (line 7) | outputDefined(){return!1} class Ir (line 7) | class Ir{constructor(e,s,a,l,c){this.type=ci,this.number=e,this.locale=s... method constructor (line 7) | constructor(e,s,a,l,c){this.type=ci,this.number=e,this.locale=s,this.c... method parse (line 7) | static parse(e,s){if(3!==e.length)return s.error("Expected two argumen... method evaluate (line 7) | evaluate(e){return new Intl.NumberFormat(this.locale?this.locale.evalu... method eachChild (line 7) | eachChild(e){e(this.number),this.locale&&e(this.locale),this.currency&... method outputDefined (line 7) | outputDefined(){return!1} class Mr (line 7) | class Mr{constructor(e){this.type=_i,this.sections=e}static parse(e,s){i... method constructor (line 7) | constructor(e){this.type=_i,this.sections=e} method parse (line 7) | static parse(e,s){if(e.length<2)return s.error("Expected at least one ... method evaluate (line 7) | evaluate(e){return new Dt(this.sections.map((s=>{const a=s.content.eva... method eachChild (line 7) | eachChild(e){for(const s of this.sections)e(s.content),s.scale&&e(s.sc... method outputDefined (line 7) | outputDefined(){return!1} class Er (line 7) | class Er{constructor(e){this.type=Ii,this.input=e}static parse(e,s){if(2... method constructor (line 7) | constructor(e){this.type=Ii,this.input=e} method parse (line 7) | static parse(e,s){if(2!==e.length)return s.error("Expected two argumen... method evaluate (line 7) | evaluate(e){const s=this.input.evaluate(e),a=Lt.fromString(s);return a... method eachChild (line 7) | eachChild(e){e(this.input)} method outputDefined (line 7) | outputDefined(){return!1} class kr (line 7) | class kr{constructor(e){this.type=li,this.input=e}static parse(e,s){if(2... method constructor (line 7) | constructor(e){this.type=li,this.input=e} method parse (line 7) | static parse(e,s){if(2!==e.length)return s.error(`Expected 1 argument,... method evaluate (line 7) | evaluate(e){const s=this.input.evaluate(e);if("string"==typeof s)retur... method eachChild (line 7) | eachChild(e){e(this.input)} method outputDefined (line 7) | outputDefined(){return!1} function rn (line 7) | function rn(e,s){const a=(180+e[0])/360,l=(180-180/Math.PI*Math.log(Math... function nn (line 7) | function nn(e,s){const a=Math.pow(2,s.z);return[(c=(e[0]/tn+s.x)/a,360*c... function sn (line 7) | function sn(e,s){e[0]=Math.min(e[0],s[0]),e[1]=Math.min(e[1],s[1]),e[2]=... function on (line 7) | function on(e,s){return!(e[0]<=s[0]||e[2]>=s[2]||e[1]<=s[1]||e[3]>=s[3])} function ln (line 7) | function ln(e,s,a){const l=e[0]-s[0],c=e[1]-s[1],u=e[0]-a[0],d=e[1]-a[1]... function cn (line 7) | function cn(e,s,a,l){return 0!=(c=[l[0]-a[0],l[1]-a[1]])[0]*(u=[s[0]-e[0... function hn (line 7) | function hn(e,s,a){for(const l of a)for(let a=0;aa[2]){const s=.5*l;let c=e[0]-a[... function xn (line 7) | function xn(e,s,a,l){const c=Math.pow(2,l.z)*tn,u=[l.x*tn,l.y*tn],d=[];f... function vn (line 7) | function vn(e,s,a,l){const c=Math.pow(2,l.z)*tn,u=[l.x*tn,l.y*tn],d=[];f... class Zr (line 7) | class Zr{constructor(e,s){this.type=hi,this.geojson=e,this.geometries=s}... method constructor (line 7) | constructor(e,s){this.type=hi,this.geojson=e,this.geometries=s} method parse (line 7) | static parse(e,s){if(2!==e.length)return s.error(`'within' expression ... method evaluate (line 7) | evaluate(e){if(null!=e.geometry()&&null!=e.canonicalID()){if("Point"==... method eachChild (line 7) | eachChild(){} method outputDefined (line 7) | outputDefined(){return!0} method constructor (line 7) | constructor(e=[],s=(e,s)=>es?1:0){if(this.data=e,this.length=thi... method push (line 7) | push(e){this.data.push(e),this._up(this.length++)} method pop (line 7) | pop(){if(0===this.length)return;const e=this.data[0],s=this.data.pop();r... method peek (line 7) | peek(){return this.data[0]} method _up (line 7) | _up(e){const{data:s,compare:a}=this,l=s[e];for(;e>0;){const c=e-1>>1,u=s... method _down (line 7) | _down(e){const{data:s,compare:a}=this,l=this.length>>1,c=s[e];for(;ea;){if(l-a>600){const u=l-... function Tn (line 7) | function Tn(e,s,a){const l=e[s];e[s]=e[a],e[a]=l} function Sn (line 7) | function Sn(e,s){return es?1:0} function Pn (line 7) | function Pn(e,s){if(e.length<=1)return[e];const a=[];let l,c;for(const s... function In (line 7) | function In(e,s){return s.area-e.area} function Mn (line 7) | function Mn(e){let s=0;for(let a,l,c=0,u=e.length,d=u-1;c180;)e-=360;return e} function zn (line 7) | function zn(e,s){return s[0]-e[0]} function Rn (line 7) | function Rn(e){return e[1]-e[0]+1} function Ln (line 7) | function Ln(e,s){return e[1]>=e[0]&&e[1]e[1])return[null,null];const a=Rn(e);if(s){if(2... function On (line 7) | function On(e,s){if(!Ln(s,e.length))return[1/0,1/0,-1/0,-1/0];const a=[1... function Vn (line 7) | function Vn(e){const s=[1/0,1/0,-1/0,-1/0];for(const a of e)for(const e ... function Nn (line 7) | function Nn(e){return e[0]!==-1/0&&e[1]!==-1/0&&e[2]!==1/0&&e[3]!==1/0} function jn (line 7) | function jn(e,s,a){if(!Nn(e)||!Nn(s))return NaN;let l=0,c=0;return e[2]<... function Un (line 7) | function Un(e,s,a){const l=a.pointOnLine(s,e);return a.distance(e,l.point)} function Gn (line 7) | function Gn(e,s,a,l,c){const u=Math.min(Un(e,[a,l],c),Un(s,[a,l],c)),d=M... function Zn (line 7) | function Zn(e,s,a,l,c){if(!Ln(s,e.length)||!Ln(l,a.length))return 1/0;le... function qn (line 7) | function qn(e,s,a,l,c){if(!Ln(s,e.length)||!Ln(l,a.length))return NaN;le... function $n (line 7) | function $n(e,s,a){if(un(e,s,!0))return 0;let l=1/0;for(const c of s){co... function Wn (line 7) | function Wn(e,s,a,l){if(!Ln(s,e.length))return NaN;for(let l=s[0];l<=s[1... function Hn (line 7) | function Hn(e,s){for(const a of e)for(const e of a)if(un(e,s,!0))return!... function Xn (line 7) | function Xn(e,s,a,l=1/0){const c=Vn(e),u=Vn(s);if(l!==1/0&&jn(c,u,a)>=l)... function Yn (line 7) | function Yn(e,s,a,l,c,u){if(!u)return;const d=jn(On(l,u),c,a);d({typ... class En (line 7) | class En{constructor(e,s){this.type=li,this.geojson=e,this.geometries=s}... method constructor (line 7) | constructor(e,s){this.type=li,this.geojson=e,this.geometries=s} method parse (line 7) | static parse(e,s){if(2!==e.length)return s.error(`'distance' expressio... method evaluate (line 7) | evaluate(e){if(null!=e.geometry()&&null!=e.canonicalID()){if("Point"==... method eachChild (line 7) | eachChild(){} method outputDefined (line 7) | outputDefined(){return!0} class kn (line 7) | class kn{constructor(e){this.type=fi,this.key=e}static parse(e,s){if(2!=... method constructor (line 7) | constructor(e){this.type=fi,this.key=e} method parse (line 7) | static parse(e,s){if(2!==e.length)return s.error(`Expected 1 argument,... method evaluate (line 7) | evaluate(e){var s;const a=null===(s=e.globals)||void 0===s?void 0:s.gl... method eachChild (line 7) | eachChild(){} method outputDefined (line 7) | outputDefined(){return!1} class Fn (line 7) | class Fn{constructor(e,s,a,l){this.name=e,this.type=s,this._evaluate=a,t... method constructor (line 7) | constructor(e,s,a,l){this.name=e,this.type=s,this._evaluate=a,this.arg... method evaluate (line 7) | evaluate(e){return this._evaluate(e,this.args)} method eachChild (line 7) | eachChild(e){this.args.forEach(e)} method outputDefined (line 7) | outputDefined(){return!1} method parse (line 7) | static parse(e,s){const a=e[0],l=Fn.definitions[a];if(!l)return s.erro... method register (line 7) | static register(e,s){Fn.definitions=s;for(const a in s)e[a]=Fn} function is (line 7) | function is(e,[s,a,l,c]){s=s.evaluate(e),a=a.evaluate(e),l=l.evaluate(e)... function ns (line 7) | function ns(e,s){return e in s} function ss (line 7) | function ss(e,s){const a=s[e];return void 0===a?null:a} function os (line 7) | function os(e){return{type:e}} function ls (line 7) | function ls(e){if(e instanceof Wt)return ls(e.boundExpression);if(e inst... function hs (line 7) | function hs(e){if(e instanceof Fn){if("get"===e.name&&1===e.args.length)... function us (line 7) | function us(e){if(e instanceof Fn&&"feature-state"===e.name)return!1;let... function ps (line 7) | function ps(e,s){if(e instanceof Fn&&s.indexOf(e.name)>=0)return!1;let a... function fs (line 7) | function fs(e){return{result:"success",value:e}} function ms (line 7) | function ms(e){return{result:"error",value:e}} function _s (line 7) | function _s(e){return"data-driven"===e["property-type"]||"cross-faded-da... function gs (line 7) | function gs(e){return!!e.expression&&e.expression.parameters.indexOf("zo... function ys (line 7) | function ys(e){return!!e.expression&&e.expression.interpolated} function xs (line 7) | function xs(e){return e instanceof Number?"number":e instanceof String?"... function vs (line 7) | function vs(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)&&br... function bs (line 7) | function bs(e){return e} function ws (line 7) | function ws(e,s){const a=e.stops&&"object"==typeof e.stops[0][0],l=a||!(... function Ts (line 7) | function Ts(e,s,a){return void 0!==e?e:void 0!==s?s:void 0!==a?a:void 0} function Ss (line 7) | function Ss(e,s,a,l,c){return Ts(typeof a===c?l[a]:void 0,e.default,s.de... function Is (line 7) | function Is(e,s,a){if("number"!==xs(a))return Ts(e.default,s.default);co... function Ms (line 7) | function Ms(e,s,a){const l=void 0!==e.base?e.base:1;if("number"!==xs(a))... function As (line 7) | function As(e,s,a){switch(s.type){case"color":a=It.parse(a);break;case"f... class ei (line 7) | class ei{constructor(e,s,a){this.expression=e,this._warningHistory={},th... method constructor (line 7) | constructor(e,s,a){this.expression=e,this._warningHistory={},this._eva... method evaluateWithoutErrorHandling (line 7) | evaluateWithoutErrorHandling(e,s,a,l,c,u){return this._globalState&&(e... method evaluate (line 7) | evaluate(e,s,a,l,c,u){this._globalState&&(e=Ys(e,this._globalState)),t... method awaitingQuery (line 7) | get awaitingQuery(){return!!this._readbackQueue} method constructor (line 7) | constructor(e){this._readbackWaitFrames=4,this._measureWaitFrames=6,th... method destroy (line 7) | destroy(){const e=this._cachedRenderContext.context.gl;this._fullscree... method updateErrorLoop (line 7) | updateErrorLoop(e,s){const a=this._updateCount;return this._readbackQu... method _bindFramebuffer (line 7) | _bindFramebuffer(){const e=this._cachedRenderContext.context,s=e.gl;e.... method _renderErrorTexture (line 7) | _renderErrorTexture(e,s){const l=this._cachedRenderContext.context,c=l... method _tryReadback (line 7) | _tryReadback(){const e=this._cachedRenderContext.context.gl;if(this._p... method _parseRGBA8float (line 7) | static _parseRGBA8float(e){let s=0;return s+=e[0]/256,s+=e[1]/65536,s+... function ks (line 7) | function ks(e){return Array.isArray(e)&&e.length>0&&"string"==typeof e[0... function js (line 7) | function js(e,s,a){const l=new Kt(ts,ls,[],s?function(e){const s={color:... class ni (line 7) | class ni{constructor(e,s,a){this.kind=e,this._styleExpression=s,this.isS... method constructor (line 7) | constructor(e,s,a){this.kind=e,this._styleExpression=s,this.isStateDep... method evaluateWithoutErrorHandling (line 7) | evaluateWithoutErrorHandling(e,s,a,l,c,u){return this._globalState&&(e... method evaluate (line 7) | evaluate(e,s,a,l,c,u){return this._globalState&&(e=Ys(e,this._globalSt... class ii (line 7) | class ii{constructor(e,s,a,l,c){this.kind=e,this.zoomStops=a,this._style... method constructor (line 7) | constructor(e,s,a,l,c){this.kind=e,this.zoomStops=a,this._styleExpress... method evaluateWithoutErrorHandling (line 7) | evaluateWithoutErrorHandling(e,s,a,l,c,u){return this._globalState&&(e... method evaluate (line 7) | evaluate(e,s,a,l,c,u){return this._globalState&&(e=Ys(e,this._globalSt... method interpolationFactor (line 7) | interpolationFactor(e,s,a){return this.interpolationType?pr.interpolat... function Ws (line 7) | function Ws(e,s,a){const l=js(e,s,a);if("error"===l.result)return l;cons... class ai (line 7) | class ai{constructor(e,s){this._parameters=e,this._specification=s,ti(th... method constructor (line 7) | constructor(e,s){this._parameters=e,this._specification=s,ti(this,ws(t... method deserialize (line 7) | static deserialize(e){return new ai(e._parameters,e._specification)} method serialize (line 7) | static serialize(e){return{_parameters:e._parameters,_specification:e.... function Hs (line 7) | function Hs(e){let s=null;if(e instanceof Jt)s=Hs(e.result);else if(e in... function Xs (line 7) | function Xs(e,s=new Set){return e instanceof kn&&s.add(e.key),e.eachChil... function Ys (line 7) | function Ys(e,s){const{zoom:a,heatmapDensity:l,elevation:c,lineProgress:... function Qs (line 7) | function Qs(e){if(!0===e||!1===e)return!0;if(!Array.isArray(e)||0===e.le... function co (line 7) | function co(e,s){if(null==e)return{filter:()=>!0,needGeometry:!1,getGlob... function uo (line 7) | function uo(e,s){return es?1:0} function fo (line 7) | function fo(e){if(!Array.isArray(e))return!1;if("within"===e[0]||"distan... function bo (line 7) | function bo(e){if(!e)return!0;const s=e[0];return e.length<=1?"any"!==s:... function wo (line 7) | function wo(e,s,a){switch(e){case"$type":return[`filter-type-${a}`,s];ca... function Po (line 7) | function Po(e,s){if(0===s.length)return!1;switch(e){case"$type":return["... function Co (line 7) | function Co(e){switch(e){case"$type":return!0;case"$id":return["filter-h... function Vo (line 7) | function Vo(e){return["!",e]} function No (line 7) | function No(e){const s=typeof e;if("number"===s||"boolean"===s||"string"... function jo (line 7) | function jo(e){let s="";for(const a of ft)s+=`/${No(e[a])}`;return s} function Ho (line 7) | function Ho(e){const s=e.value;return s?[new De(e.key,s,"constants have ... function Qo (line 7) | function Qo(e){return e instanceof Number||e instanceof String||e instan... function Ja (line 7) | function Ja(e){if(Array.isArray(e))return e.map(Ja);if(e instanceof Obje... function el (line 7) | function el(e){const s=e.key,a=e.value,l=e.valueSpec||{},c=e.objectEleme... function tl (line 7) | function tl(e){const s=e.value,a=e.valueSpec,l=e.style,c=e.styleSpec,u=e... function il (line 7) | function il(e){const s=e.key,a=e.value,l=e.valueSpec;let c=xs(a);return"... function rl (line 7) | function rl(e){const s=e.valueSpec,a=Qo(e.value.type);let l,c,u,d={};con... function nl (line 7) | function nl(e){const s=("property"===e.expressionContext?Ws:js)(Ja(e.val... function sl (line 7) | function sl(e){const s=e.key,a=e.value,l=xs(a);return"string"!==l?[new D... function ol (line 7) | function ol(e){const s=e.key,a=e.value,l=e.valueSpec,c=[];return Array.i... function al (line 7) | function al(e){return Qs(Ja(e.value))?nl(ti({},e,{expressionContext:"fil... function ll (line 7) | function ll(e){const s=e.value,a=e.key;if("array"!==xs(s))return[new De(... function hl (line 7) | function hl(e,s){const a=e.key,l=e.validateSpec,c=e.style,u=e.styleSpec,... function dl (line 7) | function dl(e){return hl(e,"paint")} function pl (line 7) | function pl(e){return hl(e,"layout")} function fl (line 7) | function fl(e){let s=[];const a=e.value,l=e.key,c=e.style,u=e.styleSpec;... function _l (line 7) | function _l(e){const s=e.value,a=e.key,l=xs(s);return"string"!==l?[new D... function xl (line 7) | function xl(e){const s=e.value,a=e.key,l=e.styleSpec,c=e.style,u=e.valid... function vl (line 7) | function vl(e){const s=e.value,a=e.styleSpec,l=a.light,c=e.style;let u=[... function wl (line 7) | function wl(e){const s=e.value,a=e.styleSpec,l=a.sky,c=e.style,u=xs(s);i... function Tl (line 7) | function Tl(e){const s=e.value,a=e.styleSpec,l=a.terrain,c=e.style;let u... function Pl (line 7) | function Pl(e){let s=[];const a=e.value,l=e.key;if(Array.isArray(a)){con... function El (line 7) | function El(e){return s=e.value,Boolean(s)&&s.constructor===Object?[]:[n... function Al (line 7) | function Al(e){const s=e.value,a=e.valueSpec,l=e.styleSpec;return e.vali... function Dl (line 7) | function Dl(e){const s=e.value,a=e.key,l=_l(e);return l.length||(-1===s.... function zl (line 7) | function zl(e,s=pt){let a=[];return a=a.concat(Al({key:"",value:e,valueS... function Rl (line 7) | function Rl(e){return function(s){return e(Object.assign({},s,{validateS... function Ll (line 7) | function Ll(e){return[].concat(e).sort(((e,s)=>e.line-s.line))} function Fl (line 7) | function Fl(s){return function(...a){return Ll(s.apply(this||e,a))}} function Gl (line 7) | function Gl(e,s){let a=!1;if(s&&s.length)for(const l of s)e.fire(new me(... class as (line 7) | class as{constructor(e,s,a){const l=this.cells=[];if(e instanceof ArrayB... method constructor (line 7) | constructor(e,s,a){const l=this.cells=[];if(e instanceof ArrayBuffer){... method insert (line 7) | insert(e,s,a,l,c){this._forEachCell(s,a,l,c,this._insertCell,this.uid+... method _insertReadonly (line 7) | _insertReadonly(){throw new Error("Cannot insert into a GridIndex crea... method _insertCell (line 7) | _insertCell(e,s,a,l,c,u){this.cells[c].push(u)} method query (line 7) | query(e,s,a,l,c){const u=this.min,d=this.max;if(e<=u&&s<=u&&d<=a&&d<=l... method _queryCell (line 7) | _queryCell(e,s,a,l,c,u,d,f){const _=this.cells[c];if(null!==_){const c... method _forEachCell (line 7) | _forEachCell(e,s,a,l,c,u,d,f){const _=this._convertToCellCoord(e),y=th... method _convertFromCellCoord (line 7) | _convertFromCellCoord(e){return(e-this.padding)/this.scale} method _convertToCellCoord (line 7) | _convertToCellCoord(e){return Math.max(0,Math.min(this.d-1,Math.floor(... method toArrayBuffer (line 7) | toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;const e=th... method serialize (line 7) | static serialize(e,s){const a=e.toArrayBuffer();return s&&s.push(a),{b... method deserialize (line 7) | static deserialize(e){return new as(e.buffer)} function ql (line 7) | function ql(e,s,a={}){if(Zl[e])throw new Error(`${e} is already register... function $l (line 7) | function $l(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ... function Wl (line 7) | function Wl(e){return e.$name||e.constructor._classRegistryKey} function Hl (line 7) | function Hl(e){return!function(e){if(null===e||"object"!=typeof e)return... function Xl (line 7) | function Xl(e,s){if(Hl(e))return($l(e)||Ne(e))&&s&&s.push(e),ArrayBuffer... function Yl (line 7) | function Yl(e){if(Hl(e))return e;if(Array.isArray(e))return e.map(Yl);if... class ds (line 7) | class ds{constructor(){this.first=!0}update(e,s){const a=Math.floor(e);r... method constructor (line 7) | constructor(){this.first=!0} method update (line 7) | update(e,s){const a=Math.floor(e);return this.first?(this.first=!1,thi... function Kl (line 7) | function Kl(e){return/[\u02EA\u02EB\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2F... function Jl (line 7) | function Jl(e){return/[\u02EA\u02EB\u1100-\u11FF\u1400-\u167F\u18B0-\u18... function Ql (line 7) | function Ql(e){for(const s of e)if(Jl(s.charCodeAt(0)))return!0;return!1} function ec (line 7) | function ec(e){for(const s of e)if(!rc(s.charCodeAt(0)))return!1;return!0} function tc (line 7) | function tc(e){const s=e.map((e=>{try{return new RegExp(`\\p{sc=${e}}`,"... function rc (line 7) | function rc(e){return!ic.test(String.fromCodePoint(e))} function nc (line 7) | function nc(e){return!(Jl(e)||(s=e,/[\xA7\xA9\xAE\xB1\xBC-\xBE\xD7\xF7\u... function oc (line 7) | function oc(e){return sc.test(String.fromCodePoint(e))} function ac (line 7) | function ac(e,s){return!(!s&&oc(e)||/[\u0900-\u0DFF\u0F00-\u109F\u1780-\... function lc (line 7) | function lc(e){for(const s of e)if(oc(s.charCodeAt(0)))return!0;return!1} method constructor (line 7) | constructor(){this.TIMEOUT=5e3,this.applyArabicShaping=null,this.process... method setState (line 7) | setState(e){this.pluginStatus=e.pluginStatus,this.pluginURL=e.pluginURL} method getState (line 7) | getState(){return{pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}} method setMethods (line 7) | setMethods(e){if(cc.isParsed())throw new Error("RTL text plugin already ... method isParsed (line 7) | isParsed(){return null!=this.applyArabicShaping&&null!=this.processBidir... method getRTLTextPluginStatus (line 7) | getRTLTextPluginStatus(){return this.pluginStatus} method syncState (line 7) | syncState(e,s){return a(this,void 0,void 0,(function*(){if(this.isParsed... class Es (line 7) | class Es{constructor(e,s){this.isSupportedScript=hc,this.zoom=e,s?(this.... method constructor (line 7) | constructor(e,s){this.isSupportedScript=hc,this.zoom=e,s?(this.now=s.n... method crossFadingFactor (line 7) | crossFadingFactor(){return 0===this.fadeDuration?1:Math.min((this.now-... method getCrossfadeParameters (line 7) | getCrossfadeParameters(){const e=this.zoom,s=e-Math.floor(e),a=this.cr... function hc (line 7) | function hc(e){return function(e,s){for(const a of e)if(!ac(a.charCodeAt... class Ds (line 7) | class Ds{constructor(e,s,a){this.property=e,this.value=s,this.expression... method constructor (line 7) | constructor(e,s,a){this.property=e,this.value=s,this.expression=functi... method isDataDriven (line 7) | isDataDriven(){return"source"===this.expression.kind||"composite"===th... method getGlobalStateRefs (line 7) | getGlobalStateRefs(){return this.expression.globalStateRefs||new Set} method possiblyEvaluate (line 7) | possiblyEvaluate(e,s,a){return this.property.possiblyEvaluate(this,e,s... class Fs (line 7) | class Fs{constructor(e,s){this.property=e,this.value=new Ds(e,void 0,s)}... method constructor (line 7) | constructor(e,s){this.property=e,this.value=new Ds(e,void 0,s)} method transitioned (line 7) | transitioned(e,s){return new Ps(this.property,this.value,s,Se({},e.tra... method untransitioned (line 7) | untransitioned(){return new Ps(this.property,this.value,null,{},0)} class Bs (line 7) | class Bs{constructor(e,s){this._properties=e,this._values=Object.create(... method constructor (line 7) | constructor(e,s){this._properties=e,this._values=Object.create(e.defau... method getValue (line 7) | getValue(e){return Ae(this._values[e].value.value)} method setValue (line 7) | setValue(e,s){Object.prototype.hasOwnProperty.call(this._values,e)||(t... method getTransition (line 7) | getTransition(e){return Ae(this._values[e].transition)} method setTransition (line 7) | setTransition(e,s){Object.prototype.hasOwnProperty.call(this._values,e... method serialize (line 7) | serialize(){const e={};for(const s of Object.keys(this._values)){const... method transitioned (line 7) | transitioned(e,s){const a=new zs(this._properties);for(const l of Obje... method untransitioned (line 7) | untransitioned(){const e=new zs(this._properties);for(const s of Objec... class Ps (line 7) | class Ps{constructor(e,s,a,l,c){this.property=e,this.value=s,this.begin=... method constructor (line 7) | constructor(e,s,a,l,c){this.property=e,this.value=s,this.begin=c+l.del... method possiblyEvaluate (line 7) | possiblyEvaluate(e,s,a){const l=e.now||0,c=this.value.possiblyEvaluate... class zs (line 7) | class zs{constructor(e){this._properties=e,this._values=Object.create(e.... method constructor (line 7) | constructor(e){this._properties=e,this._values=Object.create(e.default... method possiblyEvaluate (line 7) | possiblyEvaluate(e,s,a){const l=new Ls(this._properties);for(const c o... method hasTransition (line 7) | hasTransition(){for(const e of Object.keys(this._values))if(this._valu... class Vs (line 7) | class Vs{constructor(e,s){this._properties=e,this._values=Object.create(... method constructor (line 7) | constructor(e,s){this._properties=e,this._values=Object.create(e.defau... method hasValue (line 7) | hasValue(e){return void 0!==this._values[e].value} method getValue (line 7) | getValue(e){return Ae(this._values[e].value)} method setValue (line 7) | setValue(e,s){this._values[e]=new Ds(this._values[e].property,null===s... method serialize (line 7) | serialize(){const e={};for(const s of Object.keys(this._values)){const... method possiblyEvaluate (line 7) | possiblyEvaluate(e,s,a){const l=new Ls(this._properties);for(const c o... class Cs (line 7) | class Cs{constructor(e,s,a){this.property=e,this.value=s,this.parameters... method constructor (line 7) | constructor(e,s,a){this.property=e,this.value=s,this.parameters=a} method isConstant (line 7) | isConstant(){return"constant"===this.value.kind} method constantOr (line 7) | constantOr(e){return"constant"===this.value.kind?this.value.value:e} method evaluate (line 7) | evaluate(e,s,a,l){return this.property.evaluate(this.value,this.parame... class Ls (line 7) | class Ls{constructor(e){this._properties=e,this._values=Object.create(e.... method constructor (line 7) | constructor(e){this._properties=e,this._values=Object.create(e.default... method get (line 7) | get(e){return this._values[e]} class Os (line 7) | class Os{constructor(e){this.specification=e}possiblyEvaluate(e,s){if(e.... method constructor (line 7) | constructor(e){this.specification=e} method possiblyEvaluate (line 7) | possiblyEvaluate(e,s){if(e.isDataDriven())throw new Error("Value shoul... method interpolate (line 7) | interpolate(e,s,a){const l=Or[this.specification.type];return l?l(e,s,... class Rs (line 7) | class Rs{constructor(e,s){this.specification=e,this.overrides=s}possibly... method constructor (line 7) | constructor(e,s){this.specification=e,this.overrides=s} method possiblyEvaluate (line 7) | possiblyEvaluate(e,s,a,l){return new Cs(this,"constant"===e.expression... method interpolate (line 7) | interpolate(e,s,a){if("constant"!==e.value.kind||"constant"!==s.value.... method evaluate (line 7) | evaluate(e,s,a,l,c,u){return"constant"===e.kind?e.value:e.evaluate(s,a... class Ns (line 7) | class Ns extends Rs{possiblyEvaluate(e,s,a,l){if(void 0===e.value)return... method possiblyEvaluate (line 7) | possiblyEvaluate(e,s,a,l){if(void 0===e.value)return new Cs(this,{kind... method evaluate (line 7) | evaluate(e,s,a,l,c,u){if("source"===e.kind){const d=e.evaluate(s,a,l,c... method _calculate (line 7) | _calculate(e,s,a,l){return l.zoom>l.zoomHistory.lastIntegerZoom?{from:... method interpolate (line 7) | interpolate(e){return e} class $s (line 7) | class $s{constructor(e){this.specification=e}possiblyEvaluate(e,s,a,l){i... method constructor (line 7) | constructor(e){this.specification=e} method possiblyEvaluate (line 7) | possiblyEvaluate(e,s,a,l){if(void 0!==e.value){if("constant"===e.expre... method _calculate (line 7) | _calculate(e,s,a,l){return l.zoom>l.zoomHistory.lastIntegerZoom?{from:... method interpolate (line 7) | interpolate(e){return e} class Us (line 7) | class Us{constructor(e){this.specification=e}possiblyEvaluate(e,s,a,l){r... method constructor (line 7) | constructor(e){this.specification=e} method possiblyEvaluate (line 7) | possiblyEvaluate(e,s,a,l){return!!e.expression.evaluate(s,null,{},a,l)} method interpolate (line 7) | interpolate(){return!1} class qs (line 7) | class qs{constructor(e){this.properties=e,this.defaultPropertyValues={},... method constructor (line 7) | constructor(e){this.properties=e,this.defaultPropertyValues={},this.de... class Gs (line 7) | class Gs extends ge{constructor(e,s,a){if(super(),this.id=e.id,this.type... method constructor (line 7) | constructor(e,s,a){if(super(),this.id=e.id,this.type=e.type,this._glob... method setFilter (line 7) | setFilter(e){this.filter=e,this._featureFilter=co(e,this._globalState)} method getCrossfadeParameters (line 7) | getCrossfadeParameters(){return this._crossfadeParameters} method getLayoutProperty (line 7) | getLayoutProperty(e){return"visibility"===e?this.visibility:this._unev... method getLayoutAffectingGlobalStateRefs (line 7) | getLayoutAffectingGlobalStateRefs(){const e=new Set;if(this._unevaluat... method getPaintAffectingGlobalStateRefs (line 7) | getPaintAffectingGlobalStateRefs(){var e;const s=new globalThis.Map;if... method setLayoutProperty (line 7) | setLayoutProperty(e,s,a={}){null!=s&&this._validate(Ul,`layers.${this.... method getPaintProperty (line 7) | getPaintProperty(e){return e.endsWith(uc)?this._transitionablePaint.ge... method setPaintProperty (line 7) | setPaintProperty(e,s,a={}){if(null!=s&&this._validate(jl,`layers.${thi... method _handleSpecialPaintPropertyUpdate (line 7) | _handleSpecialPaintPropertyUpdate(e){} method _handleOverridablePaintPropertyUpdate (line 7) | _handleOverridablePaintPropertyUpdate(e,s,a){return!1} method isHidden (line 7) | isHidden(e,s=!1){return!!(this.minzoom&&e<(s?Math.floor(this.minzoom):... method updateTransitions (line 7) | updateTransitions(e){this._transitioningPaint=this._transitionablePain... method hasTransition (line 7) | hasTransition(){return this._transitioningPaint.hasTransition()} method recalculate (line 7) | recalculate(e,s){e.getCrossfadeParameters&&(this._crossfadeParameters=... method serialize (line 7) | serialize(){const e={id:this.id,type:this.type,source:this.source,"sou... method _validate (line 7) | _validate(e,s,a,l,c={}){return(!c||!1!==c.validate)&&Gl(this,e.call(Ol... method is3D (line 7) | is3D(){return!1} method isTileClipped (line 7) | isTileClipped(){return!1} method hasOffscreenPass (line 7) | hasOffscreenPass(){return!1} method resize (line 7) | resize(){} method isStateDependent (line 7) | isStateDependent(){for(const e in this.paint._values){const s=this.pai... method paint (line 7) | get paint(){return dc=dc||new qs({"raster-opacity":new Os(pt.paint_raste... class Zs (line 7) | class Zs extends Gs{constructor(e,s){super(e,fc,s)}} method constructor (line 7) | constructor(e,s){super(e,fc,s)} class Ks (line 7) | class Ks{constructor(e,s){this._structArray=e,this._pos1=s*this.size,thi... method constructor (line 7) | constructor(e,s){this._structArray=e,this._pos1=s*this.size,this._pos2... class Js (line 7) | class Js{constructor(){this.isTransferred=!1,this.capacity=-1,this.resiz... method constructor (line 7) | constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)} method serialize (line 7) | static serialize(e,s){return e._trim(),s&&(e.isTransferred=!0,s.push(e... method deserialize (line 7) | static deserialize(e){const s=Object.create(this.prototype);return s.a... method _trim (line 7) | _trim(){this.length!==this.capacity&&(this.capacity=this.length,this.a... method clear (line 7) | clear(){this.length=0} method resize (line 7) | resize(e){this.reserve(e),this.length=e} method reserve (line 7) | reserve(e){if(e>this.capacity){this.capacity=Math.max(e,Math.floor(5*t... method _refreshViews (line 7) | _refreshViews(){throw new Error("_refreshViews() must be implemented b... function _c (line 7) | function _c(e,s=1){let a=0,l=0;return{members:e.map((e=>{const c=mc[e.ty... function gc (line 7) | function gc(e,s){return Math.ceil(e/s)*s} class ea (line 7) | class ea extends Js{_refreshViews(){this.uint8=new Uint8Array(this.array... method _refreshViews (line 7) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16... method emplaceBack (line 7) | emplaceBack(e,s){const a=this.length;return this.resize(a+1),this.empl... method emplace (line 7) | emplace(e,s,a){const l=2*e;return this.int16[l+0]=s,this.int16[l+1]=a,e} class ta (line 7) | class ta extends Js{_refreshViews(){this.uint8=new Uint8Array(this.array... method _refreshViews (line 7) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16... method emplaceBack (line 7) | emplaceBack(e,s,a){const l=this.length;return this.resize(l+1),this.em... method emplace (line 7) | emplace(e,s,a,l){const c=3*e;return this.int16[c+0]=s,this.int16[c+1]=... class ra (line 7) | class ra extends Js{_refreshViews(){this.uint8=new Uint8Array(this.array... method _refreshViews (line 7) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16... method emplaceBack (line 7) | emplaceBack(e,s,a,l){const c=this.length;return this.resize(c+1),this.... method emplace (line 7) | emplace(e,s,a,l,c){const u=4*e;return this.int16[u+0]=s,this.int16[u+1... class na (line 7) | class na extends Js{_refreshViews(){this.uint8=new Uint8Array(this.array... method _refreshViews (line 7) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16... method emplaceBack (line 7) | emplaceBack(e,s,a,l,c,u){const d=this.length;return this.resize(d+1),t... method emplace (line 7) | emplace(e,s,a,l,c,u,d){const f=6*e;return this.int16[f+0]=s,this.int16... class ia (line 7) | class ia extends Js{_refreshViews(){this.uint8=new Uint8Array(this.array... method _refreshViews (line 7) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16... method emplaceBack (line 7) | emplaceBack(e,s,a,l,c,u){const d=this.length;return this.resize(d+1),t... method emplace (line 7) | emplace(e,s,a,l,c,u,d){const f=4*e,_=8*e;return this.int16[f+0]=s,this... class sa (line 7) | class sa extends Js{_refreshViews(){this.uint8=new Uint8Array(this.array... method _refreshViews (line 7) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float... method emplaceBack (line 7) | emplaceBack(e,s){const a=this.length;return this.resize(a+1),this.empl... method emplace (line 7) | emplace(e,s,a){const l=2*e;return this.float32[l+0]=s,this.float32[l+1... class aa (line 7) | class aa extends Js{_refreshViews(){this.uint8=new Uint8Array(this.array... method _refreshViews (line 7) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint1... method emplaceBack (line 7) | emplaceBack(e,s,a,l,c,u,d,f,_,y){const b=this.length;return this.resiz... method emplace (line 7) | emplace(e,s,a,l,c,u,d,f,_,y,b){const S=10*e;return this.uint16[S+0]=s,... class oa (line 7) | class oa extends Js{_refreshViews(){this.uint8=new Uint8Array(this.array... method _refreshViews (line 7) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint1... method emplaceBack (line 7) | emplaceBack(e,s,a,l,c,u,d,f){const _=this.length;return this.resize(_+... method emplace (line 7) | emplace(e,s,a,l,c,u,d,f,_){const y=8*e;return this.uint16[y+0]=s,this.... class la (line 7) | class la extends Js{_refreshViews(){this.uint8=new Uint8Array(this.array... method _refreshViews (line 7) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16... method emplaceBack (line 7) | emplaceBack(e,s,a,l,c,u,d,f,_,y,b,S){const P=this.length;return this.r... method emplace (line 7) | emplace(e,s,a,l,c,u,d,f,_,y,b,S,P){const M=12*e;return this.int16[M+0]... class ua (line 7) | class ua extends Js{_refreshViews(){this.uint8=new Uint8Array(this.array... method _refreshViews (line 7) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float... method emplaceBack (line 7) | emplaceBack(e,s,a){const l=this.length;return this.resize(l+1),this.em... method emplace (line 7) | emplace(e,s,a,l){const c=3*e;return this.float32[c+0]=s,this.float32[c... class ca (line 7) | class ca extends Js{_refreshViews(){this.uint8=new Uint8Array(this.array... method _refreshViews (line 7) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint3... method emplaceBack (line 7) | emplaceBack(e){const s=this.length;return this.resize(s+1),this.emplac... method emplace (line 7) | emplace(e,s){return this.uint32[1*e+0]=s,e} class ha (line 7) | class ha extends Js{_refreshViews(){this.uint8=new Uint8Array(this.array... method _refreshViews (line 7) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16... method emplaceBack (line 7) | emplaceBack(e,s,a,l,c,u,d,f,_){const y=this.length;return this.resize(... method emplace (line 7) | emplace(e,s,a,l,c,u,d,f,_,y){const b=10*e,S=5*e;return this.int16[b+0]... class pa (line 7) | class pa extends Js{_refreshViews(){this.uint8=new Uint8Array(this.array... method _refreshViews (line 7) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16... method emplaceBack (line 7) | emplaceBack(e,s,a,l,c,u){const d=this.length;return this.resize(d+1),t... method emplace (line 7) | emplace(e,s,a,l,c,u,d){const f=6*e;return this.int16[f+0]=s,this.int16... method constructor (line 7) | constructor(e,s,a){this.context=e;const l=e.gl;this.buffer=l.createBuf... method bind (line 7) | bind(){this.context.bindElementBuffer.set(this.buffer)} method updateData (line 7) | updateData(e){const s=this.context.gl;if(!this.dynamicDraw)throw new E... method destroy (line 7) | destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),dele... class fa (line 7) | class fa extends Js{_refreshViews(){this.uint8=new Uint8Array(this.array... method _refreshViews (line 7) | _refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float... method emplaceBack (line 7) | emplaceBack(e,s,a,l,c){const u=this.length;return this.resize(u+1),thi... method emplace (line 7) | emplace(e,s,a,l,c,u){const d=4*e,f=8*e;return this.float32[d+0]=s,this... method constructor (line 7) | constructor(e,s,a,l){this.length=s.length,this.attributes=a,this.itemS... method bind (line 7) | bind(){this.context.bindVertexBuffer.set(this.buffer)} method updateData (line 7) | updateData(e){if(e.length!==this.length)throw new Error(`Length of new... method enableAttributes (line 7) | enableAttributes(e,s){for(let a=0;a