Skip to main content

CONFIG

FitFileViewer - API Documentation v29.4.0


FitFileViewer - API Documentation / utils/config/constants / CONFIG

Variable: CONFIG

const CONFIG: { APP: { NAME: string; VERSION: string; AUTHOR: string; IPC_CHANNELS: { APP_VERSION: string; CHROME_VERSION: string; DIALOG_OPEN_FILE: string; ELECTRON_VERSION: string; FILE_READ: string; FIT_DECODE: string; FIT_PARSE: string; NODE_VERSION: string; PLATFORM_INFO: string; SHELL_OPEN_EXTERNAL: string; THEME_GET: string; }; EVENTS: { INSTALL_UPDATE: string; MENU_OPEN_FILE: string; MENU_OPEN_OVERLAY: string; SET_FULLSCREEN: string; SET_THEME: string; THEME_CHANGED: string; }; }; CHART: { DEFAULT_ZOOM_LEVEL: number; MAX_ZOOM_LEVEL: number; MIN_ZOOM_LEVEL: number; CHART_TYPES: { ALTITUDE: string; ELEVATION: string; GPS_TRACK: string; HEART_RATE: string; LAP_ZONE: string; POWER: string; SPEED: string; }; DEFAULT_CHART: string; DEFAULT_COLORS: { PRIMARY: string; SECONDARY: string; }; }; CONVERSION: { DECIMAL_PLACES: number; DECIMAL_PLACES_PRECISE: number; METERS_PER_KILOMETER: number; METERS_PER_MILE: number; METERS_TO_FEET: number; SECONDS_PER_HOUR: number; SECONDS_PER_MINUTE: number; MILLISECONDS_PER_SECOND: number; CELSIUS_TO_FAHRENHEIT_MULTIPLIER: number; CELSIUS_TO_FAHRENHEIT_OFFSET: number; MPS_TO_KMH: number; MPS_TO_MPH: number; KG_TO_POUNDS: number; METERS_TO_INCHES: number; INCHES_PER_FOOT: number; }; DEBUG: { ENABLED: boolean; LOG_LEVELS: { DEBUG: string; ERROR: string; INFO: string; WARN: string; }; CATEGORIES: { CHARTS: string; DATA: string; FILES: string; STATE: string; UI: string; }; }; DISTANCE_UNITS: { FEET: string; KILOMETERS: string; METERS: string; MILES: string; }; ERROR: { CODES: { FILE_NOT_FOUND: string; INVALID_INPUT: string; NETWORK_ERROR: string; PARSE_ERROR: string; PERMISSION_DENIED: string; STATE_ERROR: string; UNKNOWN_ERROR: string; VALIDATION_ERROR: string; }; MESSAGES: { FILE_NOT_FOUND: string; INVALID_INPUT: string; NETWORK_ERROR: string; PARSE_ERROR: string; PERMISSION_DENIED: string; STATE_ERROR: string; UNKNOWN_ERROR: string; VALIDATION_ERROR: string; }; }; FILE: { SUPPORTED_EXTENSIONS: string[]; SUPPORTED_MIME_TYPES: string[]; MAX_FILE_SIZE: number; EXPORT_FORMATS: { CSV: string; GPX: string; JSON: string; }; DEFAULT_EXPORT_FORMAT: string; IFRAME_PATHS: { ALT_FIT: string; }; }; MAP: { DEFAULT_ZOOM: number; DEFAULT_CENTER: number[]; PROVIDERS: { OPENSTREETMAP: string; SATELLITE: string; }; DEFAULT_PROVIDER: string; }; PERFORMANCE: { ENABLE_MONITORING: boolean; MAX_HISTORY_SIZE: number; MEMORY_CHECK_INTERVAL: number; SLOW_OPERATION_THRESHOLD: number; CATEGORIES: { CHARTS: string; DATA_PROCESSING: string; FILE_OPERATIONS: string; STATE_MANAGEMENT: string; UI_RENDERING: string; }; }; TEMPERATURE_UNITS: { CELSIUS: string; FAHRENHEIT: string; KELVIN: string; }; TIME_UNITS: { HOURS: string; MILLISECONDS: string; MINUTES: string; SECONDS: string; }; UI: { DEFAULT_THEME: string; THEMES: { DARK: string; LIGHT: string; SYSTEM: string; }; NOTIFICATION_TYPES: { ERROR: { ariaLabel: string; duration: number; icon: string; type: string; }; INFO: { ariaLabel: string; duration: number; icon: string; type: string; }; SUCCESS: { ariaLabel: string; duration: number; icon: string; type: string; }; WARNING: { ariaLabel: string; duration: number; icon: string; type: string; }; }; DOM_IDS: { ACTIVE_FILE_NAME: string; ACTIVE_FILE_NAME_CONTAINER: string; ALT_FIT_IFRAME: string; CONTENT_CHART: string; CONTENT_DATA: string; CONTENT_MAP: string; CONTENT_SUMMARY: string; DROP_OVERLAY: string; NOTIFICATION: string; TAB_CHART: string; TAB_SUMMARY: string; UNLOAD_FILE_BTN: string; ZWIFT_IFRAME: string; }; CSS_CLASSES: { ACTIVE: string; HIDDEN: string; LOADING: string; SHOW: string; THEMED_BTN: string; }; ANIMATION_DURATION: number; DEBOUNCE_DELAY: number; SUMMARY_COLUMN_SELECTOR_DELAY: number; SIDEBAR_WIDTH: number; HEADER_HEIGHT: number; }; VALIDATION: { MIN_DISTANCE: number; MAX_DISTANCE: number; MIN_DURATION: number; MAX_DURATION: number; MIN_SPEED: number; MAX_SPEED: number; MAX_STRING_LENGTH: number; MIN_STRING_LENGTH: number; }; }

