|
|
|
|
@ -135,6 +135,7 @@ func (s *Server) routes() {
|
|
|
|
|
|
|
|
|
|
// Add heats page route
|
|
|
|
|
s.router.Get("/heats", s.handleHeats())
|
|
|
|
|
s.router.Get("/heats-content", s.handleHeatsContent())
|
|
|
|
|
|
|
|
|
|
// Add heats API routes
|
|
|
|
|
s.router.Route("/api/heats", func(r chi.Router) {
|
|
|
|
|
@ -725,6 +726,36 @@ func (s *Server) handleDeleteRacer() http.HandlerFunc {
|
|
|
|
|
|
|
|
|
|
// handleHeats renders the heats page
|
|
|
|
|
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) {
|
|
|
|
|
// Get groups from database
|
|
|
|
|
groups, err := s.db.GetGroups()
|
|
|
|
|
|