58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
// lib/trackUtils.ts
|
|
// Utility functions for track name handling
|
|
|
|
/**
|
|
* Clean track name from database format
|
|
* Example: "csp/2000/../jr_road_atlanta_2022" -> "jr_road_atlanta_2022"
|
|
*/
|
|
export function cleanTrackName(trackName: string): string {
|
|
if (!trackName) return '';
|
|
|
|
// Split by '/' and get the last segment
|
|
const segments = trackName.split('/');
|
|
const lastSegment = segments[segments.length - 1];
|
|
|
|
return lastSegment.trim();
|
|
}
|
|
|
|
/**
|
|
* Clean track config name
|
|
* Example: "csp/2000/../full" -> "full"
|
|
*/
|
|
export function cleanTrackConfig(configName: string): string {
|
|
if (!configName) return '';
|
|
|
|
// Split by '/' and get the last segment
|
|
const segments = configName.split('/');
|
|
const lastSegment = segments[segments.length - 1];
|
|
|
|
return lastSegment.trim();
|
|
}
|
|
|
|
/**
|
|
* Format track name for display
|
|
* Example: "jr_road_atlanta_2022" -> "JR Road Atlanta 2022"
|
|
*/
|
|
export function formatTrackName(trackName: string): string {
|
|
return cleanTrackName(trackName)
|
|
.replace(/_/g, ' ')
|
|
.replace(/\b\w/g, char => char.toUpperCase());
|
|
}
|
|
|
|
/**
|
|
* Get track map URL
|
|
* Handles the track name cleaning and URL construction
|
|
*/
|
|
export function getTrackMapUrl(trackName: string, trackConfig?: string): string {
|
|
const baseUrl = 'https://openwheels.racing/files/img/tracks';
|
|
const cleanedTrack = cleanTrackName(trackName);
|
|
const cleanedConfig = trackConfig ? cleanTrackConfig(trackConfig) : '';
|
|
|
|
// Try with config first, fallback to map.png if no config or config is default
|
|
if (cleanedConfig && cleanedConfig !== 'default' && cleanedConfig !== '') {
|
|
return `${baseUrl}/${cleanedTrack}/${cleanedConfig}/map.png`;
|
|
}
|
|
|
|
return `${baseUrl}/${cleanedTrack}/map.png`;
|
|
}
|