Defined in: utils/config/constants.js:475

Export all constants as a single object for convenience

Type Declaration​

APP​

APP: { NAME: string; VERSION: string; AUTHOR: string; IPC_CHANNELS: { APP_VERSION: string; CHROME_VERSION: string; DIALOG_OPEN_FILE: string; ELECTRON_VERSION: string; FILE_READ: string; FIT_DECODE: string; FIT_PARSE: string; NODE_VERSION: string; PLATFORM_INFO: string; SHELL_OPEN_EXTERNAL: string; THEME_GET: string; }; EVENTS: { INSTALL_UPDATE: string; MENU_OPEN_FILE: string; MENU_OPEN_OVERLAY: string; SET_FULLSCREEN: string; SET_THEME: string; THEME_CHANGED: string; }; } = APP_CONSTANTS

APP.NAME​

NAME: string = "FitFileViewer"

APP.VERSION​

VERSION: string = "26.8.0"

APP.AUTHOR​

AUTHOR: string = "FitFileViewer Development Team"

APP.IPC_CHANNELS​

IPC_CHANNELS: { APP_VERSION: string; CHROME_VERSION: string; DIALOG_OPEN_FILE: string; ELECTRON_VERSION: string; FILE_READ: string; FIT_DECODE: string; FIT_PARSE: string; NODE_VERSION: string; PLATFORM_INFO: string; SHELL_OPEN_EXTERNAL: string; THEME_GET: string; }

IPC channel names

APP.IPC_CHANNELS.APP_VERSION​

APP_VERSION: string = "getAppVersion"

APP.IPC_CHANNELS.CHROME_VERSION​

CHROME_VERSION: string = "getChromeVersion"

APP.IPC_CHANNELS.DIALOG_OPEN_FILE​

DIALOG_OPEN_FILE: string = "dialog:openFile"

APP.IPC_CHANNELS.ELECTRON_VERSION​

ELECTRON_VERSION: string = "getElectronVersion"

APP.IPC_CHANNELS.FILE_READ​

FILE_READ: string = "file:read"

APP.IPC_CHANNELS.FIT_DECODE​

FIT_DECODE: string = "fit:decode"

APP.IPC_CHANNELS.FIT_PARSE​

FIT_PARSE: string = "fit:parse"

APP.IPC_CHANNELS.NODE_VERSION​

NODE_VERSION: string = "getNodeVersion"

APP.IPC_CHANNELS.PLATFORM_INFO​

