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

Race Heats Generator

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

Please select a group to generate heats.

}
} } templ HeatsContent(groupID int64, groups []models.Group, db *db.DB) { // Filter racers by group {{ groupRacers, _ := db.GetRacersByGroup(groupID) }}

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 []models.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 []models.Group, groupID int64) string { for _, group := range groups { if group.ID == groupID { return group.Name } } return "Unknown Group" } func getRacerName(racers []models.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 []models.Racer, racerID *int64) string { if racerID == nil { return "-" } for _, racer := range racers { if racer.ID == *racerID { return racer.CarNumber } } return "-" }