DustyP 9 months ago
parent a4c81cdbcb
commit d69644c4e6

@ -931,7 +931,7 @@ func (s *Server) handleValidateCarNumber() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
carNumber := r.URL.Query().Get("car_number")
if carNumber == "" {
http.Error(w, "Car number is required", http.StatusBadRequest)
http.Error(w, "<div class='alert alert-danger'>Car number is required</div>", http.StatusBadRequest)
return
}

@ -34,7 +34,7 @@ templ RegisterForm(groups []models.Group, isAdmin bool) {
hx-target="#racer-form-message"
hx-swap="innerHTML"
hx-on::before-request="return validateForm()"
hx-on::after-request="if(event.detail.successful) {
hx-on::after-request="if(event.detail.successful && !event.detail.xhr.response.includes('danger')) {
document.getElementById('racer-form').reset();
setTimeout(function() {
document.getElementById('racer-form-message').innerHTML = '';
@ -65,16 +65,9 @@ templ RegisterForm(groups []models.Group, isAdmin bool) {
hx-get="/api/validate/car-number"
hx-trigger="change"
hx-target="next .invalid-feedback"
hx-indicator="#car-number-indicator"
hx-swap="outerHTML"
/>
<div class="invalid-feedback"></div>
<div id="car-number-indicator" class="htmx-indicator">
<div class="spinner-border spinner-border-sm text-primary" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<small>Checking availability...</small>
</div>
</div>
<div class="mb-3">
<label for="car-weight" class="form-label">Car Weight (oz)</label>

@ -89,7 +89,7 @@ func RegisterForm(groups []models.Group, isAdmin bool) templ.Component {
templ_7745c5c3_Var3 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "<div class=\"card\"><div class=\"card-header\"><h3 class=\"h6 mb-0\">Racer Registration</h3></div><div class=\"card-body\"><div id=\"racer-form-message\"></div><form id=\"racer-form\" hx-post=\"/api/racers\" hx-target=\"#racer-form-message\" hx-swap=\"innerHTML\" hx-on::before-request=\"return validateForm()\" hx-on::after-request=\"if(event.detail.successful) { \r\n\t\t\t\t\tdocument.getElementById(&#39;racer-form&#39;).reset(); \r\n\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\tdocument.getElementById(&#39;racer-form-message&#39;).innerHTML = &#39;&#39;;\r\n\t\t\t\t\t\t// Check if we&#39;re on the admin page by looking for the racers-list element\r\n\t\t\t\t\t\tif (document.getElementById(&#39;racers-list&#39;)) {\r\n\t\t\t\t\t\t\thtmx.ajax(&#39;GET&#39;, &#39;/admin/racers/list&#39;, {target: &#39;#racers-list&#39;});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 3000);\r\n\t\t\t\t}\"><!-- Form fields for racer registration --><div class=\"mb-3\"><label for=\"first-name\" class=\"form-label\">First Name</label> <input type=\"text\" class=\"form-control\" id=\"first-name\" name=\"first_name\" required></div><div class=\"mb-3\"><label for=\"last-name\" class=\"form-label\">Last Name</label> <input type=\"text\" class=\"form-control\" id=\"last-name\" name=\"last_name\" required></div><div class=\"mb-3\"><label for=\"car-number\" class=\"form-label\">Car Number</label> <input type=\"text\" class=\"form-control\" id=\"car-number\" name=\"car_number\" required hx-get=\"/api/validate/car-number\" hx-trigger=\"change\" hx-target=\"next .invalid-feedback\" hx-indicator=\"#car-number-indicator\" hx-swap=\"outerHTML\"><div class=\"invalid-feedback\"></div><div id=\"car-number-indicator\" class=\"htmx-indicator\"><div class=\"spinner-border spinner-border-sm text-primary\" role=\"status\"><span class=\"visually-hidden\">Loading...</span></div><small>Checking availability...</small></div></div><div class=\"mb-3\"><label for=\"car-weight\" class=\"form-label\">Car Weight (oz)</label> <input type=\"number\" step=\"0.01\" class=\"form-control\" id=\"car-weight\" name=\"car_weight\" required></div><div class=\"mb-3\"><label for=\"group-id\" class=\"form-label\">Group</label> <select class=\"form-select\" id=\"group-id\" name=\"group_id\" required><option value=\"\">Select a group</option> ")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "<div class=\"card\"><div class=\"card-header\"><h3 class=\"h6 mb-0\">Racer Registration</h3></div><div class=\"card-body\"><div id=\"racer-form-message\"></div><form id=\"racer-form\" hx-post=\"/api/racers\" hx-target=\"#racer-form-message\" hx-swap=\"innerHTML\" hx-on::before-request=\"return validateForm()\" hx-on::after-request=\"if(event.detail.successful &amp;&amp; !event.detail.xhr.response.includes(&#39;danger&#39;)) { \r\n\t\t\t\t\tdocument.getElementById(&#39;racer-form&#39;).reset(); \r\n\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\tdocument.getElementById(&#39;racer-form-message&#39;).innerHTML = &#39;&#39;;\r\n\t\t\t\t\t\t// Check if we&#39;re on the admin page by looking for the racers-list element\r\n\t\t\t\t\t\tif (document.getElementById(&#39;racers-list&#39;)) {\r\n\t\t\t\t\t\t\thtmx.ajax(&#39;GET&#39;, &#39;/admin/racers/list&#39;, {target: &#39;#racers-list&#39;});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 3000);\r\n\t\t\t\t}\"><!-- Form fields for racer registration --><div class=\"mb-3\"><label for=\"first-name\" class=\"form-label\">First Name</label> <input type=\"text\" class=\"form-control\" id=\"first-name\" name=\"first_name\" required></div><div class=\"mb-3\"><label for=\"last-name\" class=\"form-label\">Last Name</label> <input type=\"text\" class=\"form-control\" id=\"last-name\" name=\"last_name\" required></div><div class=\"mb-3\"><label for=\"car-number\" class=\"form-label\">Car Number</label> <input type=\"text\" class=\"form-control\" id=\"car-number\" name=\"car_number\" required hx-get=\"/api/validate/car-number\" hx-trigger=\"change\" hx-target=\"next .invalid-feedback\" hx-swap=\"outerHTML\"><div class=\"invalid-feedback\"></div></div><div class=\"mb-3\"><label for=\"car-weight\" class=\"form-label\">Car Weight (oz)</label> <input type=\"number\" step=\"0.01\" class=\"form-control\" id=\"car-weight\" name=\"car_weight\" required></div><div class=\"mb-3\"><label for=\"group-id\" class=\"form-label\">Group</label> <select class=\"form-select\" id=\"group-id\" name=\"group_id\" required><option value=\"\">Select a group</option> ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -101,7 +101,7 @@ func RegisterForm(groups []models.Group, isAdmin bool) templ.Component {
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.FormatInt(group.ID, 10))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/register.templ`, Line: 88, Col: 54}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/register.templ`, Line: 81, Col: 54}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
@ -114,7 +114,7 @@ func RegisterForm(groups []models.Group, isAdmin bool) templ.Component {
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(group.Name)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/register.templ`, Line: 88, Col: 69}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/register.templ`, Line: 81, Col: 69}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
if templ_7745c5c3_Err != nil {

Loading…
Cancel
Save