PLATFORM_INFO: string = "getPlatformInfo"

APP.IPC_CHANNELS.SHELL_OPEN_EXTERNAL​

SHELL_OPEN_EXTERNAL: string = "shell:openExternal"

APP.IPC_CHANNELS.THEME_GET​

THEME_GET: string = "theme:get"

APP.EVENTS​

EVENTS: { INSTALL_UPDATE: string; MENU_OPEN_FILE: string; MENU_OPEN_OVERLAY: string; SET_FULLSCREEN: string; SET_THEME: string; THEME_CHANGED: string; }

Event names

APP.EVENTS.INSTALL_UPDATE​

INSTALL_UPDATE: string = "install-update"

APP.EVENTS.MENU_OPEN_FILE​

MENU_OPEN_FILE: string = "menu-open-file"

APP.EVENTS.MENU_OPEN_OVERLAY​

MENU_OPEN_OVERLAY: string = "menu-open-overlay"

APP.EVENTS.SET_FULLSCREEN​

SET_FULLSCREEN: string = "set-fullscreen"

APP.EVENTS.SET_THEME​

SET_THEME: string = "set-theme"

APP.EVENTS.THEME_CHANGED​

THEME_CHANGED: string = "theme-changed"

CHART​

CHART: { DEFAULT_ZOOM_LEVEL: number; MAX_ZOOM_LEVEL: number; MIN_ZOOM_LEVEL: number; CHART_TYPES: { ALTITUDE: string; ELEVATION: string; GPS_TRACK: string; HEART_RATE: string; LAP_ZONE: string; POWER: string; SPEED: string; }; DEFAULT_CHART: string; DEFAULT_COLORS: { PRIMARY: string; SECONDARY: string; }; } = CHART_CONSTANTS

CHART.DEFAULT_ZOOM_LEVEL​

DEFAULT_ZOOM_LEVEL: number = 1

Default chart options

CHART.MAX_ZOOM_LEVEL​

MAX_ZOOM_LEVEL: number = 10

CHART.MIN_ZOOM_LEVEL​

MIN_ZOOM_LEVEL: number = 0.1

CHART.CHART_TYPES​

CHART_TYPES: { ALTITUDE: string; ELEVATION: string; GPS_TRACK: string; HEART_RATE: string; LAP_ZONE: string; POWER: string; SPEED: string; }

Chart types

CHART.CHART_TYPES.ALTITUDE​

ALTITUDE: string = "altitude"

CHART.CHART_TYPES.ELEVATION​

ELEVATION: string = "elevation"

CHART.CHART_TYPES.GPS_TRACK​

GPS_TRACK: string = "gps-track"

CHART.CHART_TYPES.HEART_RATE​

HEART_RATE: string = "heart-rate"

CHART.CHART_TYPES.LAP_ZONE​

LAP_ZONE: string = "lap-zone"

CHART.CHART_TYPES.POWER​

POWER: string = "power"

CHART.CHART_TYPES.SPEED​

SPEED: string = "speed"

CHART.DEFAULT_CHART​

DEFAULT_CHART: string = "elevation"

Default selected chart

CHART.DEFAULT_COLORS​

DEFAULT_COLORS: { PRIMARY: string; SECONDARY: string; }

Chart colors (will be overridden by theme)

CHART.DEFAULT_COLORS.PRIMARY​

PRIMARY: string = "#667eea"

CHART.DEFAULT_COLORS.SECONDARY​

SECONDARY: string = "#764ba2"

CONVERSION​

CONVERSION: { DECIMAL_PLACES: number; DECIMAL_PLACES_PRECISE: number; METERS_PER_KILOMETER: number; METERS_PER_MILE: number; METERS_TO_FEET: number; SECONDS_PER_HOUR: number; SECONDS_PER_MINUTE: number; MILLISECONDS_PER_SECOND: number; CELSIUS_TO_FAHRENHEIT_MULTIPLIER: number; CELSIUS_TO_FAHRENHEIT_OFFSET: number; MPS_TO_KMH: number; MPS_TO_MPH: number; KG_TO_POUNDS: number; METERS_TO_INCHES: number; INCHES_PER_FOOT: number; } = CONVERSION_FACTORS

