DustyP 9 months ago
parent 4457e454c7
commit acc1111550

@ -509,6 +509,7 @@ func (s *Server) broadcastAdminEvent(event models.AdminEvent) {
}
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))
s.sendAdminEventToAllClients(fmt.Sprintf("event: group-name\ndata: %s\n\n", heatData.Group.Name))
} else {
s.logger.Error("Failed to convert event to HeatData")
}

@ -9,7 +9,7 @@ templ FinalResultsPublic(results []models.FinalResult, groupName string, revealC
<div class="container mt-4">
<div class="text-center mb-5">
<h1 class="display-4">Final Results</h1>
<h2 class="text-primary">{ groupName }</h2>
<h2 class="text-primary" hx-ext="sse" sse-connect="/api/admin/events" sse-swap="group-name">{ groupName }</h2>
</div>
<div class="card">
@ -29,7 +29,6 @@ templ FinalResultsPublic(results []models.FinalResult, groupName string, revealC
</tr>
</thead>
<tbody id="results-body" hx-ext="sse" sse-connect="/api/admin/events" sse-swap="results-reveal">
@FinalResultsTable(results)
</tbody>
</table>
</div>

@ -45,28 +45,20 @@ func FinalResultsPublic(results []models.FinalResult, groupName string, revealCo
}()
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"container mt-4\"><div class=\"text-center mb-5\"><h1 class=\"display-4\">Final Results</h1><h2 class=\"text-primary\">")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"container mt-4\"><div class=\"text-center mb-5\"><h1 class=\"display-4\">Final Results</h1><h2 class=\"text-primary\" hx-ext=\"sse\" sse-connect=\"/api/admin/events\" sse-swap=\"group-name\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(groupName)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 12, Col: 40}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 12, Col: 107}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</h2></div><div class=\"card\"><div class=\"card-header bg-primary text-white\"><h3 class=\"mb-0\">Final Standings</h3></div><div class=\"card-body\"><div class=\"table-responsive\"><table class=\"table table-striped table-hover\"><thead><tr><th>Place</th><th>Racer</th><th>Car #</th><th>Times</th><th>Final Time</th></tr></thead> <tbody id=\"results-body\" hx-ext=\"sse\" sse-connect=\"/api/admin/events\" sse-swap=\"results-reveal\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = FinalResultsTable(results).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "</tbody></table></div></div><div class=\"card-footer\"><small class=\"text-muted\">Final time is the average of the fastest 3 times (discarding the slowest time if 4 runs completed)</small></div></div></div><style>\r\n\t\t\t.reveal-animation {\r\n\t\t\t\tanimation: fadeIn 1s;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t@keyframes fadeIn {\r\n\t\t\t\tfrom { opacity: 0; transform: translateY(20px); }\r\n\t\t\t\tto { opacity: 1; transform: translateY(0); }\r\n\t\t\t}\r\n\t\t</style>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</h2></div><div class=\"card\"><div class=\"card-header bg-primary text-white\"><h3 class=\"mb-0\">Final Standings</h3></div><div class=\"card-body\"><div class=\"table-responsive\"><table class=\"table table-striped table-hover\"><thead><tr><th>Place</th><th>Racer</th><th>Car #</th><th>Times</th><th>Final Time</th></tr></thead> <tbody id=\"results-body\" hx-ext=\"sse\" sse-connect=\"/api/admin/events\" sse-swap=\"results-reveal\"></tbody></table></div></div><div class=\"card-footer\"><small class=\"text-muted\">Final time is the average of the fastest 3 times (discarding the slowest time if 4 runs completed)</small></div></div></div><style>\r\n\t\t\t.reveal-animation {\r\n\t\t\t\tanimation: fadeIn 1s;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t@keyframes fadeIn {\r\n\t\t\t\tfrom { opacity: 0; transform: translateY(20px); }\r\n\t\t\t\tto { opacity: 1; transform: translateY(0); }\r\n\t\t\t}\r\n\t\t</style>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -102,75 +94,75 @@ func FinalResultsTable(results []models.FinalResult) templ.Component {
}
ctx = templ.ClearChildren(ctx)
for _, result := range results {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "<tr class=\"reveal-animation\"><td>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "<tr class=\"reveal-animation\"><td>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", result.Place))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 59, Col: 49}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 58, Col: 49}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "</td><td>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "</td><td>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(result.Racer.FirstName)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 60, Col: 40}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 59, Col: 40}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, " ")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, " ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var7 string
templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(result.Racer.LastName)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 60, Col: 66}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 59, Col: 66}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "</td><td>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "</td><td>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(result.Racer.CarNumber)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 61, Col: 40}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 60, Col: 40}
}
_, 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, 8, "</td><td><small>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "</td><td><small>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for i, time := range result.Times {
if i > 0 {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, ", ")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, ", ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, " ")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, " ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if time >= 9.999 {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "DNF")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "DNF")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -178,7 +170,7 @@ func FinalResultsTable(results []models.FinalResult) templ.Component {
var templ_7745c5c3_Var9 string
templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.3f", time))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 71, Col: 55}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 70, Col: 55}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
if templ_7745c5c3_Err != nil {
@ -186,35 +178,35 @@ func FinalResultsTable(results []models.FinalResult) templ.Component {
}
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "</small></td><td>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "</small></td><td>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if result.DNF {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<span class=\"text-danger\">DNF</span>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "<span class=\"text-danger\">DNF</span>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "<strong>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<strong>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var10 string
templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.3f", result.AverageTime))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 80, Col: 69}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 79, Col: 69}
}
_, 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, "</strong>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "</strong>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "</td></tr>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "</td></tr>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -257,53 +249,53 @@ func FinalResultsPage(groups []models.Group, selectedGroupID int64, results []mo
}()
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<div class=\"container mt-4\"><h1 class=\"mb-4\">Final Results</h1><div class=\"row mb-4\"><div class=\"col-md-6\"><div class=\"card\"><div class=\"card-header\"><h5 class=\"mb-0\">Select Group</h5></div><div class=\"card-body\"><form id=\"group-select-form\" method=\"get\" action=\"/results\"><div class=\"mb-3\"><label for=\"group_id\" class=\"form-label\">Racing Group</label> <select class=\"form-select\" id=\"group_id\" name=\"group_id\" onchange=\"this.form.submit()\"><option value=\"\">Select a group...</option> ")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "<div class=\"container mt-4\"><h1 class=\"mb-4\">Final Results</h1><div class=\"row mb-4\"><div class=\"col-md-6\"><div class=\"card\"><div class=\"card-header\"><h5 class=\"mb-0\">Select Group</h5></div><div class=\"card-body\"><form id=\"group-select-form\" method=\"get\" action=\"/results\"><div class=\"mb-3\"><label for=\"group_id\" class=\"form-label\">Racing Group</label> <select class=\"form-select\" id=\"group_id\" name=\"group_id\" onchange=\"this.form.submit()\"><option value=\"\">Select a group...</option> ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for _, group := range groups {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "<option value=\"")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<option value=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var13 string
templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", group.ID))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 106, Col: 54}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 105, Col: 54}
}
_, 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, 19, "\"")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if group.ID == selectedGroupID {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, " selected")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, " selected")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, ">")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, ">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var14 string
templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(group.Name)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 107, Col: 24}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/final_results_page.templ`, Line: 106, Col: 24}
}
_, 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, 22, "</option>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "</option>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "</select></div></form></div></div></div></div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "</select></div></form></div></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -313,7 +305,7 @@ func FinalResultsPage(groups []models.Group, selectedGroupID int64, results []mo
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "</div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

@ -33,7 +33,7 @@ templ RaceManage(heatData *models.HeatData, nextHeat *models.HeatData, groups []
<div class="card-body">
<div class="mb-3">
<label for="group-select" class="form-label">Racing Group</label>
<select id="group-select" class="form-select" hx-post="/api/race/set-group" hx-trigger="change" hx-swap="none">
<select id="group-select" class="form-select" name="group_id" hx-post="/api/race/set-group" hx-trigger="change" hx-swap="none">
for _, group := range groups {
<option value={ strconv.FormatInt(group.ID, 10) } selected?={ group.ID == heatData.Group.ID }>
{ group.Name }

@ -48,7 +48,7 @@ func RaceManage(heatData *models.HeatData, nextHeat *models.HeatData, groups []m
}()
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"container-fluid mt-3\"><div class=\"row mb-4\"><div class=\"col-12\"><div class=\"d-flex justify-content-between\"><h2>Race Management</h2><div><button id=\"reveal-btn\" class=\"btn btn-warning\" hx-post=\"/api/results/reveal\" hx-swap=\"none\"><i class=\"bi bi-eye\"></i> Reveal</button></div></div></div></div><div class=\"row mb-4\"><div class=\"col-md-6\"><div class=\"card\"><div class=\"card-header bg-primary text-white\"><h4 class=\"mb-0\">Race Control</h4></div><div class=\"card-body\"><div class=\"mb-3\"><label for=\"group-select\" class=\"form-label\">Racing Group</label> <select id=\"group-select\" class=\"form-select\" hx-post=\"/api/race/set-group\" hx-trigger=\"change\" hx-swap=\"none\">")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"container-fluid mt-3\"><div class=\"row mb-4\"><div class=\"col-12\"><div class=\"d-flex justify-content-between\"><h2>Race Management</h2><div><button id=\"reveal-btn\" class=\"btn btn-warning\" hx-post=\"/api/results/reveal\" hx-swap=\"none\"><i class=\"bi bi-eye\"></i> Reveal</button></div></div></div></div><div class=\"row mb-4\"><div class=\"col-md-6\"><div class=\"card\"><div class=\"card-header bg-primary text-white\"><h4 class=\"mb-0\">Race Control</h4></div><div class=\"card-body\"><div class=\"mb-3\"><label for=\"group-select\" class=\"form-label\">Racing Group</label> <select id=\"group-select\" class=\"form-select\" name=\"group_id\" hx-post=\"/api/race/set-group\" hx-trigger=\"change\" hx-swap=\"none\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

Loading…
Cancel
Save