@ -15,7 +15,7 @@ import (
)
// RacePublic renders the public race view
func RacePublic ( currentGroup models . Group , heats [ ] models . Heat , racers [ ] models . Racer , currentHeatNum int , results [ ] models . HeatResult ) templ . Component {
func RacePublic ( heatData * models . HeatData , nextHeat * models . HeatData , onDeckHeat * models . HeatData ) templ . Component {
return templruntime . GeneratedTemplate ( func ( templ_7745c5c3_Input templruntime . GeneratedComponentInput ) ( templ_7745c5c3_Err error ) {
templ_7745c5c3_W , ctx := templ_7745c5c3_Input . Writer , templ_7745c5c3_Input . Context
if templ_7745c5c3_CtxErr := ctx . Err ( ) ; templ_7745c5c3_CtxErr != nil {
@ -53,9 +53,9 @@ func RacePublic(currentGroup models.Group, heats []models.Heat, racers []models.
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3 , templ_7745c5c3_Err = templ . JoinStringErrs ( current Group. Name )
templ_7745c5c3_Var3 , templ_7745c5c3_Err = templ . JoinStringErrs ( heatData. Group. Name )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 17 , Col : 7 6 }
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 17 , Col : 7 8 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var3 ) )
if templ_7745c5c3_Err != nil {
@ -66,9 +66,9 @@ func RacePublic(currentGroup models.Group, heats []models.Heat, racers []models.
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4 , templ_7745c5c3_Err = templ . JoinStringErrs ( strconv . Itoa ( currentHeatNum ) )
templ_7745c5c3_Var4 , templ_7745c5c3_Err = templ . JoinStringErrs ( strconv . Itoa ( heatData. HeatNumber ) )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 17 , Col : 1 16 }
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 17 , Col : 1 23 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var4 ) )
if templ_7745c5c3_Err != nil {
@ -79,9 +79,9 @@ func RacePublic(currentGroup models.Group, heats []models.Heat, racers []models.
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5 , templ_7745c5c3_Err = templ . JoinStringErrs ( strconv . Itoa ( len ( heats ) ) )
templ_7745c5c3_Var5 , templ_7745c5c3_Err = templ . JoinStringErrs ( strconv . Itoa ( heatData . TotalHeats ) )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 17 , Col : 1 48 }
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 17 , Col : 1 6 4}
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var5 ) )
if templ_7745c5c3_Err != nil {
@ -91,7 +91,7 @@ func RacePublic(currentGroup models.Group, heats []models.Heat, racers []models.
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = raceCurrentHeatLanes ( heat s, racers , currentHeatNum , results ) . Render ( ctx , templ_7745c5c3_Buffer )
templ_7745c5c3_Err = raceCurrentHeatLanes ( heat Data ) . Render ( ctx , templ_7745c5c3_Buffer )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -99,8 +99,8 @@ func RacePublic(currentGroup models.Group, heats []models.Heat, racers []models.
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if currentHeatNum < len ( heats ) {
templ_7745c5c3_Err = raceNextHeatPreview ( heats, racers , currentHeatNum + 1 ) . Render ( ctx , templ_7745c5c3_Buffer )
if nextHeat != nil {
templ_7745c5c3_Err = raceNextHeatPreview ( nextHeat ) . Render ( ctx , templ_7745c5c3_Buffer )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -114,8 +114,8 @@ func RacePublic(currentGroup models.Group, heats []models.Heat, racers []models.
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if currentHeatNum+ 1 < len ( heats ) {
templ_7745c5c3_Err = raceNextHeatPreview ( heats, racers , currentHeatNum + 2 ) . Render ( ctx , templ_7745c5c3_Buffer )
if onDeckHeat != nil {
templ_7745c5c3_Err = raceNextHeatPreview ( onDeckHeat ) . Render ( ctx , templ_7745c5c3_Buffer )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -125,13 +125,13 @@ func RacePublic(currentGroup models.Group, heats []models.Heat, racers []models.
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 9 , "</div></div></div></div></div> <script>\r\n // Set up SSE connection\r\n console.log(\"Setting up SSE connection...\");\r\n \r\n const eventSource = new EventSource('/api/events');\r\n \r\n eventSource.onopen = function() {\r\n console.log(\"SSE connection opened\");\r\n };\r\n \r\n eventSource.onerror = function(error) {\r\n console.error(\"SSE connection error:\", error);\r\n };\r\n \r\n eventSource.addEventListener('debug', function(event) {\r\n console.log(\"Debug event received:\", event.data);\r\n });\r\n \r\n eventSource.addEventListener('lane-finish', function(event) {\r\n console.log(\"Lane finish event received:\", event.data);\r\n try {\r\n const laneFinishData = JSON.parse(event.data);\r\n const laneTimeElement = document.getElementById(`lane-${laneFinishData.lane}-time`);\r\n if (laneTimeElement) {\r\n laneTimeElement.textContent = laneFinishData.time.toFixed(4);\r\n }\r\n \r\n const lanePositionElement = document.getElementById(`lane-${laneFinishData.lane}-position`);\r\n if (lanePositionElement) {\r\n lanePositionElement.textContent = getOrdinal(laneFinishData.place);\r\n }\r\n \r\n // Highlight the lane card\r\n const laneCard = document.querySelector(`.lane-card[data-lane=\"${laneFinishData.lane}\"]`);\r\n if (laneCard) {\r\n laneCard.classList.add('bg-success-subtle');\r\n }\r\n } catch (error) {\r\n console.error(\"Error processing lane finish event:\", error);\r\n }\r\n });\r\n \r\n eventSource.addEventListener('status', function(event) {\r\n console.log(\"Status event received:\", event.data);\r\n try {\r\n const statusData = JSON.parse(event.data);\r\n let statusText = 'Unknown';\r\n let statusClass = 'bg-secondary';\r\n \r\n if (statusData.status === 'idle') {\r\n statusText = 'Ready';\r\n statusClass = 'bg-primary';\r\n \r\n // Don't reset times and positions here anymore\r\n // Only reset visual styling\r\n document.querySelectorAll('.lane-card').forEach(lane => {\r\n lane.classList.remove('bg-success-subtle');\r\n });\r\n \r\n } else if (statusData.status === 'running') {\r\n statusText = 'Race Running';\r\n statusClass = 'bg-success';\r\n } else if (statusData.status === 'finished') {\r\n statusText = 'Race Complete';\r\n statusClass = 'bg-info';\r\n \r\n // Don't reload the page automatically\r\n // Let the race manager control when to move to the next heat\r\n }\r\n \r\n const statusIndicator = document.getElementById('status-indicator');\r\n if (statusIndicator) {\r\n statusIndicator.textContent = statusText;\r\n statusIndicator.className = `badge ${statusClass}`;\r\n }\r\n \r\n const timerDisplay = document.getElementById('timer');\r\n if (timerDisplay && statusData.status === 'idle') {\r\n timerDisplay.textContent = '0.000';\r\n }\r\n } catch (error) {\r\n console.error(\"Error processing status event:\", error);\r\n }\r\n });\r\n \r\n function getOrdinal(n) {\r\n const s = [\"th\", \"st\", \"nd\", \"rd\"];\r\n const v = n % 100;\r\n return n + (s[(v-20)%10] || s[v] || s[0]);\r\n }\r\n \r\n // Auto-refresh the page every 30 seconds to keep data current\r\n setTimeout(() => {\r\n window.location.reload();\r\n }, 30000);\r\n </script> ")
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 9 , "</div></div></div></div></div> ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
return nil
} )
templ_7745c5c3_Err = LayoutPublic ( "Race - " + current Group. Name ) . Render ( templ . WithChildren ( ctx , templ_7745c5c3_Var2 ) , templ_7745c5c3_Buffer )
templ_7745c5c3_Err = LayoutPublic ( "Race - " + heatData. Group. Name ) . Render ( templ . WithChildren ( ctx , templ_7745c5c3_Var2 ) , templ_7745c5c3_Buffer )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -140,7 +140,7 @@ func RacePublic(currentGroup models.Group, heats []models.Heat, racers []models.
}
// Helper template for displaying current heat lanes
func raceCurrentHeatLanes ( heat s [ ] models . Heat , racers [ ] models . Racer , currentHeatNum int , results [ ] models . HeatResult ) templ . Component {
func raceCurrentHeatLanes ( heat Data * models . HeatData ) templ . Component {
return templruntime . GeneratedTemplate ( func ( templ_7745c5c3_Input templruntime . GeneratedComponentInput ) ( templ_7745c5c3_Err error ) {
templ_7745c5c3_W , ctx := templ_7745c5c3_Input . Writer , templ_7745c5c3_Input . Context
if templ_7745c5c3_CtxErr := ctx . Err ( ) ; templ_7745c5c3_CtxErr != nil {
@ -161,48 +161,30 @@ func raceCurrentHeatLanes(heats []models.Heat, racers []models.Racer, currentHea
templ_7745c5c3_Var6 = templ . NopComponent
}
ctx = templ . ClearChildren ( ctx )
// Find current heat
var currentHeat models . Heat
for _ , heat := range heats {
if heat . HeatNum == currentHeatNum {
currentHeat = heat
break
}
}
// Find heat result if available
var currentResult * models . HeatResult
for _ , result := range results {
if result . HeatNumber == currentHeatNum {
currentResult = & result
break
}
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 10 , "<div class=\"row row-cols-1 row-cols-md-4 g-4\">" )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if currentHeat. Lane1ID != nil {
templ_7745c5c3_Err = raceLaneCard ( 1 , * currentHeat . Lane1ID , racers , currentResult ) . Render ( ctx , templ_7745c5c3_Buffer )
if heatData . Lane1 != nil {
templ_7745c5c3_Err = raceLaneCard ( * heatData . Lane1 ) . Render ( ctx , templ_7745c5c3_Buffer )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
if currentHeat. Lane2ID != nil {
templ_7745c5c3_Err = raceLaneCard ( 2 , * currentHeat . Lane2ID , racers , currentResult ) . Render ( ctx , templ_7745c5c3_Buffer )
if heatData . Lane2 != nil {
templ_7745c5c3_Err = raceLaneCard ( * heatData . Lane2 ) . Render ( ctx , templ_7745c5c3_Buffer )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
if currentHeat. Lane3ID != nil {
templ_7745c5c3_Err = raceLaneCard ( 3 , * currentHeat . Lane3ID , racers , currentResult ) . Render ( ctx , templ_7745c5c3_Buffer )
if heatData . Lane3 != nil {
templ_7745c5c3_Err = raceLaneCard ( * heatData . Lane3 ) . Render ( ctx , templ_7745c5c3_Buffer )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
if currentHeat. Lane4ID != nil {
templ_7745c5c3_Err = raceLaneCard ( 4 , * currentHeat . Lane4ID , racers , currentResult ) . Render ( ctx , templ_7745c5c3_Buffer )
if heatData. Lane4 != nil {
templ_7745c5c3_Err = raceLaneCard ( * heatData . Lane4 ) . Render ( ctx , templ_7745c5c3_Buffer )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -216,7 +198,7 @@ func raceCurrentHeatLanes(heats []models.Heat, racers []models.Racer, currentHea
}
// Helper template for displaying a lane card
func raceLaneCard ( lane int , racerID int64 , racers [ ] models . Racer , result * models . HeatResult ) templ . Component {
func raceLaneCard ( lane Data models . LaneData ) templ . Component {
return templruntime . GeneratedTemplate ( func ( templ_7745c5c3_Input templruntime . GeneratedComponentInput ) ( templ_7745c5c3_Err error ) {
templ_7745c5c3_W , ctx := templ_7745c5c3_Input . Writer , templ_7745c5c3_Input . Context
if templ_7745c5c3_CtxErr := ctx . Err ( ) ; templ_7745c5c3_CtxErr != nil {
@ -237,46 +219,14 @@ func raceLaneCard(lane int, racerID int64, racers []models.Racer, result *models
templ_7745c5c3_Var7 = templ . NopComponent
}
ctx = templ . ClearChildren ( ctx )
// Find racer
var racer models . Racer
for _ , r := range racers {
if r . ID == racerID {
racer = r
break
}
}
// Get time and position from result if available
var time float64
var position int
var hasResult bool
if result != nil {
hasResult = true
switch lane {
case 1 :
time = result . Lane1Time
position = result . Lane1Position
case 2 :
time = result . Lane2Time
position = result . Lane2Position
case 3 :
time = result . Lane3Time
position = result . Lane3Position
case 4 :
time = result . Lane4Time
position = result . Lane4Position
}
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 12 , "<div class=\"col\"><div class=\"card h-100 lane-card\" data-lane=\"{ strconv.Itoa(lane) }\"><div class=\"card-header bg-primary text-white\"><h4 class=\"mb-0\">Lane " )
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 12 , "<div class=\"col\"><div class=\"card h-100 lane-card\"><div class=\"card-header bg-primary text-white\"><h4 class=\"mb-0\">Lane " )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8 , templ_7745c5c3_Err = templ . JoinStringErrs ( strconv . Itoa ( lane ) )
templ_7745c5c3_Var8 , templ_7745c5c3_Err = templ . JoinStringErrs ( strconv . Itoa ( laneData . Lane ) )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 247, Col : 58 }
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 97 , Col : 67 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var8 ) )
if templ_7745c5c3_Err != nil {
@ -287,120 +237,67 @@ func raceLaneCard(lane int, racerID int64, racers []models.Racer, result *models
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var9 string
templ_7745c5c3_Var9 , templ_7745c5c3_Err = templ . JoinStringErrs ( racer. First Name)
templ_7745c5c3_Var9 , templ_7745c5c3_Err = templ . JoinStringErrs ( laneData. Name)
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 250, Col : 56 }
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 100, Col : 54 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var9 ) )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 14 , " ")
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 14 , " </h5><p class=\"card-text\"><strong>Car #:</strong> ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var10 string
templ_7745c5c3_Var10 , templ_7745c5c3_Err = templ . JoinStringErrs ( racer. LastName )
templ_7745c5c3_Var10 , templ_7745c5c3_Err = templ . JoinStringErrs ( laneData. CarNum )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 250, Col : 75 }
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 102, Col : 61 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var10 ) )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 15 , "< /h5><p class=\"card-text\"><strong>Car # :</strong> ")
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 15 , "< br><strong>Weight :</strong> ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var11 string
templ_7745c5c3_Var11 , templ_7745c5c3_Err = templ . JoinStringErrs ( racer. CarNumber )
templ_7745c5c3_Var11 , templ_7745c5c3_Err = templ . JoinStringErrs ( fmt. Sprintf ( "%.1f oz" , laneData . CarWeight ) )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 252, Col : 61 }
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 103, Col : 89 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var11 ) )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 16 , "< br><strong>Weight:</strong> ")
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 16 , "< /p><div class=\"result-area\"><div class=\"row\"><div class=\"col-6\"><div class=\"text-center\"><h6>Time</h6><div class=\"display-6\"> ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var12 string
templ_7745c5c3_Var12 , templ_7745c5c3_Err = templ . JoinStringErrs ( fmt . Sprintf ( "%. 1f oz", racer . CarWeight ) )
templ_7745c5c3_Var12 , templ_7745c5c3_Err = templ . JoinStringErrs ( fmt . Sprintf ( "%. 3f", laneData . Time ) )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 253, Col : 86 }
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 111, Col : 72 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var12 ) )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 17 , "</ p><div class=\"result-area\"><div class=\"row\"><div class=\"col-6\"><div class=\"text-center\"><h6>Time</h6><div id=\" ")
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 17 , "</ div></div></div><div class=\"col-6\"><div class=\"text-center\"><h6>Position</h6><div class=\"display-6\"> ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var13 string
templ_7745c5c3_Var13 , templ_7745c5c3_Err = templ . JoinStringErrs ( fmt. Sprintf ( "lane-%d-time" , lan e) )
templ_7745c5c3_Var13 , templ_7745c5c3_Err = templ . JoinStringErrs ( strconv. Itoa ( laneData . Plac e) )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 260, Col : 75 }
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 119, Col : 66 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var13 ) )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 18 , "\" class=\"display-6\">" )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if hasResult {
var templ_7745c5c3_Var14 string
templ_7745c5c3_Var14 , templ_7745c5c3_Err = templ . JoinStringErrs ( fmt . Sprintf ( "%.3f" , time ) )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 262 , Col : 67 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var14 ) )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 19 , "--.-" )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 20 , "</div></div></div><div class=\"col-6\"><div class=\"text-center\"><h6>Position</h6><div id=\"" )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var15 string
templ_7745c5c3_Var15 , templ_7745c5c3_Err = templ . JoinStringErrs ( fmt . Sprintf ( "lane-%d-position" , lane ) )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 272 , Col : 79 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var15 ) )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 21 , "\" class=\"display-6\">" )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if hasResult {
var templ_7745c5c3_Var16 string
templ_7745c5c3_Var16 , templ_7745c5c3_Err = templ . JoinStringErrs ( strconv . Itoa ( position ) )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 274 , Col : 64 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var16 ) )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 22 , "-" )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 23 , "</div></div></div></div></div></div></div></div>" )
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 18 , "</div></div></div></div></div></div></div></div>" )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -409,7 +306,7 @@ func raceLaneCard(lane int, racerID int64, racers []models.Racer, result *models
}
// Helper template for displaying next heat preview
func raceNextHeatPreview ( heat s [ ] models . Heat , racers [ ] models . Racer , heatNum int ) templ . Component {
func raceNextHeatPreview ( heat Data * models . HeatData ) templ . Component {
return templruntime . GeneratedTemplate ( func ( templ_7745c5c3_Input templruntime . GeneratedComponentInput ) ( templ_7745c5c3_Err error ) {
templ_7745c5c3_W , ctx := templ_7745c5c3_Input . Writer , templ_7745c5c3_Input . Context
if templ_7745c5c3_CtxErr := ctx . Err ( ) ; templ_7745c5c3_CtxErr != nil {
@ -425,62 +322,53 @@ func raceNextHeatPreview(heats []models.Heat, racers []models.Racer, heatNum int
} ( )
}
ctx = templ . InitializeContext ( ctx )
templ_7745c5c3_Var1 7 := templ . GetChildren ( ctx )
if templ_7745c5c3_Var1 7 == nil {
templ_7745c5c3_Var1 7 = templ . NopComponent
templ_7745c5c3_Var1 4 := templ . GetChildren ( ctx )
if templ_7745c5c3_Var1 4 == nil {
templ_7745c5c3_Var1 4 = templ . NopComponent
}
ctx = templ . ClearChildren ( ctx )
// Find the heat
var nextHeat models . Heat
for _ , heat := range heats {
if heat . HeatNum == heatNum {
nextHeat = heat
break
}
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 24 , "<h4 class=\"mb-3\">Heat " )
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 19 , "<h4 class=\"mb-3\">Heat " )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var1 8 string
templ_7745c5c3_Var1 8 , templ_7745c5c3_Err = templ . JoinStringErrs ( strconv . Itoa ( heat Num) )
var templ_7745c5c3_Var15 string
templ_7745c5c3_Var15 , templ_7745c5c3_Err = templ . JoinStringErrs ( strconv . Itoa ( heatData . HeatNumber ) )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 301, Col : 49 }
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 132 , Col : 61 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var1 8 ) )
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var15 ) )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 2 5 , "</h4><div class=\"table-responsive\"><table class=\"table table-striped\"><thead><tr><th>Lane</th><th>Racer</th><th>Car #</th></tr></thead> <tbody>" )
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 2 0 , "</h4><div class=\"table-responsive\"><table class=\"table table-striped\"><thead><tr><th>Lane</th><th>Racer</th><th>Car #</th></tr></thead> <tbody>" )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if nextHeat. Lane1ID != nil {
templ_7745c5c3_Err = raceNextHeatRow ( 1 , * nextHeat . Lane1ID , racers ) . Render ( ctx , templ_7745c5c3_Buffer )
if heatData. Lane1 != nil {
templ_7745c5c3_Err = raceNextHeatRow ( * heatData . Lane1 ) . Render ( ctx , templ_7745c5c3_Buffer )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
if nextHeat. Lane2ID != nil {
templ_7745c5c3_Err = raceNextHeatRow ( 2 , * nextHeat . Lane2ID , racers ) . Render ( ctx , templ_7745c5c3_Buffer )
if heatData. Lane2 != nil {
templ_7745c5c3_Err = raceNextHeatRow ( * heatData . Lane2 ) . Render ( ctx , templ_7745c5c3_Buffer )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
if nextHeat. Lane3ID != nil {
templ_7745c5c3_Err = raceNextHeatRow ( 3 , * nextHeat . Lane3ID , racers ) . Render ( ctx , templ_7745c5c3_Buffer )
if heatData. Lane3 != nil {
templ_7745c5c3_Err = raceNextHeatRow ( * heatData . Lane3 ) . Render ( ctx , templ_7745c5c3_Buffer )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
if nextHeat. Lane4ID != nil {
templ_7745c5c3_Err = raceNextHeatRow ( 4 , * nextHeat . Lane4ID , racers ) . Render ( ctx , templ_7745c5c3_Buffer )
if heatData. Lane4 != nil {
templ_7745c5c3_Err = raceNextHeatRow ( * heatData . Lane4 ) . Render ( ctx , templ_7745c5c3_Buffer )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 2 6 , "</tbody></table></div>" )
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 2 1 , "</tbody></table></div>" )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -489,7 +377,7 @@ func raceNextHeatPreview(heats []models.Heat, racers []models.Racer, heatNum int
}
// Helper template for displaying a row in the next heat preview
func raceNextHeatRow ( lane int , racerID int64 , racers [ ] models . Racer ) templ . Component {
func raceNextHeatRow ( lane Data models . LaneData ) templ . Component {
return templruntime . GeneratedTemplate ( func ( templ_7745c5c3_Input templruntime . GeneratedComponentInput ) ( templ_7745c5c3_Err error ) {
templ_7745c5c3_W , ctx := templ_7745c5c3_Input . Writer , templ_7745c5c3_Input . Context
if templ_7745c5c3_CtxErr := ctx . Err ( ) ; templ_7745c5c3_CtxErr != nil {
@ -505,73 +393,51 @@ func raceNextHeatRow(lane int, racerID int64, racers []models.Racer) templ.Compo
} ( )
}
ctx = templ . InitializeContext ( ctx )
templ_7745c5c3_Var1 9 := templ . GetChildren ( ctx )
if templ_7745c5c3_Var1 9 == nil {
templ_7745c5c3_Var1 9 = templ . NopComponent
templ_7745c5c3_Var1 6 := templ . GetChildren ( ctx )
if templ_7745c5c3_Var1 6 == nil {
templ_7745c5c3_Var1 6 = templ . NopComponent
}
ctx = templ . ClearChildren ( ctx )
// Find racer
var racer models . Racer
for _ , r := range racers {
if r . ID == racerID {
racer = r
break
}
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 27 , "<tr><td>" )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var20 string
templ_7745c5c3_Var20 , templ_7745c5c3_Err = templ . JoinStringErrs ( strconv . Itoa ( lane ) )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 343 , Col : 32 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var20 ) )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 28 , "</td><td>" )
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 22 , "<tr><td>" )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var 2 1 string
templ_7745c5c3_Var 2 1, templ_7745c5c3_Err = templ . JoinStringErrs ( racer. FirstName )
var templ_7745c5c3_Var17 string
templ_7745c5c3_Var17 , templ_7745c5c3_Err = templ . JoinStringErrs ( strconv . Itoa ( laneData . Lane ) )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 344, Col : 29 }
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 163 , Col : 41 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var 2 1) )
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var17 ) )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 2 9, " ")
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 23 , "</td><td>" )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var 22 string
templ_7745c5c3_Var 22 , templ_7745c5c3_Err = templ . JoinStringErrs ( racer. Last Name)
var templ_7745c5c3_Var18 string
templ_7745c5c3_Var18 , templ_7745c5c3_Err = templ . JoinStringErrs ( laneData . Name )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 344, Col : 48 }
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 164 , Col : 27 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var 22 ) )
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var18 ) )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 30 , "</td><td>" )
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 24 , "</td><td>" )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var 23 string
templ_7745c5c3_Var 23 , templ_7745c5c3_Err = templ . JoinStringErrs ( racer. CarNumber )
var templ_7745c5c3_Var 19 string
templ_7745c5c3_Var 19 , templ_7745c5c3_Err = templ . JoinStringErrs ( laneData. CarNum )
if templ_7745c5c3_Err != nil {
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 34 5, Col : 29 }
return templ . Error { Err : templ_7745c5c3_Err , FileName : ` web/templates/race_public.templ ` , Line : 16 5, Col : 29 }
}
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var 23 ) )
_ , templ_7745c5c3_Err = templ_7745c5c3_Buffer . WriteString ( templ . EscapeString ( templ_7745c5c3_Var 19 ) )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 31 , "</td></tr>" )
templ_7745c5c3_Err = templruntime . WriteString ( templ_7745c5c3_Buffer , 25 , "</td></tr>" )
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}