{% extends "base.html" %} {% block content %}

{{ current_date.strftime('%A, %B %d, %Y') }}

{% if is_modified %} Custom {% else %} As Planned {% endif %}
{% if is_modified %} {% endif %}
{% set meal_times = ["Breakfast", "Lunch", "Dinner", "Snack 1", "Snack 2", "Beverage 1", "Beverage 2"] %} {% for meal_time in meal_times %}
{{ meal_time }}
{% set meals_for_time = [] %} {% for tracked_meal in tracked_meals %} {% if tracked_meal.meal_time == meal_time %} {% set _ = meals_for_time.append(tracked_meal) %} {% endif %} {% endfor %} {% if meals_for_time %} {% 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 %} {# 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 }}
{% set overrides = {} %} {% set all_override_ids = [] %} {% set deleted_food_ids = [] %} {% for tmf in tracked_meal.tracked_foods %} {% if not tmf.is_deleted %} {% set _ = overrides.update({tmf.food_id: tmf}) %} {% else %} {% set _ = deleted_food_ids.append(tmf.food_id) %} {% endif %} {% set _ = all_override_ids.append(tmf.food_id) %} {% endfor %} {% set meal_totals = {'carbs': 0, 'fiber': 0, 'fat': 0, 'protein': 0, 'calories': 0} %} {% set state = {'has_foods': False} %}
{# Display base meal foods, applying overrides #} {% for meal_food in tracked_meal.meal.meal_foods %} {% if meal_food.food_id not in deleted_food_ids and meal_food.food_id not in overrides.keys() %} {% set _ = state.update({'has_foods': True}) %} {% set food = meal_food.food %} {% set qty = meal_food.quantity %} {% set mult = qty / food.serving_size if food.serving_size > 0 else 0 %} {% set row_carbs = (food.carbs or 0) * mult %} {% set row_fiber = (food.fiber or 0) * mult %} {% set row_fat = (food.fat or 0) * mult %} {% set row_protein = (food.protein or 0) * mult %} {% set row_cals = (food.calories or 0) * mult %} {# Accumulate Totals #} {% set _ = meal_totals.update({'carbs': meal_totals.carbs + row_carbs}) %} {% set _ = meal_totals.update({'fiber': meal_totals.fiber + row_fiber}) %} {% set _ = meal_totals.update({'fat': meal_totals.fat + row_fat}) %} {% set _ = meal_totals.update({'protein': meal_totals.protein + row_protein}) %} {% set _ = meal_totals.update({'calories': meal_totals.calories + row_cals}) %} {% set food_name_safe = food.name|slugify %} {% endif %} {% endfor %} {# Display overridden/new foods #} {% for food_id, tmf in overrides.items() %} {% set _ = state.update({'has_foods': True}) %} {% set food = tmf.food %} {% set qty = tmf.quantity %} {# Overrides are always in grams #} {% set mult = qty / food.serving_size if food.serving_size > 0 else 0 %} {% set row_carbs = (food.carbs or 0) * mult %} {% set row_fiber = (food.fiber or 0) * mult %} {% set row_fat = (food.fat or 0) * mult %} {% set row_protein = (food.protein or 0) * mult %} {% set row_cals = (food.calories or 0) * mult %} {# Accumulate Totals #} {% set _ = meal_totals.update({'carbs': meal_totals.carbs + row_carbs}) %} {% set _ = meal_totals.update({'fiber': meal_totals.fiber + row_fiber}) %} {% set _ = meal_totals.update({'fat': meal_totals.fat + row_fat}) %} {% set _ = meal_totals.update({'protein': meal_totals.protein + row_protein}) %} {% set _ = meal_totals.update({'calories': meal_totals.calories + row_cals}) %} {% set food_name_safe = food.name|slugify %} {% endfor %} {% if not state.has_foods %} {% else %} {# Summary Row #} {% endif %}
Food Carbs Fiber Net Carbs Fat Protein Cals
{{ food.name }} ({{ qty|round(1) }} {{ food.serving_unit }}) {{ "%.1f"|format(row_carbs) }}g {{ "%.1f"|format(row_fiber) }}g {{ "%.1f"|format(row_carbs - row_fiber) }}g {{ "%.1f"|format(row_fat) }}g {{ "%.1f"|format(row_protein) }}g {{ "%.0f"|format(row_cals) }}
{{ food.name }} ({{ qty|round(1) }} g) {{ "%.1f"|format(row_carbs) }}g {{ "%.1f"|format(row_fiber) }}g {{ "%.1f"|format(row_carbs - row_fiber) }}g {{ "%.1f"|format(row_fat) }}g {{ "%.1f"|format(row_protein) }}g {{ "%.0f"|format(row_cals) }}
No foods in this meal
Total {{ "%.1f"|format(meal_totals.carbs) }}g {{ "%.1f"|format(meal_totals.fiber) }}g {{ "%.1f"|format(meal_totals.carbs - meal_totals.fiber) }}g {{ "%.1f"|format(meal_totals.fat) }}g {{ "%.1f"|format(meal_totals.protein) }}g {{ "%.0f"|format(meal_totals.calories) }}
{% endfor %} {% else %}

No meals tracked

{% endif %}
{% endfor %}
Daily Totals
{{ "%.0f"|format(day_totals.calories) }}
Calories
{{ "%.1f"|format(day_totals.net_carbs) }}g
Net Carbs
{{ "%.1f"|format(day_totals.carbs) }}g
Carbs
{{ day_totals.carbs_pct }}%
{{ "%.1f"|format(day_totals.fat) }}g
Fat
{{ day_totals.fat_pct }}%
{{ "%.1f"|format(day_totals.protein) }}g
Protein
{{ day_totals.protein_pct }}%
{{ "%.0f"|format(day_totals.sugar) }}g
Sugar
{{ "%.1f"|format(day_totals.fiber) }}g
Fiber
{{ "%.0f"|format(day_totals.sodium) }}mg
Sodium
Macro Balance
Carbs
Fat
Protein
{{ day_totals.carbs_pct }}%
{{ day_totals.fat_pct }}%
{{ day_totals.protein_pct }}%
{% include 'modals/add_meal.html' %} {% include 'modals/save_template.html' %} {% include 'modals/apply_template.html' %} {% include 'modals/edit_tracked_meal.html' %} {% include 'modals/add_single_food.html' %} {% endblock %}