// components/live/LiveTrackMap.tsx 'use client'; import { useEffect, useState } from 'react'; import { getTrackMapUrl, cleanTrackName, cleanTrackConfig } from '@/lib/trackUtils'; interface Car { carID: number; driver_name: string; car_model: string; normalizedSplinePos: number; position: number; lap_time?: number; best_lap_time?: number; } interface LiveTrackMapProps { track: string; trackConfig: string; cars: Car[]; } export default function LiveTrackMap({ track, trackConfig, cars }: LiveTrackMapProps) { const [imageError, setImageError] = useState(false); // Get cleaned track map URL const trackMapUrl = getTrackMapUrl(track, trackConfig); const displayTrackName = cleanTrackName(track); const displayTrackConfig = cleanTrackConfig(trackConfig); // Calculate position on track (circular approximation) const getCarPosition = (normalizedPos: number) => { // normalizedPos is 0.0 to 1.0 around the track // We'll place cars in a circular path for now const angle = normalizedPos * Math.PI * 2 - Math.PI / 2; // Start at top // Position relative to center (percentage) const centerX = 50; const centerY = 50; const radius = 40; // 40% from center const x = centerX + Math.cos(angle) * radius; const y = centerY + Math.sin(angle) * radius; return { x, y }; }; // Get color based on position const getPositionColor = (position: number) => { if (position === 1) return '#ffffff'; // P1 - White if (position === 2) return '#d1d5db'; // P2 - Light gray if (position === 3) return '#9ca3af'; // P3 - Gray return '#6b7280'; // Others - Dark gray }; return (