package templates import ( "strconv" "track-gopher/db" "track-gopher/derby" ) templ Heats(groups []db.Group, racers []db.Racer, selectedGroupID int64) { @Layout("Race Heats") {

Race Heats Generator

if selectedGroupID > 0 { @HeatsContent(selectedGroupID, groups, racers) } else {

Please select a group to generate heats.

}
} } templ HeatsContent(groupID int64, groups []db.Group, allRacers []db.Racer) { // Filter racers by group var groupRacers []db.Racer for _, racer := range allRacers { if racer.GroupID == groupID { groupRacers = append(groupRacers, racer) } }

Heats for { getGroupName(groups, groupID) } ({ strconv.Itoa(len(groupRacers)) } racers)

if len(groupRacers) == 0 {

No racers in this group. Add racers to generate heats.

} else {
@GeneratedHeats(groupRacers)
}
} templ GeneratedHeats(racers []db.Racer) { // Convert db.Racer to derby.Racer for heat generation var derbyRacers []derby.Racer for _, racer := range racers { derbyRacers = append(derbyRacers, derby.CreateRacer(racer.ID, racer.FirstName, racer.LastName, racer.CarNumber)) } var heats = derby.GenerateHeats(derbyRacers) if len(heats) == 0 {

No heats could be generated. Please add more racers.

} else {
for _, heat := range heats {

Heat { strconv.Itoa(heat.HeatNum) }

Lane Racer Car #
1 { getRacerName(racers, heat.Lane1ID) } { getRacerCarNumber(racers, heat.Lane1ID) }
2 { getRacerName(racers, heat.Lane2ID) } { getRacerCarNumber(racers, heat.Lane2ID) }
3 { getRacerName(racers, heat.Lane3ID) } { getRacerCarNumber(racers, heat.Lane3ID) }
4 { getRacerName(racers, heat.Lane4ID) } { getRacerCarNumber(racers, heat.Lane4ID) }
}
} } func getGroupName(groups []db.Group, groupID int64) string { for _, group := range groups { if group.ID == groupID { return group.Name } } return "Unknown Group" } func getRacerName(racers []db.Racer, racerID *int64) string { if racerID == nil { return "Empty" } for _, racer := range racers { if racer.ID == *racerID { return racer.FirstName + " " + racer.LastName } } return "Unknown Racer" } func getRacerCarNumber(racers []db.Racer, racerID *int64) string { if racerID == nil { return "-" } for _, racer := range racers { if racer.ID == *racerID { return racer.CarNumber } } return "-" }