mirror of
https://github.com/sstent/foodplanner.git
synced 2026-01-25 19:21:37 +00:00
adding macro details to tracker, changing charts to stacked bar chart of macros
This commit is contained in:
@@ -44,7 +44,10 @@ async def get_charts_data(
|
||||
day_totals = calculate_day_nutrition_tracked(tracked_meals, db)
|
||||
chart_data.append({
|
||||
"date": tracked_day.date.isoformat(),
|
||||
"calories": round(day_totals.get("calories", 0), 2)
|
||||
"calories": round(day_totals.get("calories", 0), 2),
|
||||
"protein": round(day_totals.get("protein", 0), 2),
|
||||
"fat": round(day_totals.get("fat", 0), 2),
|
||||
"net_carbs": round(day_totals.get("net_carbs", 0), 2)
|
||||
})
|
||||
|
||||
return chart_data
|
||||
@@ -3,9 +3,10 @@ from fastapi.responses import HTMLResponse, RedirectResponse
|
||||
from sqlalchemy.orm import Session, joinedload
|
||||
from datetime import date, datetime, timedelta
|
||||
from typing import List, Optional, Union
|
||||
import logging
|
||||
|
||||
# Import from the database module
|
||||
from app.database import get_db, Meal, Template, TemplateMeal, TrackedDay, TrackedMeal, calculate_meal_nutrition, MealFood, TrackedMealFood, Food, calculate_day_nutrition_tracked
|
||||
from app.database import get_db, Meal, Template, TemplateMeal, TrackedDay, TrackedMeal, calculate_meal_nutrition, MealFood, TrackedMealFood, Food, calculate_day_nutrition_tracked, Plan
|
||||
from main import templates
|
||||
|
||||
router = APIRouter()
|
||||
@@ -38,6 +39,29 @@ async def tracker_page(request: Request, person: str = "Sarah", date: str = None
|
||||
db.add(tracked_day)
|
||||
db.commit()
|
||||
db.refresh(tracked_day)
|
||||
|
||||
# Check if we need to sync from Plan (if no tracked meals exist)
|
||||
existing_meals_count = db.query(TrackedMeal).filter(
|
||||
TrackedMeal.tracked_day_id == tracked_day.id
|
||||
).count()
|
||||
|
||||
if existing_meals_count == 0:
|
||||
# Look for planned meals
|
||||
planned_meals = db.query(Plan).filter(
|
||||
Plan.person == person,
|
||||
Plan.date == current_date
|
||||
).all()
|
||||
|
||||
if planned_meals:
|
||||
logging.info(f"Syncing {len(planned_meals)} planned meals to tracker for {person} on {current_date}")
|
||||
for plan in planned_meals:
|
||||
tracked_meal = TrackedMeal(
|
||||
tracked_day_id=tracked_day.id,
|
||||
meal_id=plan.meal_id,
|
||||
meal_time=plan.meal_time
|
||||
)
|
||||
db.add(tracked_meal)
|
||||
db.commit()
|
||||
|
||||
# Get tracked meals for this day with eager loading of meal foods
|
||||
tracked_meals = db.query(TrackedMeal).options(
|
||||
|
||||
Reference in New Issue
Block a user