{target.data.line.rank}
{target.boat.getPhotosHtml()}
{target.boat.name}
{target.boat.getSailorsHtml('/')}
Start {µ.toDate(target.data.boatClass.run.date,"FR:dddd dd mmmm ' at ' HH:MM 'FR'")}
Total distance {µ.toNumber(target.data.line.dtf," ¤1¤.")} nm
Position {µ.toDate(target.boat.track.currentLocation.timecode*1000,"FR:HH:MM")} FR
Heading {target.boat.track.currentLocation.heading} °
Speed {µ.toNumber(target.boat.track.currentLocation.getSpeed()," ¤1¤.")} kts
{µ.toDate(target.boat.track.currentLocation.timecode*1000,"FR:HH:MM 'FR'")} • {target.boat.track.currentLocation.heading}° • {µ.toNumber(target.boat.track.currentLocation.getSpeed()," ¤1¤.")} kts
Position {µ.toDate(target.data.line.date,"FR:HH:MM")} FR
Dist. to finish {µ.toNumber(target.data.line.dtf," ¤1¤.")} nm
Dist. to leader +{µ.toNumber(target.data.line.dtl," ¤1¤.")} nm {µ.toNumber(Math.abs(target.data.line.dtlProgress)," ¤1¤.")} nm
Heading {target.data.line.heading} °
Speed | VMC {µ.toNumber(target.data.line.speed," ¤1¤.")} kts {µ.toNumber(target.data.line.vmg," ¤1¤.")} kts
{µ.TRANSLATIONS['OVER_1_LABEL']} {µ.toNumber(target.data.line.dist1/tracker.over1gap*60," ¤1¤.")} nds {µ.toNumber(target.data.line.dist1," ¤1¤.")} nm
{µ.TRANSLATIONS['OVER_2_LABEL']} {µ.toNumber(target.data.line.dist2/tracker.over2gap*60," ¤1¤.")} nds {µ.toNumber(target.data.line.dist2," ¤1¤.")} nm
Position {µ.toDate(target.data.line.date,"FR:HH:MM'FR'")} {target.data.line.heading}° {µ.toNumber(target.data.line.speed," ¤1¤.")} kts
Distances {µ.toNumber(target.data.line.dtf," ¤1¤.")} nm +{µ.toNumber(target.data.line.dtl," ¤1¤.")} nm {µ.toNumber(Math.abs(target.data.line.dtlProgress)," ¤1¤.")} nm
Finish{µ.toDate(target.boat.arrival.date,"FR:dd/mm/yyyy ' à ' HH:MM:ss 'FR'")}
Racetime{µ.toRacetime(target.boat.arrival.racetime, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
Penalty{µ.toRacetime(Math.abs(target.boat.arrival.penalty), "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
Bonus{µ.toRacetime(Math.abs(target.boat.arrival.penalty), "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
Official time{µ.toRacetime(target.boat.arrival.jury, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
Gap to first{µ.toRacetime(target.boat.arrival.gapToFirst, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
Gap to previous{µ.toRacetime(target.boat.arrival.gapToPrevious, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
Over orthodromy {µ.toNumber(target.boat.arrival.orthoDistance, " ¤1¤.")} nm {µ.toNumber(target.boat.arrival.orthoSpeed, " ¤1¤.")} kts
Overground {µ.toNumber(target.boat.arrival.overgroundDistance, " ¤1¤.")} nm {µ.toNumber(target.boat.arrival.overgroundSpeed, " ¤1¤.")} kts
Finish{µ.toDate(target.boat.arrival.date,"FR:dd/mm/yyyy ' at ' HH:MM:ss 'FR'")}
Racetime/span>{µ.toRacetime(target.boat.arrival.racetime, "[0]d[1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
Click on the boat to locate it
on the splittime
«{target.data.line.name}»
Pit Stop
Stealth mode
Not localised
Suspend racing
Not yet started
Did not start the race
Did not cross the start line
Did not finish the race
Disqualified
CNS
Retired
{target.getPhotosHtml()}
{target.name}
{target.getSailorsHtml('/')}
{target.comment}

Start on
Sunday 21 September 2025 at 17h13 FR
Update every 15 minutes
¤{target.line.rank}¤
{target.boat.getPhotosHtml()}
{target.boat.getIconHtml()}
{target.boat.name}
{target.boat.getSailorsHtml('/')}
Start : {µ.toDate(target.boatClass.run.date,"FR:dddd dd mmmm ' at ' HH:MM 'FR'")}
Total distance : {µ.toNumber(target.boatClass.run.length," ¤1¤.")} nm
Time at the gate : ¤{µ.toRacetime(target.boat.splittime.time, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
¤{µ.toNumber(target.boat.splittime.sog," ¤1¤.")}¤ nds
Gap to first : +¤{µ.toRacetime(target.boat.splittime.gap2firstBoat, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
Since previous gate : ¤{µ.toRacetime(target.boat.splittime.time2prev, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
¤{µ.toNumber(target.boat.splittime.sog," ¤1¤.")}¤ nds
Time retained for calculation : ¤{µ.toDate(target.line.date,"FR:HH:MM' FR'")}¤
¤{target.line.heading}¤ °
¤{µ.toNumber(target.line.speed," ¤1¤.")}¤ kts
¤{µ.toNumber(target.line.dtf," ¤1¤.")}¤ nm
+¤{µ.toNumber(target.line.dtl," ¤1¤.")}¤ nm
Finished on ¤{µ.toDate(target.boat.arrival.date,"FR:dd/mm/yyyy ' at ' HH:MM:ss 'FR'")}¤
In ¤{µ.toRacetime(target.boat.arrival.racetime, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
Pit Stop
Stealth mode
Not localised
Suspend racing
Not yet started
Did not start the race
Did not cross the start line
Did not finish the race
Disqualified
CNS
Retired
¤{µ.toInt(target.line.rank, '0')}¤
{target.boat.getPhotosHtml()}
{target.boat.name}
{target.boat.getSailorsHtml('/')}
Waiting to start
Arrived
Racing
In pit stop
In stealth mode
Not localized
Suspends racing
Not yet started
Did not start
Did not cross the line
NDid not finished
Disqualified
CNS
Retired
Route
Date and time of start ¤{µ.toDate(target.boatClass.run.date,"FR:dddd dd mmmm ' at ' HH:MM 'FR'")}¤
Distance to sail ¤{µ.toNumber(target.line.dtf," ¤1¤.")}¤ nautical miles
Dashboard
N S E W {target.boat.getIconHtml()}
¤{target.line.heading}¤°
20 35 5 25 40 10 15 30 0
¤{µ.toNumber(target.line.speed,'¤1¤.')}¤ kts
¤{µ.toNumber(target.line.vmg,'¤1¤.')}¤ kts
Environment
¤{target.line.windspeed/10}¤ kts ¤{target.line.winddir}¤°
¤{target.line.tempair/10}¤°C
¤{target.line.waveheight/10}¤m
¤{target.line.tempwater/10}¤°C
Distances
¤{µ.toNumber(target.boatClass.run.length - target.line.dtf," ¤1¤.")}¤ nm
¤{µ.toNumber(target.line.dtf," ¤1¤.")}¤ nm
¤{µ.toNumber(target.line.dtl," ¤1¤.")}¤ nm
¤{µ.toNumber(target.line.advance," ¤1¤.")}¤ nm
Over 4 hours ¤{µ.toNumber(target.line.dist4h," ¤1¤.")}¤ nm ¤{µ.toNumber(target.line.dist4h/4," ¤1¤.")}¤ kts
Over ground ¤{µ.toNumber(target.line.dog4h," ¤1¤.")}¤ nm ¤{µ.toNumber(target.line.dog4h/4," ¤1¤.")}¤ kts
Over 24 hours ¤{µ.toNumber(target.line.dist24h," ¤1¤.")}¤ nm ¤{µ.toNumber(target.line.dist24h/24," ¤1¤.")}¤ kts
Over ground ¤{µ.toNumber(target.line.dog24h," ¤1¤.")}¤ nm ¤{µ.toNumber(target.line.dog24h/24," ¤1¤.")}¤ kts
Split times
Results
Finished ¤{µ.toDate(target.boat.arrival.date,"FR:dd/mm/yyyy ' at ' HH:MM:ss 'FR'")}¤
Race time ¤{µ.toRacetime(target.boat.arrival.racetime, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
Penalty ¤{µ.toRacetime(Math.abs(target.boat.arrival.penalty), "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
Bonification ¤{µ.toRacetime(Math.abs(target.boat.arrival.penalty), "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
Jury time ¤{µ.toRacetime(target.boat.arrival.jury, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
gap to leader ¤{µ.toRacetime(target.boat.arrival.gapToFirst, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
gap to previous ¤{µ.toRacetime(target.boat.arrival.gapToPrevious, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
Over orthodromy ¤{µ.toNumber(target.boat.arrival.orthoDistance, " ¤1¤.")}¤ nm / ¤{µ.toNumber(target.boat.arrival.orthoSpeed, " ¤1¤.")}¤ kts
Over ground ¤{µ.toNumber(target.boat.arrival.overgroundDistance, " ¤1¤.")}¤ nm / ¤{µ.toNumber(target.boat.arrival.overgroundSpeed, " ¤1¤.")}¤ kts
 
{target.name}
{µ.toOrdinal(target.data.rank)} • {µ.toDate(target.data.timecode*1000,"FR:dd/mm/yyyy ' à ' HH:MM:ss 'FR'")}
{µ.toRacetime(target.data.time, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
{µ.toNumber(target.data.dog," ¤1¤.")} nm • {µ.toNumber(target.data.sog," ¤1¤.")} kts
{µ.toRacetime(target.data.time2prev, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
{µ.toNumber(target.data.dog2prev," ¤1¤.")} nm • {µ.toNumber(target.data.sog2prev," ¤1¤.")} kts
Over 1 hour Over 4 hours TSS Ouessant TSS Finisterre TSS Casquets Area updated every 15 minutes Area updated every 5 minutes
Race tracker www.geovoile.com
TrackingYellowbrickwww.ybtracking.com
CalculationsRené Boulaire
WeatherMétéo Consultwww.meteoconsult.com