diff --git a/src/Run.py b/src/Run.py index ca9255c..4231f7f 100644 --- a/src/Run.py +++ b/src/Run.py @@ -6,6 +6,7 @@ import os import json import psycopg2 import logging +from math import ceil app = Flask(__name__) app.config.update({ @@ -23,28 +24,35 @@ app.logger.handlers = logging.getLogger('gunicorn.error').handlers datapw = 'dasrtwegdffgtewrt4335wferg' -def calculate_nutrition(food, weight): +def calculate_nutrition(food, weight, portions): try: - conn = psycopg2.connect() + conn = psycopg2.connect( + host=os.environ.get('PGHOST', 'localhost'), + database=os.environ.get('PGDATABASE', 'csafdb'), + user=os.environ.get('PGUSER', 'user'), + password=os.environ.get('PGPASSWORD', 'password') + ) with conn.cursor() as cursor: - # Abfrage der Nährwertdaten aus der Datenbank cursor.execute('SELECT kcal, EW, Fett, KH, BST, CA FROM nutrition_table WHERE name = %s', (food,)) - result = cursor.fetchone() if result: - # Runden und Berechnen der Nährwerte basierend auf dem Gewicht - kcal, ew, fett, kh, bst, ca = result - nutrition_values = [ - round(kcal * weight / 100), # kcal gerundet auf ganze Zahl - round(ew * weight / 100, 1), # EW gerundet auf eine Dezimalstelle - round(fett * weight / 100, 1), # Fett gerundet auf eine Dezimalstelle - round(kh * weight / 100, 1), # KH gerundet auf eine Dezimalstelle - round(bst * weight / 100, 1), # BST gerundet auf eine Dezimalstelle - round(ca * weight / 100) # CA gerundet auf ganze Zahl - ] - return nutrition_values + # Teilen des Gewichts durch die Anzahl der Portionen und Aufrunden + weight_per_portion = ceil(weight / portions) + + kcal, ew, fett, kh, bst, ca = [value * weight_per_portion / 100 for value in result] + return { + "weight_per_portion": weight_per_portion, + "nutrition_values": { + "kcal": round(kcal), + "ew": round(ew, 1), + "fett": round(fett, 1), + "kh": round(kh, 1), + "bst": round(bst, 1), + "ca": round(ca) + } + } else: return None finally: diff --git a/src/templates/index.html b/src/templates/index.html index 886d276..d1ffb2c 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -111,11 +111,34 @@ document.getElementById('submit-button').disabled = !(food && weight); } + function addProduct() { + const foodInput = document.getElementById('my_combobox'); + const weightInput = document.getElementById('weight'); + const portionsInput = document.getElementById('portions'); + const food = foodInput.value; + let weight = parseFloat(weightInput.value); + const portions = Math.max(parseInt(portionsInput.value, 10), 1); // Stellt sicher, dass mindestens 1 Portion angegeben wird + + // Teilen des Gewichts durch die Anzahl der Portionen und Aufrunden + weight = Math.ceil(weight / portions); + + fetch(`/add_lm?food=${encodeURIComponent(food)}&weight=${encodeURIComponent(weight)}`) + .then(response => response.json()) + .then(data => { + // Fügen Sie die verarbeitete Logik hier hinzu, wie zuvor + }) + .catch(error => console.error('Fehler:', error)); +} + function addProduct() { const foodInput = document.getElementById('my_combobox'); const weightInput = document.getElementById('weight'); const food = foodInput.value; - const weight = weightInput.value; + let weight = parseFloat(weightInput.value); + const portions = Math.max(parseInt(portionsInput.value, 10), 1); // Stellt sicher, dass mindestens 1 Portion angegeben wird + + // Teilen des Gewichts durch die Anzahl der Portionen und Aufrunden + weight = Math.ceil(weight / portions); fetch(`/add_lm?food=${encodeURIComponent(food)}&weight=${encodeURIComponent(weight)}`) @@ -195,6 +218,8 @@ function updateTotalNutrition() { + +