DustyP 9 months ago
parent a76ec1c71e
commit 4385f86f23

@ -135,6 +135,7 @@ func (s *Server) routes() {
// Add heats page route // Add heats page route
s.router.Get("/heats", s.handleHeats()) s.router.Get("/heats", s.handleHeats())
s.router.Get("/heats-content", s.handleHeatsContent())
// Add heats API routes // Add heats API routes
s.router.Route("/api/heats", func(r chi.Router) { s.router.Route("/api/heats", func(r chi.Router) {
@ -725,6 +726,36 @@ func (s *Server) handleDeleteRacer() http.HandlerFunc {
// handleHeats renders the heats page // handleHeats renders the heats page
func (s *Server) handleHeats() http.HandlerFunc { func (s *Server) handleHeats() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
// Get groups from database
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
}
// Get selected group ID from query parameter
selectedGroupID := int64(0)
groupIDStr := r.URL.Query().Get("group_id")
if groupIDStr != "" {
groupID, err := strconv.ParseInt(groupIDStr, 10, 64)
if err == nil {
selectedGroupID = groupID
}
}
// Render template
component := templates.Heats(groups, selectedGroupID, s.db)
if err := component.Render(r.Context(), w); err != nil {
s.logger.Error("Failed to render heats template", "error", err)
http.Error(w, "Failed to render page", http.StatusInternalServerError)
}
}
}
// handleHeatsContent renders the heats content
func (s *Server) handleHeatsContent() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
// Get groups from database // Get groups from database
groups, err := s.db.GetGroups() groups, err := s.db.GetGroups()

@ -7,7 +7,7 @@ import (
"track-gopher/derby" "track-gopher/derby"
) )
templ Heats(groups []models.Group, racers []models.Racer, selectedGroupID int64, db *db.DB) { templ Heats(groups []models.Group, selectedGroupID int64, db *db.DB) {
@Layout("Race Heats") { @Layout("Race Heats") {
<div class="container py-4"> <div class="container py-4">
<h1 class="mb-4">Race Heats Generator</h1> <h1 class="mb-4">Race Heats Generator</h1>
@ -17,7 +17,7 @@ templ Heats(groups []models.Group, racers []models.Racer, selectedGroupID int64,
<select <select
id="group-select" id="group-select"
class="form-select" class="form-select"
hx-get="/heats" hx-get="/heats-content"
hx-target="#heats-container" hx-target="#heats-container"
hx-trigger="change" hx-trigger="change"
hx-include="this" hx-include="this"

@ -15,7 +15,7 @@ import (
"track-gopher/models" "track-gopher/models"
) )
func Heats(groups []models.Group, racers []models.Racer, selectedGroupID int64, db *db.DB) templ.Component { func Heats(groups []models.Group, selectedGroupID int64, db *db.DB) templ.Component {
return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { 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 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
@ -48,7 +48,7 @@ func Heats(groups []models.Group, racers []models.Racer, selectedGroupID int64,
}() }()
} }
ctx = templ.InitializeContext(ctx) ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"container py-4\"><h1 class=\"mb-4\">Race Heats Generator</h1><div class=\"mb-4\"><label for=\"group-select\" class=\"form-label\">Select Group</label> <select id=\"group-select\" class=\"form-select\" hx-get=\"/heats\" hx-target=\"#heats-container\" hx-trigger=\"change\" hx-include=\"this\" name=\"group_id\"><option value=\"\">Select a group</option> ") templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"container py-4\"><h1 class=\"mb-4\">Race Heats Generator</h1><div class=\"mb-4\"><label for=\"group-select\" class=\"form-label\">Select Group</label> <select id=\"group-select\" class=\"form-select\" hx-get=\"/heats-content\" hx-target=\"#heats-container\" hx-trigger=\"change\" hx-include=\"this\" name=\"group_id\"><option value=\"\">Select a group</option> ")
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err return templ_7745c5c3_Err
} }

Loading…
Cancel
Save