diff --git a/web/server.go b/web/server.go index 3d609f8..ad2aa9d 100644 --- a/web/server.go +++ b/web/server.go @@ -1314,18 +1314,22 @@ func (s *Server) handleNextHeat() http.HandlerFunc { } // Broadcast event to admin page - select { - case s.adminEvents <- "heat-changed": - // Event sent - default: - // Channel full, non-blocking - } + s.broadcastAdminEvent("heat-changed") w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(map[string]string{"status": "success"}) } } +// broadcastAdminEvent sends an event to all admin clients +func (s *Server) broadcastAdminEvent(event string) { + // Create a simple event message + eventMsg := fmt.Sprintf(`{"event":"%s"}`, event) + + // Send to all admin clients + s.adminEvents <- eventMsg +} + // handlePreviousHeat goes back to the previous heat func (s *Server) handlePreviousHeat() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { @@ -1364,12 +1368,7 @@ func (s *Server) handlePreviousHeat() http.HandlerFunc { } // Broadcast event to admin page - select { - case s.adminEvents <- "heat-changed": - // Event sent - default: - // Channel full, non-blocking - } + s.broadcastAdminEvent("heat-changed") w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(map[string]string{"status": "success"}) @@ -1456,12 +1455,7 @@ func (s *Server) handleRerunHeat() http.HandlerFunc { } // Broadcast event to admin page - select { - case s.adminEvents <- "heat-rerun": - // Event sent - default: - // Channel full, non-blocking - } + s.broadcastAdminEvent("heat-rerun") w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(map[string]string{"status": "success"}) @@ -1494,12 +1488,7 @@ func (s *Server) handleSetRacingGroup() http.HandlerFunc { } // Broadcast event to admin page - select { - case s.adminEvents <- "group-changed": - // Event sent - default: - // Channel full, non-blocking - } + s.broadcastAdminEvent("group-changed") w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(map[string]string{"status": "success"}) diff --git a/web/templates/race_manage.templ b/web/templates/race_manage.templ index 1fba8b9..1e3e08a 100644 --- a/web/templates/race_manage.templ +++ b/web/templates/race_manage.templ @@ -237,6 +237,23 @@ templ RaceManage(groups []models.Group, currentGroup models.Group, heats []model } }; + // Add event listener for admin events + eventSource.addEventListener('admin', function(event) { + console.log("Admin event received:", event.data); + try { + const adminData = JSON.parse(event.data); + + if (adminData.event === 'heat-changed' || + adminData.event === 'group-changed' || + adminData.event === 'heat-rerun') { + // Reload the page when heat or group changes + window.location.reload(); + } + } catch (error) { + console.error("Error processing admin event:", error); + } + }); + // Function to reset the timer function resetTimer() { fetch('/api/reset', { method: 'POST' }) diff --git a/web/templates/race_manage_templ.go b/web/templates/race_manage_templ.go index 62691f5..516ce9e 100644 --- a/web/templates/race_manage_templ.go +++ b/web/templates/race_manage_templ.go @@ -238,7 +238,7 @@ func RaceManage(groups []models.Group, currentGroup models.Group, heats []models return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -389,7 +389,7 @@ func raceManageLaneRow(lane int, racerID int64, racers []models.Racer, result *m var templ_7745c5c3_Var14 string templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(lane)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 403, Col: 32} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 420, Col: 32} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14)) if templ_7745c5c3_Err != nil { @@ -402,7 +402,7 @@ func raceManageLaneRow(lane int, racerID int64, racers []models.Racer, result *m var templ_7745c5c3_Var15 string templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(racer.FirstName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 404, Col: 29} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 421, Col: 29} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15)) if templ_7745c5c3_Err != nil { @@ -415,7 +415,7 @@ func raceManageLaneRow(lane int, racerID int64, racers []models.Racer, result *m var templ_7745c5c3_Var16 string templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(racer.LastName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 404, Col: 48} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 421, Col: 48} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16)) if templ_7745c5c3_Err != nil { @@ -428,7 +428,7 @@ func raceManageLaneRow(lane int, racerID int64, racers []models.Racer, result *m var templ_7745c5c3_Var17 string templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(racer.CarNumber) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 405, Col: 29} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 422, Col: 29} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17)) if templ_7745c5c3_Err != nil { @@ -441,7 +441,7 @@ func raceManageLaneRow(lane int, racerID int64, racers []models.Racer, result *m var templ_7745c5c3_Var18 string templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("lane-%d-time", lane)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 406, Col: 50} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 423, Col: 50} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18)) if templ_7745c5c3_Err != nil { @@ -455,7 +455,7 @@ func raceManageLaneRow(lane int, racerID int64, racers []models.Racer, result *m var templ_7745c5c3_Var19 string templ_7745c5c3_Var19, 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_manage.templ`, Line: 408, Col: 43} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 425, Col: 43} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19)) if templ_7745c5c3_Err != nil { @@ -474,7 +474,7 @@ func raceManageLaneRow(lane int, racerID int64, racers []models.Racer, result *m var templ_7745c5c3_Var20 string templ_7745c5c3_Var20, 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_manage.templ`, Line: 413, Col: 54} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 430, Col: 54} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20)) if templ_7745c5c3_Err != nil { @@ -488,7 +488,7 @@ func raceManageLaneRow(lane int, racerID int64, racers []models.Racer, result *m var templ_7745c5c3_Var21 string templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(position)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 415, Col: 40} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 432, Col: 40} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21)) if templ_7745c5c3_Err != nil { @@ -613,7 +613,7 @@ func raceManageNextHeatRow(lane int, racerID int64, racers []models.Racer) templ var templ_7745c5c3_Var24 string templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(lane)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 477, Col: 32} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 494, Col: 32} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24)) if templ_7745c5c3_Err != nil { @@ -626,7 +626,7 @@ func raceManageNextHeatRow(lane int, racerID int64, racers []models.Racer) templ var templ_7745c5c3_Var25 string templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(racer.FirstName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 478, Col: 29} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 495, Col: 29} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25)) if templ_7745c5c3_Err != nil { @@ -639,7 +639,7 @@ func raceManageNextHeatRow(lane int, racerID int64, racers []models.Racer) templ var templ_7745c5c3_Var26 string templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(racer.LastName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 478, Col: 48} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 495, Col: 48} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26)) if templ_7745c5c3_Err != nil { @@ -652,7 +652,7 @@ func raceManageNextHeatRow(lane int, racerID int64, racers []models.Racer) templ var templ_7745c5c3_Var27 string templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(racer.CarNumber) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 479, Col: 29} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_manage.templ`, Line: 496, Col: 29} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27)) if templ_7745c5c3_Err != nil { diff --git a/web/templates/race_public.templ b/web/templates/race_public.templ index 33a950d..cea6393 100644 --- a/web/templates/race_public.templ +++ b/web/templates/race_public.templ @@ -121,20 +121,12 @@ templ RacePublic(currentGroup models.Group, heats []models.Heat, racers []models statusText = 'Ready'; statusClass = 'bg-primary'; - // Reset all lanes + // Don't reset times and positions here anymore + // Only reset visual styling document.querySelectorAll('.lane-card').forEach(lane => { lane.classList.remove('bg-success-subtle'); }); - // Reset all times and positions - document.querySelectorAll('[id^="lane-"][id$="-time"]').forEach(el => { - el.textContent = '--.-'; - }); - - document.querySelectorAll('[id^="lane-"][id$="-position"]').forEach(el => { - el.textContent = '-'; - }); - } else if (statusData.status === 'running') { statusText = 'Race Running'; statusClass = 'bg-success'; @@ -142,10 +134,8 @@ templ RacePublic(currentGroup models.Group, heats []models.Heat, racers []models statusText = 'Race Complete'; statusClass = 'bg-info'; - // Reload the page after a short delay to show final results - setTimeout(() => { - window.location.reload(); - }, 3000); + // Don't reload the page automatically + // Let the race manager control when to move to the next heat } const statusIndicator = document.getElementById('status-indicator'); diff --git a/web/templates/race_public_templ.go b/web/templates/race_public_templ.go index b2cb139..d2117e3 100644 --- a/web/templates/race_public_templ.go +++ b/web/templates/race_public_templ.go @@ -125,7 +125,7 @@ func RacePublic(currentGroup models.Group, heats []models.Heat, racers []models. return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -276,7 +276,7 @@ func raceLaneCard(lane int, racerID int64, racers []models.Racer, result *models var templ_7745c5c3_Var8 string templ_7745c5c3_Var8, 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: 257, Col: 58} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 247, Col: 58} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) if templ_7745c5c3_Err != nil { @@ -289,7 +289,7 @@ func raceLaneCard(lane int, racerID int64, racers []models.Racer, result *models var templ_7745c5c3_Var9 string templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(racer.FirstName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 260, Col: 56} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 250, Col: 56} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) if templ_7745c5c3_Err != nil { @@ -302,7 +302,7 @@ func raceLaneCard(lane int, racerID int64, racers []models.Racer, result *models var templ_7745c5c3_Var10 string templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(racer.LastName) 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: 250, Col: 75} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) if templ_7745c5c3_Err != nil { @@ -315,7 +315,7 @@ func raceLaneCard(lane int, racerID int64, racers []models.Racer, result *models var templ_7745c5c3_Var11 string templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(racer.CarNumber) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 262, Col: 61} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 252, Col: 61} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) if templ_7745c5c3_Err != nil { @@ -328,7 +328,7 @@ func raceLaneCard(lane int, racerID int64, racers []models.Racer, result *models var templ_7745c5c3_Var12 string templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.1f oz", racer.CarWeight)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 263, Col: 86} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 253, Col: 86} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) if templ_7745c5c3_Err != nil { @@ -341,7 +341,7 @@ func raceLaneCard(lane int, racerID int64, racers []models.Racer, result *models var templ_7745c5c3_Var13 string templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("lane-%d-time", lane)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 270, Col: 75} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 260, Col: 75} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13)) if templ_7745c5c3_Err != nil { @@ -355,7 +355,7 @@ func raceLaneCard(lane int, racerID int64, racers []models.Racer, result *models 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: 272, Col: 67} + 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 { @@ -374,7 +374,7 @@ func raceLaneCard(lane int, racerID int64, racers []models.Racer, result *models 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: 282, Col: 79} + 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 { @@ -388,7 +388,7 @@ func raceLaneCard(lane int, racerID int64, racers []models.Racer, result *models 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: 284, Col: 64} + 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 { @@ -446,7 +446,7 @@ func raceNextHeatPreview(heats []models.Heat, racers []models.Racer, heatNum int var templ_7745c5c3_Var18 string templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(heatNum)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 311, Col: 49} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 301, Col: 49} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18)) if templ_7745c5c3_Err != nil { @@ -526,7 +526,7 @@ func raceNextHeatRow(lane int, racerID int64, racers []models.Racer) templ.Compo 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: 353, Col: 32} + 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 { @@ -539,7 +539,7 @@ func raceNextHeatRow(lane int, racerID int64, racers []models.Racer) templ.Compo var templ_7745c5c3_Var21 string templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(racer.FirstName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 354, Col: 29} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 344, Col: 29} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21)) if templ_7745c5c3_Err != nil { @@ -552,7 +552,7 @@ func raceNextHeatRow(lane int, racerID int64, racers []models.Racer) templ.Compo var templ_7745c5c3_Var22 string templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs(racer.LastName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 354, Col: 48} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 344, Col: 48} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22)) if templ_7745c5c3_Err != nil { @@ -565,7 +565,7 @@ func raceNextHeatRow(lane int, racerID int64, racers []models.Racer) templ.Compo var templ_7745c5c3_Var23 string templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(racer.CarNumber) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 355, Col: 29} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 345, Col: 29} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23)) if templ_7745c5c3_Err != nil {