package templates import ( "track-gopher/models" "fmt" "strconv" ) // RacePublic renders the public race view templ RacePublic(heatData *models.HeatData, nextHeat *models.HeatData, onDeckHeat *models.HeatData) { @LayoutPublic("Race - " + heatData.Group.Name) {

{ heatData.Group.Name } - Heat { strconv.Itoa(heatData.HeatNumber) } of { strconv.Itoa(heatData.TotalHeats) }

0.000
Ready
@raceCurrentHeatLanes(heatData)

Next Heat

if nextHeat != nil { @raceNextHeatPreview(nextHeat) } else {
No more heats in this group
}

Upcoming Heat

if onDeckHeat != nil { @raceNextHeatPreview(onDeckHeat) } else {
No more heats in this group
}
} } // Helper template for displaying current heat lanes templ raceCurrentHeatLanes(heatData *models.HeatData) {
if heatData.Lane1 != nil { @raceLaneCard(*heatData.Lane1) } if heatData.Lane2 != nil { @raceLaneCard(*heatData.Lane2) } if heatData.Lane3 != nil { @raceLaneCard(*heatData.Lane3) } if heatData.Lane4 != nil { @raceLaneCard(*heatData.Lane4) }
} // Helper template for displaying a lane card templ raceLaneCard(laneData models.LaneData) {

Lane { strconv.Itoa(laneData.Lane) }

{ laneData.Name }

Car #: { laneData.CarNum }
Weight: { fmt.Sprintf("%.1f oz", laneData.CarWeight) }

Time
{ fmt.Sprintf("%.3f", laneData.Time) }
Position
{ strconv.Itoa(laneData.Place) }
} // Helper template for displaying next heat preview templ raceNextHeatPreview(heatData *models.HeatData) {

Heat { strconv.Itoa(heatData.HeatNumber) }

if heatData.Lane1 != nil { @raceNextHeatRow(*heatData.Lane1) } if heatData.Lane2 != nil { @raceNextHeatRow(*heatData.Lane2) } if heatData.Lane3 != nil { @raceNextHeatRow(*heatData.Lane3) } if heatData.Lane4 != nil { @raceNextHeatRow(*heatData.Lane4) }
Lane Racer Car #
} // Helper template for displaying a row in the next heat preview templ raceNextHeatRow(laneData models.LaneData) { { strconv.Itoa(laneData.Lane) } { laneData.Name } { laneData.CarNum } }