CONVERSION.DECIMAL_PLACES​

DECIMAL_PLACES: number = 2

Decimal precision

CONVERSION.DECIMAL_PLACES_PRECISE​

DECIMAL_PLACES_PRECISE: number = 4

CONVERSION.METERS_PER_KILOMETER​

METERS_PER_KILOMETER: number = 1000

Distance conversions

CONVERSION.METERS_PER_MILE​

METERS_PER_MILE: number = 1609.344

CONVERSION.METERS_TO_FEET​

METERS_TO_FEET: number = 3.280_84

CONVERSION.SECONDS_PER_HOUR​

SECONDS_PER_HOUR: number = 3600

Time conversions

CONVERSION.SECONDS_PER_MINUTE​

SECONDS_PER_MINUTE: number = 60

CONVERSION.MILLISECONDS_PER_SECOND​

MILLISECONDS_PER_SECOND: number = 1000

CONVERSION.CELSIUS_TO_FAHRENHEIT_MULTIPLIER​

CELSIUS_TO_FAHRENHEIT_MULTIPLIER: number

Temperature conversions

CONVERSION.CELSIUS_TO_FAHRENHEIT_OFFSET​

CELSIUS_TO_FAHRENHEIT_OFFSET: number = 32

CONVERSION.MPS_TO_KMH​

MPS_TO_KMH: number = 3.6

Speed conversions

CONVERSION.MPS_TO_MPH​

MPS_TO_MPH: number = 2.237

CONVERSION.KG_TO_POUNDS​

KG_TO_POUNDS: number = 2.204_62

Weight conversions

CONVERSION.METERS_TO_INCHES​

METERS_TO_INCHES: number = 39.3701

Height conversions

CONVERSION.INCHES_PER_FOOT​

INCHES_PER_FOOT: number = 12

DEBUG​

DEBUG: { ENABLED: boolean; LOG_LEVELS: { DEBUG: string; ERROR: string; INFO: string; WARN: string; }; CATEGORIES: { CHARTS: string; DATA: string; FILES: string; STATE: string; UI: string; }; } = DEBUG_CONSTANTS

DEBUG.ENABLED​

ENABLED: boolean = false

Debug modes

DEBUG.LOG_LEVELS​

LOG_LEVELS: { DEBUG: string; ERROR: string; INFO: string; WARN: string; }

DEBUG.LOG_LEVELS.DEBUG​

DEBUG: string = "debug"

DEBUG.LOG_LEVELS.ERROR​

ERROR: string = "error"

DEBUG.LOG_LEVELS.INFO​

INFO: string = "info"

DEBUG.LOG_LEVELS.WARN​

WARN: string = "warn"

DEBUG.CATEGORIES​

CATEGORIES: { CHARTS: string; DATA: string; FILES: string; STATE: string; UI: string; }

Debug categories

DEBUG.CATEGORIES.CHARTS​

CHARTS: string = "charts"

DEBUG.CATEGORIES.DATA​

DATA: string = "data"

DEBUG.CATEGORIES.FILES​

FILES: string = "files"

DEBUG.CATEGORIES.STATE​

STATE: string = "state"

DEBUG.CATEGORIES.UI​

UI: string = "ui"

DISTANCE_UNITS​

DISTANCE_UNITS: { FEET: string; KILOMETERS: string; METERS: string; MILES: string; }

Distance unit definitions with consistent naming

DISTANCE_UNITS.FEET​

FEET: string = "feet"

DISTANCE_UNITS.KILOMETERS​

KILOMETERS: string = "kilometers"

DISTANCE_UNITS.METERS​

METERS: string = "meters"

DISTANCE_UNITS.MILES​

MILES: string = "miles"

ERROR​

ERROR: { CODES: { FILE_NOT_FOUND: string; INVALID_INPUT: string; NETWORK_ERROR: string; PARSE_ERROR: string; PERMISSION_DENIED: string; STATE_ERROR: string; UNKNOWN_ERROR: string; VALIDATION_ERROR: string; }; MESSAGES: { FILE_NOT_FOUND: string; INVALID_INPUT: string; NETWORK_ERROR: string; PARSE_ERROR: string; PERMISSION_DENIED: string; STATE_ERROR: string; UNKNOWN_ERROR: string; VALIDATION_ERROR: string; }; } = ERROR_CONSTANTS

