feat: auto-populate suggested reps and weight in log form
Pre-fill the reps and weight inputs with progression engine suggestions so users can log sets without manually retyping values each time. Suggestions flow through the template chain on initial page load and on all HTMX partial responses (log, edit, delete).
This commit is contained in:
@@ -14,6 +14,7 @@ from sqlmodel import Session
|
||||
from app.database import get_db_session
|
||||
from app.models.user import User
|
||||
from app.services.log_service import LogService
|
||||
from app.services.progression_service import ProgressionService
|
||||
from app.services.workout_session_service import WorkoutSessionService
|
||||
from app.utils.auth import get_current_admin_user, get_active_profile_id
|
||||
|
||||
@@ -80,6 +81,10 @@ async def log_set(
|
||||
logs = log_service.list_logs_for_exercise(ws.id, exercise_id)
|
||||
next_set = len(logs) + 1
|
||||
|
||||
# Fetch suggestion for pre-filling the next set form
|
||||
progression = ProgressionService(session)
|
||||
suggestion = progression.get_suggestion(active_profile_id, exercise_id)
|
||||
|
||||
templates = request.app.state.templates
|
||||
return templates.TemplateResponse("partials/log_entry.html", {
|
||||
"request": request,
|
||||
@@ -88,6 +93,8 @@ async def log_set(
|
||||
"workout_day_id": workout_day_id,
|
||||
"next_set": next_set,
|
||||
"session_id": ws.id,
|
||||
"suggested_reps": suggestion.get("suggested_reps"),
|
||||
"suggested_weight": suggestion.get("suggested_weight"),
|
||||
})
|
||||
|
||||
|
||||
@@ -124,6 +131,13 @@ async def edit_log(
|
||||
logs = log_service.list_logs_for_exercise(log.session_id, log.exercise_id)
|
||||
next_set = len(logs) + 1
|
||||
|
||||
# Fetch suggestion for pre-filling the next set form
|
||||
active_profile_id = get_active_profile_id(request)
|
||||
suggestion = {}
|
||||
if active_profile_id:
|
||||
progression = ProgressionService(session)
|
||||
suggestion = progression.get_suggestion(active_profile_id, log.exercise_id)
|
||||
|
||||
templates = request.app.state.templates
|
||||
return templates.TemplateResponse("partials/log_entry.html", {
|
||||
"request": request,
|
||||
@@ -132,6 +146,8 @@ async def edit_log(
|
||||
"workout_day_id": 0,
|
||||
"next_set": next_set,
|
||||
"session_id": log.session_id,
|
||||
"suggested_reps": suggestion.get("suggested_reps"),
|
||||
"suggested_weight": suggestion.get("suggested_weight"),
|
||||
})
|
||||
|
||||
|
||||
@@ -164,6 +180,13 @@ async def delete_log(
|
||||
logs = log_service.list_logs_for_exercise(session_id, exercise_id)
|
||||
next_set = len(logs) + 1
|
||||
|
||||
# Fetch suggestion for pre-filling the next set form
|
||||
active_profile_id = get_active_profile_id(request)
|
||||
suggestion = {}
|
||||
if active_profile_id:
|
||||
progression = ProgressionService(session)
|
||||
suggestion = progression.get_suggestion(active_profile_id, exercise_id)
|
||||
|
||||
templates = request.app.state.templates
|
||||
return templates.TemplateResponse("partials/log_entry.html", {
|
||||
"request": request,
|
||||
@@ -172,6 +195,8 @@ async def delete_log(
|
||||
"workout_day_id": 0,
|
||||
"next_set": next_set,
|
||||
"session_id": session_id,
|
||||
"suggested_reps": suggestion.get("suggested_reps"),
|
||||
"suggested_weight": suggestion.get("suggested_weight"),
|
||||
})
|
||||
|
||||
return HTMLResponse("")
|
||||
|
||||
Reference in New Issue
Block a user