diff --git a/__pycache__/main.cpython-313.pyc b/__pycache__/main.cpython-313.pyc index 413ad88..8b77780 100644 Binary files a/__pycache__/main.cpython-313.pyc and b/__pycache__/main.cpython-313.pyc differ diff --git a/main.py b/main.py index 31beb0e..46b3606 100644 --- a/main.py +++ b/main.py @@ -192,6 +192,11 @@ def calculate_day_nutrition(plans, db: Session): async def root(request: Request): return templates.TemplateResponse("index.html", {"request": request}) +# Imports tab +@app.get("/imports", response_class=HTMLResponse) +async def imports_page(request: Request): + return templates.TemplateResponse("imports.html", {"request": request}) + # Foods tab @app.get("/foods", response_class=HTMLResponse) async def foods_page(request: Request, db: Session = Depends(get_db)): @@ -601,37 +606,13 @@ async def remove_from_plan(plan_id: int, db: Session = Depends(get_db)): db.rollback() return {"status": "error", "message": str(e)} -# Detailed planner tab @app.get("/detailed", response_class=HTMLResponse) -async def detailed_page(request: Request, person: str = "Person A", - plan_day: str = None, db: Session = Depends(get_db)): - - if not plan_day: - plan_day = "Day1" - - # Get all plans for the selected day - plans = db.query(Plan).filter(Plan.person == person, Plan.date == plan_day).all() - - # Group by meal type and calculate nutrition - meal_details = [] - for plan in plans: - meal_nutrition = calculate_meal_nutrition(plan.meal, db) - meal_details.append({ - 'plan': plan, - 'nutrition': meal_nutrition, - 'foods': plan.meal.meal_foods - }) - - # Calculate day totals - day_totals = calculate_day_nutrition(plans, db) - - # Create list of all days for the selector - days = [f"Day{i}" for i in range(1, 15)] - - return templates.TemplateResponse("detailed.html", { - "request": request, "person": person, "selected_day": plan_day, - "meal_details": meal_details, "day_totals": day_totals, "days": days - }) +async def detailed(request: Request): + return templates.TemplateResponse("detailed.html", {"request": request, "title": "Detailed"}) + +@app.get("/templates", response_class=HTMLResponse) +async def templates_page(request: Request): + return templates.TemplateResponse("plans.html", {"request": request, "title": "Templates"}) if __name__ == "__main__": import uvicorn diff --git a/templates/base.html b/templates/base.html index 529cead..9404d24 100644 --- a/templates/base.html +++ b/templates/base.html @@ -67,15 +67,21 @@ Meals + - + diff --git a/templates/foods.html b/templates/foods.html index c3bb3a1..69eb305 100644 --- a/templates/foods.html +++ b/templates/foods.html @@ -1,31 +1,11 @@ {% extends "base.html" %} {% block content %}
-
-

Bulk Import

-
-
- - -
- -
- - -
- - - -
+

Foods Database

@@ -59,7 +39,7 @@ @@ -229,21 +209,10 @@ {% endblock %} \ No newline at end of file diff --git a/templates/meals.html b/templates/meals.html index 2f6b44e..2e647e2 100644 --- a/templates/meals.html +++ b/templates/meals.html @@ -1,22 +1,11 @@ {% extends "base.html" %} {% block content %}
-
-

Bulk Import Meals

-
-
- - -
- - - - -
- -
+

Meals

{{ "%.2f"|format(food.calcium) }}mg
@@ -336,46 +325,5 @@ async function deleteSelectedMeals() { } } -// Meal CSV upload handling -document.querySelector('form[action="/meals/upload"]').addEventListener('submit', async (e) => { - e.preventDefault(); - const form = e.target; - const submitBtn = form.querySelector('button[type="submit"]'); - const resultsDiv = document.createElement('div'); - resultsDiv.className = 'alert alert-info mt-3'; - form.parentNode.insertBefore(resultsDiv, form.nextSibling); - - submitBtn.disabled = true; - submitBtn.innerHTML = ' Uploading...'; - - try { - const formData = new FormData(form); - const response = await fetch('/meals/upload', { - method: 'POST', - body: formData - }); - - const results = await response.json(); - - if (results.errors?.length > 0) { - resultsDiv.className = 'alert alert-danger'; - resultsDiv.innerHTML = `Errors (${results.errors.length}):
` + - results.errors.join('
'); - } else { - resultsDiv.className = 'alert alert-success'; - resultsDiv.innerHTML = `Successfully created ${results.created} meals, updated ${results.updated}`; - } - - if (results.created || results.updated) { - setTimeout(() => window.location.reload(), 2000); - } - } catch (error) { - resultsDiv.className = 'alert alert-danger'; - resultsDiv.textContent = `Upload failed: ${error.message}`; - } finally { - submitBtn.disabled = false; - submitBtn.textContent = 'Upload CSV'; - } -}); {% endblock %} \ No newline at end of file