11 Commits
0.1.3 ... 0.2.0

Author SHA1 Message Date
f39c902ace fail
All checks were successful
ci/woodpecker/tag/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-01-30 19:15:48 +01:00
ff26644f06 fail
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-30 18:51:52 +01:00
5f63092a67 f
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-30 18:51:02 +01:00
1fc9dd70df Merge branch 'main' of gitea.hottis.de:moerp/Elo-rezept-rechner
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-30 18:48:08 +01:00
794b50e041 token 2024-01-30 18:47:57 +01:00
5583bc2b60 color 2024-01-30 18:44:45 +01:00
5f34449601 token
All checks were successful
ci/woodpecker/tag/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-01-30 18:26:27 +01:00
8bc3857482 Merge branch 'main' of gitea.hottis.de:moerp/elo-rezept-rechner
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-30 18:19:14 +01:00
5c7fe128c8 token 2024-01-30 18:19:05 +01:00
3a17338358 Merge branch 'main' of gitea.hottis.de:moerp/Elo-rezept-rechner
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-30 18:08:15 +01:00
4761910092 changes 2024-01-30 18:07:16 +01:00
4 changed files with 77 additions and 47 deletions

View File

@ -20,6 +20,7 @@ app.config.update({
oidc = OpenIDConnect(app) oidc = OpenIDConnect(app)
def calculate_nutrition(food, weight): def calculate_nutrition(food, weight):
try: try:
conn = psycopg2.connect() conn = psycopg2.connect()
@ -66,7 +67,6 @@ def get_products():
with conn.cursor() as cursor: with conn.cursor() as cursor:
cursor.execute('SELECT name FROM nutrition_table') cursor.execute('SELECT name FROM nutrition_table')
products = cursor.fetchall() products = cursor.fetchall()
print("ter")
return {'products': [product[0] for product in products]} return {'products': [product[0] for product in products]}
finally: finally:
if conn: if conn:
@ -97,19 +97,24 @@ def add_lm():
return "Lebensmittel nicht gefunden.", 404 return "Lebensmittel nicht gefunden.", 404
def convert_decimal(value):
try:
return float(value.replace(',', '.'))
except (ValueError, TypeError):
return 0.0 # Rückgabe eines Standardwertes im Fehlerfall
@app.route('/add_nutrition', methods=['POST']) @app.route('/add_nutrition', methods=['POST'])
@oidc.require_login @oidc.accept_token(True)
def add_nutrition(): def add_nutrition():
food = request.form.get('food') food = request.form.get('food')
kcal = float(request.form.get('kcal')) kcal = convert_decimal(request.form.get('kcal'))
ew = float(request.form.get('ew')) ew = convert_decimal(request.form.get('ew'))
fett = float(request.form.get('fett')) fett = convert_decimal(request.form.get('fett'))
kh = float(request.form.get('kh')) kh = convert_decimal(request.form.get('kh'))
bst = float(request.form.get('bst')) bst = convert_decimal(request.form.get('bst'))
ca = float(request.form.get('ca')) ca = convert_decimal(request.form.get('ca'))
print("test")
# Verbindung zur Datenbank herstellen und Daten einfügen # Verbindung zur Datenbank herstellen und Daten einfügen
try: try:
conn = psycopg2.connect() conn = psycopg2.connect()
@ -129,6 +134,12 @@ def add_nutrition():
def nutrition(): def nutrition():
return render_template('nutrition.html') return render_template('nutrition.html')
@app.route('/get_token')
@oidc.require_login
def get_token():
return jsonify(token=oidc.get_access_token())
app = ProxyFix(app, x_for=1, x_host=1) app = ProxyFix(app, x_for=1, x_host=1)

View File

@ -34,7 +34,7 @@ button:not(:disabled):hover {
} }
button#remove-button { button#remove-button {
background-color: #f443366f; /* Helles Rot */ background-color: #640000; /* Helles Rot */
} }
button#remove-button:disabled { button#remove-button:disabled {
@ -43,7 +43,7 @@ button#remove-button:disabled {
} }
button#remove-button:not(:disabled):hover { button#remove-button:not(:disabled):hover {
background-color: #d32f2f3d; /* Dunkleres Rot */ background-color: #490000; /* Dunkleres Rot */
} }
@ -72,7 +72,7 @@ tr:nth-child(even) {
} }
.selected, tr.selected { .selected, tr.selected {
background-color: #ffdd99; /* Hervorhebung der Auswahl */ background-color: #e5b5b5; /* Hervorhebung der Auswahl */
} }
tr:hover:not(.selected) { tr:hover:not(.selected) {

View File

@ -154,12 +154,12 @@ function updateTotalNutrition() {
// Durchlaufen aller Zeilen in der Haupttabelle und Addition der Werte // Durchlaufen aller Zeilen in der Haupttabelle und Addition der Werte
Array.from(document.getElementById('nutrition-table').rows).slice(1).forEach(row => { Array.from(document.getElementById('nutrition-table').rows).slice(1).forEach(row => {
totalKcal += parseFloat(row.cells[2].innerText); totalKcal += parseFloat(row.cells[4].innerText);
totalEw += parseFloat(row.cells[3].innerText); totalEw += parseFloat(row.cells[4].innerText);
totalFett += parseFloat(row.cells[4].innerText); totalFett += parseFloat(row.cells[5].innerText);
totalKh += parseFloat(row.cells[5].innerText); totalKh += parseFloat(row.cells[6].innerText);
totalBst += parseFloat(row.cells[6].innerText); totalBst += parseFloat(row.cells[7].innerText);
totalCa += parseFloat(row.cells[7].innerText); totalCa += parseFloat(row.cells[8].innerText);
}); });
// Rundung und Aktualisierung der Gesamtwerte // Rundung und Aktualisierung der Gesamtwerte
@ -175,7 +175,7 @@ function updateTotalNutrition() {
</head> </head>
<body> <body>
<nav id="navbar"> <nav id="navbar">
<h1>Elos Rezept Rechner</h1> <h1>Elo's Rezept Rechner</h1>
<ul> <ul>
<li><a href="/" class="active">Rechner</a></li> <li><a href="/" class="active">Rechner</a></li>
<li><a href="/nutrition">Neue Lebensmittel</a></li> <li><a href="/nutrition">Neue Lebensmittel</a></li>
@ -210,6 +210,8 @@ function updateTotalNutrition() {
<button id="remove-button" onclick="removeSelectedRow()" disabled>Entfernen</button> <button id="remove-button" onclick="removeSelectedRow()" disabled>Entfernen</button>
<table id="total-nutrition-table"> <table id="total-nutrition-table">
<tr> <tr>
<th>Lebensmittel</th>
<th>Gewicht (g)</th>
<th>kcal</th> <th>kcal</th>
<th>EW</th> <th>EW</th>
<th>Fett</th> <th>Fett</th>
@ -218,6 +220,8 @@ function updateTotalNutrition() {
<th>CA</th> <th>CA</th>
</tr> </tr>
<tr> <tr>
<td>Gesamtwerte</td>
<td>-</td>
<td id="total-kcal">0</td> <td id="total-kcal">0</td>
<td id="total-ew">0</td> <td id="total-ew">0</td>
<td id="total-fett">0</td> <td id="total-fett">0</td>

View File

@ -13,38 +13,53 @@
document.getElementById('submit-button').disabled = !allFilled; document.getElementById('submit-button').disabled = !allFilled;
} }
function getBearerToken(callback) {
fetch('/get_token')
.then(response => response.json())
.then(data => {
callback(data.token);
})
.catch(error => {
console.error('Fehler beim Abrufen des Tokens:', error);
});
}
function addNutritionEntry() { function addNutritionEntry() {
getBearerToken(token => {
const form = document.getElementById('nutrition-form');
const formData = new FormData(form);
const form = document.getElementById('nutrition-form'); fetch('/add_nutrition', {
const formData = new FormData(form); method: 'POST',
headers: {
'Authorization': 'Bearer ' + token
},
body: formData
}).then(response => {
// Behandlung der Serverantwort
// Beispielsweise das Formular zurücksetzen
form.reset();
updateSubmitButtonState();
}).catch(error => {
console.error('Fehler:', error);
});
// ... Code, um den Eintrag zur Datenbank hinzuzufügen
fetch('/add_nutrition', { // Nach dem Hinzufügen, setze alle Eingabefelder zurück
method: 'POST', document.querySelectorAll('#nutrition-form input').forEach(input => {
body: formData input.value = ''; // Setzt den Wert jedes Eingabefeldes zurück
}).then(response => { });
// Behandlung der Serverantwort
// Beispielsweise das Formular zurücksetzen // Deaktiviere den "Hinzufügen"-Button wieder
form.reset(); document.getElementById('submit-button').disabled = true;
updateSubmitButtonState();
}).catch(error => {
console.error('Fehler:', error);
}); });
// ... Code, um den Eintrag zur Datenbank hinzuzufügen
// Nach dem Hinzufügen, setze alle Eingabefelder zurück
document.querySelectorAll('#nutrition-form input').forEach(input => {
input.value = ''; // Setzt den Wert jedes Eingabefeldes zurück
});
// Deaktiviere den "Hinzufügen"-Button wieder
document.getElementById('submit-button').disabled = true;
} }
</script> </script>
</head> </head>
<body> <body>
<nav id="navbar"> <nav id="navbar">
<h1>Elos Rezept Rechner</h1> <h1>Elo's Rezept Rechner</h1>
<ul> <ul>
<li><a href="/">Rechner</a></li> <li><a href="/">Rechner</a></li>
<li><a href="/nutrition" class="active">Neue Lebensmittel</a></li> <li><a href="/nutrition" class="active">Neue Lebensmittel</a></li>
@ -65,12 +80,12 @@
</tr> </tr>
<tr> <tr>
<td><input type="text" name="food" placeholder="Lebensmittel" oninput="updateSubmitButtonState()"></td> <td><input type="text" name="food" placeholder="Lebensmittel" oninput="updateSubmitButtonState()"></td>
<td><input <input type="text" name="kcal" pattern="\d+(\.\d{1,2})?" placeholder="g" oninput="updateSubmitButtonState()"></td> <td><input <input type="text" name="kcal" pattern="\d+([.,]\d{1,2})?" placeholder="g" oninput="updateSubmitButtonState()"></td>
<td><input <input type="text" name="ew" pattern="\d+(\.\d{1,2})?" placeholder="g" oninput="updateSubmitButtonState()"></td> <td><input <input type="text" name="ew" pattern="\d+([.,]\d{1,2})?" placeholder="g" oninput="updateSubmitButtonState()"></td>
<td><input <input type="text" name="fett" pattern="\d+(\.\d{1,2})?" placeholder="g" oninput="updateSubmitButtonState()"></td> <td><input <input type="text" name="fett" pattern="\d+([.,]\d{1,2})?" placeholder="g" oninput="updateSubmitButtonState()"></td>
<td><input <input type="text" name="kh" pattern="\d+(\.\d{1,2})?" placeholder="g" oninput="updateSubmitButtonState()"></td> <td><input <input type="text" name="kh" pattern="\d+([.,]\d{1,2})?" placeholder="g" oninput="updateSubmitButtonState()"></td>
<td><input <input type="text" name="bst" pattern="\d+(\.\d{1,2})?" placeholder="g" oninput="updateSubmitButtonState()"></td> <td><input <input type="text" name="bst" pattern="\d+([.,]\d{1,2})?" placeholder="g" oninput="updateSubmitButtonState()"></td>
<td><input <input type="text" name="ca" pattern="\d+(\.\d{1,2})?" placeholder="mg" oninput="updateSubmitButtonState()"></td> <td><input <input type="text" name="ca" pattern="\d+([.,]\d{1,2})?" placeholder="mg" oninput="updateSubmitButtonState()"></td>
</tr> </tr>
</table> </table>
<button type="submit" id="submit-button" disabled>Hinzufügen</button> <button type="submit" id="submit-button" disabled>Hinzufügen</button>