ERROR.CODES​

CODES: { FILE_NOT_FOUND: string; INVALID_INPUT: string; NETWORK_ERROR: string; PARSE_ERROR: string; PERMISSION_DENIED: string; STATE_ERROR: string; UNKNOWN_ERROR: string; VALIDATION_ERROR: string; }

Error codes

ERROR.CODES.FILE_NOT_FOUND​

FILE_NOT_FOUND: string = "FILE_NOT_FOUND"

ERROR.CODES.INVALID_INPUT​

INVALID_INPUT: string = "INVALID_INPUT"

ERROR.CODES.NETWORK_ERROR​

NETWORK_ERROR: string = "NETWORK_ERROR"

ERROR.CODES.PARSE_ERROR​

PARSE_ERROR: string = "PARSE_ERROR"

ERROR.CODES.PERMISSION_DENIED​

PERMISSION_DENIED: string = "PERMISSION_DENIED"

ERROR.CODES.STATE_ERROR​

STATE_ERROR: string = "STATE_ERROR"

ERROR.CODES.UNKNOWN_ERROR​

UNKNOWN_ERROR: string = "UNKNOWN_ERROR"

ERROR.CODES.VALIDATION_ERROR​

VALIDATION_ERROR: string = "VALIDATION_ERROR"

ERROR.MESSAGES​

MESSAGES: { FILE_NOT_FOUND: string; INVALID_INPUT: string; NETWORK_ERROR: string; PARSE_ERROR: string; PERMISSION_DENIED: string; STATE_ERROR: string; UNKNOWN_ERROR: string; VALIDATION_ERROR: string; }

Default error messages

ERROR.MESSAGES.FILE_NOT_FOUND​

FILE_NOT_FOUND: string = "File not found"

ERROR.MESSAGES.INVALID_INPUT​

INVALID_INPUT: string = "Invalid input provided"

ERROR.MESSAGES.NETWORK_ERROR​

NETWORK_ERROR: string = "Network connection error"

ERROR.MESSAGES.PARSE_ERROR​

PARSE_ERROR: string = "Failed to parse file"

ERROR.MESSAGES.PERMISSION_DENIED​

PERMISSION_DENIED: string = "Permission denied"

ERROR.MESSAGES.STATE_ERROR​

STATE_ERROR: string = "Application state error"

ERROR.MESSAGES.UNKNOWN_ERROR​

UNKNOWN_ERROR: string = "An unknown error occurred"

ERROR.MESSAGES.VALIDATION_ERROR​

VALIDATION_ERROR: string = "Input validation failed"

FILE​

FILE: { SUPPORTED_EXTENSIONS: string[]; SUPPORTED_MIME_TYPES: string[]; MAX_FILE_SIZE: number; EXPORT_FORMATS: { CSV: string; GPX: string; JSON: string; }; DEFAULT_EXPORT_FORMAT: string; IFRAME_PATHS: { ALT_FIT: string; }; } = FILE_CONSTANTS

FILE.SUPPORTED_EXTENSIONS​

SUPPORTED_EXTENSIONS: string[]

Supported file types

FILE.SUPPORTED_MIME_TYPES​

SUPPORTED_MIME_TYPES: string[]

FILE.MAX_FILE_SIZE​

MAX_FILE_SIZE: number

File size limits (in bytes)

FILE.EXPORT_FORMATS​

EXPORT_FORMATS: { CSV: string; GPX: string; JSON: string; }

Export formats

FILE.EXPORT_FORMATS.CSV​

CSV: string = "csv"

FILE.EXPORT_FORMATS.GPX​

GPX: string = "gpx"

FILE.EXPORT_FORMATS.JSON​

JSON: string = "json"

FILE.DEFAULT_EXPORT_FORMAT​

DEFAULT_EXPORT_FORMAT: string = "gpx"

FILE.IFRAME_PATHS​

IFRAME_PATHS: { ALT_FIT: string; }

