From b834e89a970b898bc625176f541a6a3054679980 Mon Sep 17 00:00:00 2001 From: sstent Date: Tue, 24 Feb 2026 08:46:32 -0800 Subject: [PATCH] feat(phase): Complete Phase 3: UI & Cookbook Refinement --- app/api/routes/meals.py | 5 ++++- templates/tracker.html | 8 +++++--- tests/tracked_meal_refactor.spec.js | 32 +++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 tests/tracked_meal_refactor.spec.js diff --git a/app/api/routes/meals.py b/app/api/routes/meals.py index 18320c2..467d9cb 100644 --- a/app/api/routes/meals.py +++ b/app/api/routes/meals.py @@ -15,7 +15,10 @@ router = APIRouter() @router.get("/meals", response_class=HTMLResponse) async def meals_page(request: Request, db: Session = Depends(get_db)): from sqlalchemy.orm import joinedload - meals = db.query(Meal).options(joinedload(Meal.meal_foods).joinedload(MealFood.food)).all() + # Filter out single food entries and snapshots + meals = db.query(Meal).filter( + Meal.meal_type.notin_(["single_food", "tracked_snapshot"]) + ).options(joinedload(Meal.meal_foods).joinedload(MealFood.food)).all() foods = db.query(Food).all() return templates.TemplateResponse("meals.html", {"request": request, "meals": meals, "foods": foods}) diff --git a/templates/tracker.html b/templates/tracker.html index 84ad3dd..682f500 100644 --- a/templates/tracker.html +++ b/templates/tracker.html @@ -70,15 +70,15 @@ {% for tracked_meal in meals_for_time %} {# 1. Create stable slugs #} {% set meal_time_slug = meal_time|slugify %} - {% set meal_name_safe = tracked_meal.meal.name|slugify %} + {% set display_meal_name = (tracked_meal.name or tracked_meal.meal.name) if (tracked_meal.name or tracked_meal.meal) else "Unnamed Meal" %} + {% set meal_name_safe = display_meal_name|slugify %} {# 2. Construct the core Unique Meal ID for non-ambiguous locating #} {% set unique_meal_id = meal_time_slug + '-' + meal_name_safe + '-' + loop.index|string %}
- {{ tracked_meal.meal.name - }} + {{ display_meal_name }}