14 Commits
0.4.1 ... 0.4.4

Author SHA1 Message Date
727e2f60c4 input
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-04-09 20:27:57 +02:00
a411f59e00 runden
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-04-09 20:22:59 +02:00
be531a7ccf runden
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-04-09 20:17:35 +02:00
6e94925fda changes
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-04-09 20:10:04 +02:00
814c5b17e3 old nutri
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-04-08 23:09:45 +02:00
e66e54c424 sd
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-04-07 20:00:16 +02:00
0ad4c9e398 fee
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-04-07 19:53:41 +02:00
ce86d35b25 ter
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-04-07 19:49:12 +02:00
19552bf774
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-04-07 19:23:15 +02:00
b74f136f81 jetzt
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-04-07 19:16:12 +02:00
b52dbaec57 bug
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-04-07 19:10:34 +02:00
2769d0a33a bug
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-04-07 19:02:10 +02:00
5ac1a9f5a9 editable
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-04-07 18:52:37 +02:00
ab3378ec4d ls
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-04-04 16:52:05 +02:00
3 changed files with 63 additions and 16 deletions

View File

@ -6,7 +6,7 @@ import os
import json import json
import psycopg2 import psycopg2
import logging import logging
from math import ceil from math import ceil, floor
app = Flask(__name__) app = Flask(__name__)
app.config.update({ app.config.update({
@ -38,12 +38,12 @@ def calculate_nutrition(food, weight):
# Runden und Berechnen der Nährwerte basierend auf dem Gewicht # Runden und Berechnen der Nährwerte basierend auf dem Gewicht
kcal, ew, fett, kh, bst, ca = result kcal, ew, fett, kh, bst, ca = result
nutrition_values = [ nutrition_values = [
round(kcal * weight / 100), # kcal gerundet auf ganze Zahl schulrunden(kcal * weight / 100, ist_kcal=True), # kcal gerundet auf ganze Zahl
round(ew * weight / 100, 1), # EW gerundet auf eine Dezimalstelle schulrunden(ew * weight / 100, 1), # EW gerundet auf eine Dezimalstelle
round(fett * weight / 100, 1), # Fett gerundet auf eine Dezimalstelle schulrunden(fett * weight / 100, 1), # Fett gerundet auf eine Dezimalstelle
round(kh * weight / 100, 1), # KH gerundet auf eine Dezimalstelle schulrunden(kh * weight / 100, 1), # KH gerundet auf eine Dezimalstelle
round(bst * weight / 100, 1), # BST gerundet auf eine Dezimalstelle schulrunden(bst * weight / 100, 1), # BST gerundet auf eine Dezimalstelle
round(ca * weight / 100) # CA gerundet auf ganze Zahl schulrunden(ca * weight / 100) # CA gerundet auf ganze Zahl
] ]
return nutrition_values return nutrition_values
else: else:
@ -54,6 +54,23 @@ def calculate_nutrition(food, weight):
def schulrunden(zahl, stellen=0, ist_kcal=False):
# Wenn es sich um kcal handelt und der Wert vor der Rundung zwischen 0 und 1 liegt
if ist_kcal and 0 < zahl < 1:
return 1
faktor = 10 ** stellen
zahl = zahl * faktor
basis = floor(zahl)
if zahl - basis >= 0.5:
gerundet = basis + 1
else:
gerundet = basis
return gerundet / faktor
# Index-Route # Index-Route
@app.route('/') @app.route('/')
@oidc.require_login @oidc.require_login

View File

@ -9,7 +9,9 @@
<script> <script>
document.addEventListener('DOMContentLoaded', function() { document.addEventListener('DOMContentLoaded', function() {
cleanUpLocalStorage(); cleanUpLocalStorage();
restorePortions()
restoreTableFromLocalStorage(); restoreTableFromLocalStorage();
updateTotalNutrition(); updateTotalNutrition();
fetch('/get_products') fetch('/get_products')
.then(response => response.json()) .then(response => response.json())
@ -32,6 +34,22 @@
}); });
}); });
document.getElementById('portions').addEventListener('input', function() {
const portions = this.value;
localStorage.setItem('savedPortions', portions); // Speichern der Portionen im localStorage
recalculateTableBasedOnPortions(); // Bestehende Funktion, um die Tabelle zu aktualisieren
});
function restorePortions() {
const savedPortions = localStorage.getItem('savedPortions');
if (savedPortions) {
document.getElementById('portions').value = savedPortions;
recalculateTableBasedOnPortions(); // Falls notwendig, um die Tabelle direkt zu aktualisieren
}
}
function recalculateTableBasedOnPortions() { function recalculateTableBasedOnPortions() {
const portions = parseInt(document.getElementById('portions').value, 10) || 1; const portions = parseInt(document.getElementById('portions').value, 10) || 1;
let entries = JSON.parse(localStorage.getItem('nutritionEntries')) || []; let entries = JSON.parse(localStorage.getItem('nutritionEntries')) || [];
@ -159,6 +177,17 @@ function updateRowWithNewData(row, weight, nutritionData) {
} }
function schulrunden(zahl) {
// Multipliziere die Zahl mit 10, um die relevante Dezimalstelle vor das Komma zu bekommen
zahl = zahl * 10;
// Wende Math.ceil an, um auf die nächste ganze Zahl aufzurunden,
// aber nur, wenn der Dezimalteil >= 0.5 ist. Andernfalls verwende Math.floor.
zahl = (zahl - Math.floor(zahl) >= 0.5) ? Math.ceil(zahl) : Math.floor(zahl);
// Teile durch 10, um die ursprüngliche Skalierung wiederherzustellen,
// aber mit der erforderlichen Rundung
return zahl / 10;
}
function addProduct() { function addProduct() {
const foodInput = document.getElementById('my_combobox'); const foodInput = document.getElementById('my_combobox');
@ -169,7 +198,7 @@ function updateRowWithNewData(row, weight, nutritionData) {
const portions = portionsInput.value ? parseInt(portionsInput.value, 10) : 1; const portions = portionsInput.value ? parseInt(portionsInput.value, 10) : 1;
// Teilen des Gewichts durch die Anzahl der Portionen und Aufrunden // Teilen des Gewichts durch die Anzahl der Portionen und Aufrunden
weight = Math.ceil(weight / portions); weight = schulrunden(weight / portions);
fetch(`/add_lm?food=${encodeURIComponent(food)}&weight=${encodeURIComponent(weight)}`) fetch(`/add_lm?food=${encodeURIComponent(food)}&weight=${encodeURIComponent(weight)}`)
@ -252,7 +281,8 @@ function updateTotalNutrition() {
<datalist id="products"> <datalist id="products">
<!-- Produkte werden hier dynamisch eingefügt --> <!-- Produkte werden hier dynamisch eingefügt -->
</datalist> </datalist>
<input type="number" id="weight" name="weight" placeholder="Gramm" oninput="updateButtonState()"> <input type="number" id="weight" name="weight" placeholder="Gramm" step="0.1" min="0" oninput="updateButtonState()">
<button type="submit" id="submit-button" disabled>Hinzufügen</button> <button type="submit" id="submit-button" disabled>Hinzufügen</button>
</div> </div>
</form> </form>

View File

@ -137,13 +137,13 @@
tableBody.innerHTML = ''; tableBody.innerHTML = '';
data.forEach(entry => { data.forEach(entry => {
const row = tableBody.insertRow(); const row = tableBody.insertRow();
row.insertCell(0).innerText = entry.food; row.insertCell(0).innerHTML = entry.food;
row.insertCell(1).innerText = entry.kcal; row.insertCell(1).innerHTML = entry.kcal;
row.insertCell(2).innerText = entry.ew; row.insertCell(2).innerHTML = entry.ew;
row.insertCell(3).innerText = entry.fett; row.insertCell(3).innerHTML = entry.fett;
row.insertCell(4).innerText = entry.kh; row.insertCell(4).innerHTML = entry.kh;
row.insertCell(5).innerText = entry.bst; row.insertCell(5).innerHTML = entry.bst;
row.insertCell(6).innerText = entry.ca; row.insertCell(6).innerHTML = entry.ca;
// ... Fügen Sie weitere Zellen für die anderen Werte hinzu ... // ... Fügen Sie weitere Zellen für die anderen Werte hinzu ...
}); });