File paths

FILE.IFRAME_PATHS.ALT_FIT​

ALT_FIT: string = "ffv/index.html"

MAP​

MAP: { DEFAULT_ZOOM: number; DEFAULT_CENTER: number[]; PROVIDERS: { OPENSTREETMAP: string; SATELLITE: string; }; DEFAULT_PROVIDER: string; } = MAP_CONSTANTS

MAP.DEFAULT_ZOOM​

DEFAULT_ZOOM: number = 13

Default map settings

MAP.DEFAULT_CENTER​

DEFAULT_CENTER: number[]

MAP.PROVIDERS​

PROVIDERS: { OPENSTREETMAP: string; SATELLITE: string; }

Map providers

MAP.PROVIDERS.OPENSTREETMAP​

OPENSTREETMAP: string = "openstreetmap"

MAP.PROVIDERS.SATELLITE​

SATELLITE: string = "satellite"

MAP.DEFAULT_PROVIDER​

DEFAULT_PROVIDER: string = "openstreetmap"

Default provider

PERFORMANCE​

PERFORMANCE: { ENABLE_MONITORING: boolean; MAX_HISTORY_SIZE: number; MEMORY_CHECK_INTERVAL: number; SLOW_OPERATION_THRESHOLD: number; CATEGORIES: { CHARTS: string; DATA_PROCESSING: string; FILE_OPERATIONS: string; STATE_MANAGEMENT: string; UI_RENDERING: string; }; } = PERFORMANCE_CONSTANTS

PERFORMANCE.ENABLE_MONITORING​

ENABLE_MONITORING: boolean = false

Monitoring configuration

PERFORMANCE.MAX_HISTORY_SIZE​

MAX_HISTORY_SIZE: number = 100

PERFORMANCE.MEMORY_CHECK_INTERVAL​

MEMORY_CHECK_INTERVAL: number = 30_000

PERFORMANCE.SLOW_OPERATION_THRESHOLD​

SLOW_OPERATION_THRESHOLD: number = 10

PERFORMANCE.CATEGORIES​

CATEGORIES: { CHARTS: string; DATA_PROCESSING: string; FILE_OPERATIONS: string; STATE_MANAGEMENT: string; UI_RENDERING: string; }

Metric categories

PERFORMANCE.CATEGORIES.CHARTS​

CHARTS: string = "charts"

PERFORMANCE.CATEGORIES.DATA_PROCESSING​

DATA_PROCESSING: string = "data-processing"

PERFORMANCE.CATEGORIES.FILE_OPERATIONS​

FILE_OPERATIONS: string = "file-operations"

PERFORMANCE.CATEGORIES.STATE_MANAGEMENT​

STATE_MANAGEMENT: string = "state-management"

PERFORMANCE.CATEGORIES.UI_RENDERING​

UI_RENDERING: string = "ui-rendering"

TEMPERATURE_UNITS​

TEMPERATURE_UNITS: { CELSIUS: string; FAHRENHEIT: string; KELVIN: string; }

Temperature unit definitions

TEMPERATURE_UNITS.CELSIUS​

CELSIUS: string = "celsius"

TEMPERATURE_UNITS.FAHRENHEIT​

FAHRENHEIT: string = "fahrenheit"

TEMPERATURE_UNITS.KELVIN​

KELVIN: string = "kelvin"

TIME_UNITS​

TIME_UNITS: { HOURS: string; MILLISECONDS: string; MINUTES: string; SECONDS: string; }

Time unit definitions

TIME_UNITS.HOURS​

HOURS: string = "hours"

TIME_UNITS.MILLISECONDS​

MILLISECONDS: string = "milliseconds"

TIME_UNITS.MINUTES​

MINUTES: string = "minutes"

TIME_UNITS.SECONDS​

SECONDS: string = "seconds"

UI​

