update public page on heat change

main
DustyP 9 months ago
parent e6953e0f0c
commit 71a77454c8

@ -469,14 +469,40 @@ func (s *Server) broadcastAdminEvent(event models.AdminEvent) {
s.logger.Error("Failed to render current heat display", "error", err)
}
s.sendAdminEventToAllClients(fmt.Sprintf("event: current-heat\ndata: %s\n\n", sb.String()))
component = templates.RaceCurrentHeatLanes(&heatData)
var sb2 strings.Builder
err = component.Render(context.Background(), &sb2)
if err != nil {
s.logger.Error("Failed to render current heat lanes", "error", err)
}
s.sendAdminEventToAllClients(fmt.Sprintf("event: lane-data\ndata: %s\n\n", sb2.String()))
nextHeatData, _ := s.db.GetHeatData(heatData.Group.ID, heatData.HeatNumber+1)
component = templates.NextHeatDisplay(nextHeatData)
var sb2 strings.Builder
var sb3 strings.Builder
err = component.Render(context.Background(), &sb2)
if err != nil {
s.logger.Error("Failed to render next heat display", "error", err)
}
s.sendAdminEventToAllClients(fmt.Sprintf("event: next-heat\ndata: %s\n\n", sb2.String()))
s.sendAdminEventToAllClients(fmt.Sprintf("event: next-heat\ndata: %s\n\n", sb3.String()))
component = templates.RaceNextHeatPreview(nextHeatData)
var sb4 strings.Builder
err = component.Render(context.Background(), &sb4)
if err != nil {
s.logger.Error("Failed to render next heat preview", "error", err)
}
s.sendAdminEventToAllClients(fmt.Sprintf("event: next-public-heat\ndata: %s\n\n", sb4.String()))
upcomingHeatData, _ := s.db.GetHeatData(heatData.Group.ID, heatData.HeatNumber+2)
component = templates.RaceNextHeatPreview(upcomingHeatData)
var sb5 strings.Builder
err = component.Render(context.Background(), &sb5)
if err != nil {
s.logger.Error("Failed to render upcoming heat preview", "error", err)
}
s.sendAdminEventToAllClients(fmt.Sprintf("event: upcoming-public-heat\ndata: %s\n\n", sb5.String()))
s.sendAdminEventToAllClients(fmt.Sprintf("event: heat-number\ndata: %s - Heat: %d of %d\n\n", heatData.Group.Name, heatData.HeatNumber, heatData.TotalHeats))
} else {
s.logger.Error("Failed to convert event to HeatData")

@ -24,8 +24,8 @@ templ RacePublic(heatData *models.HeatData, nextHeat *models.HeatData, onDeckHea
<div id="status-indicator" class="w-25 h-100 d-inline-flex align-items-center justify-content-center badge bg-primary">Idle</div>
</div>
<div class="lanes-container">
@raceCurrentHeatLanes(heatData)
<div class="lanes-container" hx-ext="sse" sse-connect="/api/admin/events" sse-swap="lane-data">
@RaceCurrentHeatLanes(heatData)
</div>
</div>
</div>
@ -41,12 +41,8 @@ templ RacePublic(heatData *models.HeatData, nextHeat *models.HeatData, onDeckHea
<div class="card-header bg-info text-white">
<h3 class="mb-0 display-6">Next Heat</h3>
</div>
<div class="card-body">
if nextHeat != nil {
@raceNextHeatPreview(nextHeat)
} else {
<div class="alert alert-info display-4">No more heats in this group</div>
}
<div class="card-body" hx-ext="sse" sse-connect="/api/admin/events" sse-swap="next-public-heat">
@RaceNextHeatPreview(nextHeat)
</div>
</div>
</div>
@ -55,12 +51,8 @@ templ RacePublic(heatData *models.HeatData, nextHeat *models.HeatData, onDeckHea
<div class="card-header bg-info text-white">
<h3 class="mb-0 display-6">Upcoming Heat</h3>
</div>
<div class="card-body">
if onDeckHeat != nil {
@raceNextHeatPreview(onDeckHeat)
} else {
<div class="alert alert-info display-4">No more heats in this group</div>
}
<div class="card-body" hx-ext="sse" sse-connect="/api/admin/events" sse-swap="upcoming-public-heat">
@RaceNextHeatPreview(onDeckHeat)
</div>
</div>
</div>
@ -70,7 +62,7 @@ templ RacePublic(heatData *models.HeatData, nextHeat *models.HeatData, onDeckHea
}
// Helper template for displaying current heat lanes
templ raceCurrentHeatLanes(heatData *models.HeatData) {
templ RaceCurrentHeatLanes(heatData *models.HeatData) {
<div class="row row-cols-1 row-cols-md-4 g-4">
if heatData.Lane1 != nil {
@ -127,7 +119,8 @@ templ raceLaneCard(laneData models.LaneData) {
}
// Helper template for displaying next heat preview
templ raceNextHeatPreview(heatData *models.HeatData) {
templ RaceNextHeatPreview(heatData *models.HeatData) {
if heatData != nil {
<h4 class="mb-1">Heat { strconv.Itoa(heatData.HeatNumber) }</h4>
<div class="table-responsive">
<table class="table table-striped">
@ -154,6 +147,9 @@ templ raceNextHeatPreview(heatData *models.HeatData) {
</tbody>
</table>
</div>
} else {
<div class="alert alert-info display-4">No more heats in this group</div>
}
}
// Helper template for displaying a row in the next heat preview

@ -87,45 +87,31 @@ func RacePublic(heatData *models.HeatData, nextHeat *models.HeatData, onDeckHeat
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "</span></div><div class=\"card-body\"><div id=\"current-heat\" class=\"mb-2\"><div class=\"row\"><div class=\"col-12\"><div class=\"timer-display align-items-center text-center mb-4 display-4\" style=\"height: 50px;\" hx-ext=\"sse\" sse-connect=\"/api/events\" sse-swap=\"race-status\"><div id=\"status-indicator\" class=\"w-25 h-100 d-inline-flex align-items-center justify-content-center badge bg-primary\">Idle</div></div><div class=\"lanes-container\">")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "</span></div><div class=\"card-body\"><div id=\"current-heat\" class=\"mb-2\"><div class=\"row\"><div class=\"col-12\"><div class=\"timer-display align-items-center text-center mb-4 display-4\" style=\"height: 50px;\" hx-ext=\"sse\" sse-connect=\"/api/events\" sse-swap=\"race-status\"><div id=\"status-indicator\" class=\"w-25 h-100 d-inline-flex align-items-center justify-content-center badge bg-primary\">Idle</div></div><div class=\"lanes-container\" hx-ext=\"sse\" sse-connect=\"/api/admin/events\" sse-swap=\"lane-data\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = raceCurrentHeatLanes(heatData).Render(ctx, templ_7745c5c3_Buffer)
templ_7745c5c3_Err = RaceCurrentHeatLanes(heatData).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "</div></div></div></div></div></div></div></div><div class=\"row\"><div class=\"col-md-6\"><div class=\"card mb-0\"><div class=\"card-header bg-info text-white\"><h3 class=\"mb-0 display-6\">Next Heat</h3></div><div class=\"card-body\">")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "</div></div></div></div></div></div></div></div><div class=\"row\"><div class=\"col-md-6\"><div class=\"card mb-0\"><div class=\"card-header bg-info text-white\"><h3 class=\"mb-0 display-6\">Next Heat</h3></div><div class=\"card-body\" hx-ext=\"sse\" sse-connect=\"/api/admin/events\" sse-swap=\"next-public-heat\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if nextHeat != nil {
templ_7745c5c3_Err = raceNextHeatPreview(nextHeat).Render(ctx, templ_7745c5c3_Buffer)
templ_7745c5c3_Err = RaceNextHeatPreview(nextHeat).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<div class=\"alert alert-info display-4\">No more heats in this group</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "</div></div></div><div class=\"col-md-6\"><div class=\"card mb-0\"><div class=\"card-header bg-info text-white\"><h3 class=\"mb-0 display-6\">Upcoming Heat</h3></div><div class=\"card-body\">")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "</div></div></div><div class=\"col-md-6\"><div class=\"card mb-0\"><div class=\"card-header bg-info text-white\"><h3 class=\"mb-0 display-6\">Upcoming Heat</h3></div><div class=\"card-body\" hx-ext=\"sse\" sse-connect=\"/api/admin/events\" sse-swap=\"upcoming-public-heat\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if onDeckHeat != nil {
templ_7745c5c3_Err = raceNextHeatPreview(onDeckHeat).Render(ctx, templ_7745c5c3_Buffer)
templ_7745c5c3_Err = RaceNextHeatPreview(onDeckHeat).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "<div class=\"alert alert-info display-4\">No more heats in this group</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "</div></div></div></div></div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "</div></div></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -140,7 +126,7 @@ func RacePublic(heatData *models.HeatData, nextHeat *models.HeatData, onDeckHeat
}
// Helper template for displaying current heat lanes
func raceCurrentHeatLanes(heatData *models.HeatData) templ.Component {
func RaceCurrentHeatLanes(heatData *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,7 +147,7 @@ func raceCurrentHeatLanes(heatData *models.HeatData) templ.Component {
templ_7745c5c3_Var6 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "<div class=\"row row-cols-1 row-cols-md-4 g-4\">")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "<div class=\"row row-cols-1 row-cols-md-4 g-4\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -189,7 +175,7 @@ func raceCurrentHeatLanes(heatData *models.HeatData) templ.Component {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "</div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -219,111 +205,111 @@ func raceLaneCard(laneData models.LaneData) templ.Component {
templ_7745c5c3_Var7 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
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 display-6\">Lane ")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "<div class=\"col\"><div class=\"card h-100 lane-card\"><div class=\"card-header bg-primary text-white\"><h4 class=\"mb-0 display-6\">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(laneData.Lane))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 96, Col: 77}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 88, Col: 77}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "</h4></div><div class=\"card-body\"><h5 class=\"card-title display-4\">")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "</h4></div><div class=\"card-body\"><h5 class=\"card-title display-4\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var9 string
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: 99, Col: 64}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 91, Col: 64}
}
_, 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, "</h5><p class=\"card-text display-6\"><span class=\"display-4\"><strong>Car #:</strong> ")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "</h5><p class=\"card-text display-6\"><span class=\"display-4\"><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(laneData.CarNum)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 101, Col: 85}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 93, Col: 85}
}
_, 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, "</span><br><span class=\"display-7\"><strong>Weight:</strong> ")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "</span><br><span class=\"display-7\"><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(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: 102, Col: 113}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 94, Col: 113}
}
_, 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, "</span></p><div class=\"result-area\"><div class=\"row\"><div class=\"col-6\"><div class=\"text-center\"><h6 class=\"display-7\">Time</h6><div class=\"display-4\" hx-ext=\"sse\" sse-connect=\"/api/events\" sse-swap=\"")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "</span></p><div class=\"result-area\"><div class=\"row\"><div class=\"col-6\"><div class=\"text-center\"><h6 class=\"display-7\">Time</h6><div class=\"display-4\" hx-ext=\"sse\" sse-connect=\"/api/events\" sse-swap=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var12 string
templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("lane-%d-time", laneData.Lane))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 109, Col: 146}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 101, Col: 146}
}
_, 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, "\">")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var13 string
templ_7745c5c3_Var13, 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: 110, Col: 72}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 102, Col: 72}
}
_, 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, "</div></div></div><div class=\"col-6\"><div class=\"text-center\"><h6 class=\"display-7\">Position</h6><div class=\"display-4\" hx-ext=\"sse\" sse-connect=\"/api/events\" sse-swap=\"")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "</div></div></div><div class=\"col-6\"><div class=\"text-center\"><h6 class=\"display-7\">Position</h6><div class=\"display-4\" hx-ext=\"sse\" sse-connect=\"/api/events\" sse-swap=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var14 string
templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("lane-%d-position", laneData.Lane))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 117, Col: 150}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 109, Col: 150}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "\">")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var15 string
templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(laneData.Place))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 118, Col: 66}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 110, Col: 66}
}
_, 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, 20, "</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
}
@ -332,7 +318,7 @@ func raceLaneCard(laneData models.LaneData) templ.Component {
}
// Helper template for displaying next heat preview
func raceNextHeatPreview(heatData *models.HeatData) templ.Component {
func RaceNextHeatPreview(heatData *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 {
@ -353,20 +339,21 @@ func raceNextHeatPreview(heatData *models.HeatData) templ.Component {
templ_7745c5c3_Var16 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "<h4 class=\"mb-1\">Heat ")
if heatData != nil {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "<h4 class=\"mb-1\">Heat ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var17 string
templ_7745c5c3_Var17, 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: 131, Col: 61}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 124, Col: 65}
}
_, 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, 22, "</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, 20, "</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
}
@ -394,10 +381,16 @@ func raceNextHeatPreview(heatData *models.HeatData) templ.Component {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "</tbody></table></div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "</tbody></table></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "<div class=\"alert alert-info display-4\">No more heats in this group</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
return nil
})
}
@ -424,46 +417,46 @@ func raceNextHeatRow(laneData models.LaneData) templ.Component {
templ_7745c5c3_Var18 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "<tr><td class=\"display-6\">")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "<tr><td class=\"display-6\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var19 string
templ_7745c5c3_Var19, 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: 162, Col: 59}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 158, Col: 59}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</td><td class=\"display-6\">")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "</td><td class=\"display-6\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var20 string
templ_7745c5c3_Var20, 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: 163, Col: 45}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 159, Col: 45}
}
_, 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, 26, "</td><td class=\"display-6\">")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</td><td class=\"display-6\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var21 string
templ_7745c5c3_Var21, 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: 164, Col: 47}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/race_public.templ`, Line: 160, Col: 47}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "</td></tr>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "</td></tr>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

Loading…
Cancel
Save