diff --git a/web/server.go b/web/server.go index 4b837c7..278676e 100644 --- a/web/server.go +++ b/web/server.go @@ -117,6 +117,7 @@ func (s *Server) routes() { s.router.Get("/admin", s.handleAdmin()) s.router.Get("/register", s.handleRegister()) + s.router.Get("/register/form", s.handleRegisterForm()) s.router.Route("/api/groups", func(r chi.Router) { r.Post("/", s.handleCreateGroup()) @@ -433,6 +434,27 @@ func (s *Server) handleRegister() http.HandlerFunc { } } +// handleRegisterForm returns just the registration form component +func (s *Server) handleRegisterForm() http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + // Get groups for the form + groups, err := s.db.GetGroups() + if err != nil { + s.logger.Error("Failed to get groups", "error", err) + http.Error(w, "Failed to get groups", http.StatusInternalServerError) + return + } + + // Render just the registration form component + component := templates.RegisterForm(groups) + if err := component.Render(r.Context(), w); err != nil { + s.logger.Error("Failed to render registration form", "error", err) + http.Error(w, "Failed to render registration form", http.StatusInternalServerError) + return + } + } +} + // API handlers for groups // handleCreateGroup creates a new group diff --git a/web/templates/admin.templ b/web/templates/admin.templ index 1cfdc8b..3efbaa0 100644 --- a/web/templates/admin.templ +++ b/web/templates/admin.templ @@ -33,7 +33,7 @@ templ Admin(groups []models.Group, racers []models.Racer) {
@@ -99,7 +99,7 @@ templ Admin(groups []models.Group, racers []models.Racer) {

Racers

Add New Group

") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "

Admin Dashboard

Groups

Add New Group

") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -133,7 +133,7 @@ func Admin(groups []models.Group, racers []models.Racer) templ.Component { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "

Racers

") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "

Racers

") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/web/templates/register.templ b/web/templates/register.templ index 21ba242..14aee96 100644 --- a/web/templates/register.templ +++ b/web/templates/register.templ @@ -2,6 +2,7 @@ package templates import ( "fmt" + "strconv" "track-gopher/models" ) @@ -125,4 +126,51 @@ templ Register(groups []models.Group) { +} + +templ RegisterForm(groups []models.Group) { +
+
+

Add New Racer

+
+
+
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
} \ No newline at end of file diff --git a/web/templates/register_templ.go b/web/templates/register_templ.go index 767d31f..ec5cd13 100644 --- a/web/templates/register_templ.go +++ b/web/templates/register_templ.go @@ -10,6 +10,7 @@ import templruntime "github.com/a-h/templ/runtime" import ( "fmt" + "strconv" "track-gopher/models" ) @@ -46,7 +47,7 @@ func Register(groups []models.Group) templ.Component { var templ_7745c5c3_Var2 string templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprint(group.ID)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/register.templ`, Line: 64, Col: 47} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/register.templ`, Line: 65, Col: 47} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) if templ_7745c5c3_Err != nil { @@ -59,7 +60,7 @@ func Register(groups []models.Group) templ.Component { var templ_7745c5c3_Var3 string templ_7745c5c3_Var3, 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: 64, Col: 62} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `web/templates/register.templ`, Line: 65, Col: 62} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) if templ_7745c5c3_Err != nil { @@ -78,4 +79,69 @@ func Register(groups []models.Group) templ.Component { }) } +func RegisterForm(groups []models.Group) 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 { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var4 := templ.GetChildren(ctx) + if templ_7745c5c3_Var4 == nil { + templ_7745c5c3_Var4 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "

Add New Racer

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + var _ = templruntime.GeneratedTemplate