UI: { DEFAULT_THEME: string; THEMES: { DARK: string; LIGHT: string; SYSTEM: string; }; NOTIFICATION_TYPES: { ERROR: { ariaLabel: string; duration: number; icon: string; type: string; }; INFO: { ariaLabel: string; duration: number; icon: string; type: string; }; SUCCESS: { ariaLabel: string; duration: number; icon: string; type: string; }; WARNING: { ariaLabel: string; duration: number; icon: string; type: string; }; }; DOM_IDS: { ACTIVE_FILE_NAME: string; ACTIVE_FILE_NAME_CONTAINER: string; ALT_FIT_IFRAME: string; CONTENT_CHART: string; CONTENT_DATA: string; CONTENT_MAP: string; CONTENT_SUMMARY: string; DROP_OVERLAY: string; NOTIFICATION: string; TAB_CHART: string; TAB_SUMMARY: string; UNLOAD_FILE_BTN: string; ZWIFT_IFRAME: string; }; CSS_CLASSES: { ACTIVE: string; HIDDEN: string; LOADING: string; SHOW: string; THEMED_BTN: string; }; ANIMATION_DURATION: number; DEBOUNCE_DELAY: number; SUMMARY_COLUMN_SELECTOR_DELAY: number; SIDEBAR_WIDTH: number; HEADER_HEIGHT: number; } = UI_CONSTANTS

UI.DEFAULT_THEME​

DEFAULT_THEME: string = "dark"

Theme configuration

UI.THEMES​

THEMES: { DARK: string; LIGHT: string; SYSTEM: string; }

UI.THEMES.DARK​

DARK: string = "dark"

UI.THEMES.LIGHT​

LIGHT: string = "light"

UI.THEMES.SYSTEM​

SYSTEM: string = "system"

UI.NOTIFICATION_TYPES​

NOTIFICATION_TYPES: { ERROR: { ariaLabel: string; duration: number; icon: string; type: string; }; INFO: { ariaLabel: string; duration: number; icon: string; type: string; }; SUCCESS: { ariaLabel: string; duration: number; icon: string; type: string; }; WARNING: { ariaLabel: string; duration: number; icon: string; type: string; }; }

Notification configurations

UI.NOTIFICATION_TYPES.ERROR​

ERROR: { ariaLabel: string; duration: number; icon: string; type: string; }

UI.NOTIFICATION_TYPES.ERROR.ariaLabel​

ariaLabel: string = "Error"

UI.NOTIFICATION_TYPES.ERROR.duration​

duration: number = 6000

UI.NOTIFICATION_TYPES.ERROR.icon​

icon: string = "❌"

UI.NOTIFICATION_TYPES.ERROR.type​

type: string = "error"

UI.NOTIFICATION_TYPES.INFO​

INFO: { ariaLabel: string; duration: number; icon: string; type: string; }

UI.NOTIFICATION_TYPES.INFO.ariaLabel​

ariaLabel: string = "Information"

UI.NOTIFICATION_TYPES.INFO.duration​

duration: number = 4000

UI.NOTIFICATION_TYPES.INFO.icon​

icon: string = "ℹ️"

UI.NOTIFICATION_TYPES.INFO.type​

type: string = "info"

UI.NOTIFICATION_TYPES.SUCCESS​

SUCCESS: { ariaLabel: string; duration: number; icon: string; type: string; }

UI.NOTIFICATION_TYPES.SUCCESS.ariaLabel​

ariaLabel: string = "Success"

UI.NOTIFICATION_TYPES.SUCCESS.duration​

duration: number = 3000

UI.NOTIFICATION_TYPES.SUCCESS.icon​

icon: string = "βœ…"

UI.NOTIFICATION_TYPES.SUCCESS.type​

type: string = "success"

UI.NOTIFICATION_TYPES.WARNING​

WARNING: { ariaLabel: string; duration: number; icon: string; type: string; }

UI.NOTIFICATION_TYPES.WARNING.ariaLabel​

ariaLabel: string = "Warning"

UI.NOTIFICATION_TYPES.WARNING.duration​

duration: number = 5000

UI.NOTIFICATION_TYPES.WARNING.icon​

icon: string = "⚠️"

UI.NOTIFICATION_TYPES.WARNING.type​

type: string = "warning"

UI.DOM_IDS​

