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 "-"
}