DOM_IDS: { ACTIVE_FILE_NAME: string; ACTIVE_FILE_NAME_CONTAINER: string; ALT_FIT_IFRAME: string; CONTENT_CHART: string; CONTENT_DATA: string; CONTENT_MAP: string; CONTENT_SUMMARY: string; DROP_OVERLAY: string; NOTIFICATION: string; TAB_CHART: string; TAB_SUMMARY: string; UNLOAD_FILE_BTN: string; ZWIFT_IFRAME: string; }

Common DOM element IDs

UI.DOM_IDS.ACTIVE_FILE_NAME​

ACTIVE_FILE_NAME: string = "activeFileName"

UI.DOM_IDS.ACTIVE_FILE_NAME_CONTAINER​

ACTIVE_FILE_NAME_CONTAINER: string = "activeFileNameContainer"

UI.DOM_IDS.ALT_FIT_IFRAME​

ALT_FIT_IFRAME: string = "altfit-iframe"

UI.DOM_IDS.CONTENT_CHART​

CONTENT_CHART: string = "content-chart"

UI.DOM_IDS.CONTENT_DATA​

CONTENT_DATA: string = "content-data"

UI.DOM_IDS.CONTENT_MAP​

CONTENT_MAP: string = "content-map"

UI.DOM_IDS.CONTENT_SUMMARY​

CONTENT_SUMMARY: string = "content-summary"

UI.DOM_IDS.DROP_OVERLAY​

DROP_OVERLAY: string = "drop-overlay"

UI.DOM_IDS.NOTIFICATION​

NOTIFICATION: string = "notification"

UI.DOM_IDS.TAB_CHART​

TAB_CHART: string = "tab-chart"

UI.DOM_IDS.TAB_SUMMARY​

TAB_SUMMARY: string = "tab-summary"

UI.DOM_IDS.UNLOAD_FILE_BTN​

UNLOAD_FILE_BTN: string = "unloadFileBtn"

UI.DOM_IDS.ZWIFT_IFRAME​

ZWIFT_IFRAME: string = "zwift-iframe"

UI.CSS_CLASSES​

CSS_CLASSES: { ACTIVE: string; HIDDEN: string; LOADING: string; SHOW: string; THEMED_BTN: string; }

Common CSS classes

UI.CSS_CLASSES.ACTIVE​

ACTIVE: string = "active"

UI.CSS_CLASSES.HIDDEN​

HIDDEN: string = "hidden"

UI.CSS_CLASSES.LOADING​

LOADING: string = "loading"

UI.CSS_CLASSES.SHOW​

SHOW: string = "show"

UI.CSS_CLASSES.THEMED_BTN​

THEMED_BTN: string = "themed-btn"

UI.ANIMATION_DURATION​

ANIMATION_DURATION: number = 300

Animation and timing

UI.DEBOUNCE_DELAY​

DEBOUNCE_DELAY: number = 250

UI.SUMMARY_COLUMN_SELECTOR_DELAY​

SUMMARY_COLUMN_SELECTOR_DELAY: number = 100

UI.SIDEBAR_WIDTH​

SIDEBAR_WIDTH: number = 250

Layout constants

UI.HEADER_HEIGHT​

HEADER_HEIGHT: number = 60

VALIDATION​

VALIDATION: { MIN_DISTANCE: number; MAX_DISTANCE: number; MIN_DURATION: number; MAX_DURATION: number; MIN_SPEED: number; MAX_SPEED: number; MAX_STRING_LENGTH: number; MIN_STRING_LENGTH: number; } = VALIDATION_CONSTANTS

VALIDATION.MIN_DISTANCE​

MIN_DISTANCE: number = 0

Input validation rules

VALIDATION.MAX_DISTANCE​

MAX_DISTANCE: number = 1_000_000

VALIDATION.MIN_DURATION​

MIN_DURATION: number = 0

VALIDATION.MAX_DURATION​

MAX_DURATION: number = 86_400

VALIDATION.MIN_SPEED​

MIN_SPEED: number = 0

VALIDATION.MAX_SPEED​

MAX_SPEED: number = 200

VALIDATION.MAX_STRING_LENGTH​

MAX_STRING_LENGTH: number = 1000

String validation

VALIDATION.MIN_STRING_LENGTH​

MIN_STRING_LENGTH: number = 1