diff --git a/templates/index.html b/templates/index.html index 5d9d04a..9f8934d 100644 --- a/templates/index.html +++ b/templates/index.html @@ -9,6 +9,9 @@ // JavaScript-Funktion, um die Produkte beim Laden der Seite zu holen document.addEventListener('DOMContentLoaded', function() { + cleanUpLocalStorage(); + restoreTableFromLocalStorage(); + updateTotalNutrition(); fetch('/get_products') .then(response => response.json()) .then(data => { @@ -30,27 +33,77 @@ }); }); + function restoreTableFromLocalStorage() { + let entries = JSON.parse(localStorage.getItem('nutritionEntries')) || []; + let oneHourAgo = new Date().getTime() - (60 * 60 * 1000); + + entries = entries.filter(entry => entry.timestamp > oneHourAgo); // Entfernen alter Einträge + entries.forEach(entry => { + addToTable(entry.food, entry.weight, entry.nutritionData); + }); + + localStorage.setItem('nutritionEntries', JSON.stringify(entries)); // Aktualisiere localStorage + } + + + function addToTable(food, weight, nutritionData) { + const table = document.getElementById('nutrition-table'); + const row = table.insertRow(); + + row.insertCell(0).innerHTML = food; + row.insertCell(1).innerHTML = weight; + row.insertCell(2).innerHTML = nutritionData.kcal; + row.insertCell(3).innerHTML = nutritionData.ew; + row.insertCell(4).innerHTML = nutritionData.fett; + row.insertCell(5).innerHTML = nutritionData.kh; + row.insertCell(6).innerHTML = nutritionData.bst; + row.insertCell(7).innerHTML = nutritionData.ca; + } + + + function cleanUpLocalStorage() { + let entries = JSON.parse(localStorage.getItem('nutritionEntries')) || []; + let oneHourAgo = new Date().getTime() - (60 * 60 * 1000); + entries = entries.filter(entry => entry.timestamp > oneHourAgo); + localStorage.setItem('nutritionEntries', JSON.stringify(entries)); + } + function updateRemoveButtonState() { - const selectedRows = document.querySelectorAll('#nutrition-table .selected').length; - document.getElementById('remove-button').disabled = selectedRows === 0; - } + const selectedRows = document.querySelectorAll('#nutrition-table .selected').length; + document.getElementById('remove-button').disabled = selectedRows === 0; + } function removeSelectedRow() { - const table = document.getElementById('nutrition-table'); - Array.from(table.rows).forEach(row => { - if (row.classList.contains('selected')) { - table.deleteRow(row.rowIndex); - } - }); - updateRemoveButtonState(); - updateTotalNutrition(); - } + const table = document.getElementById('nutrition-table'); + Array.from(table.rows).forEach(row => { + if (row.classList.contains('selected')) { + let rowData = { + food: row.cells[0].innerText, + weight: row.cells[1].innerText, + // Weitere Daten bei Bedarf + }; - function updateRemoveButtonState() { - const selectedRows = document.querySelectorAll('#nutrition-table .selected').length; - document.getElementById('remove-button').disabled = selectedRows === 0; - } + // Entfernen des Eintrags aus dem lokalen Speicher + removeEntryFromLocalStorage(rowData); + + table.deleteRow(row.rowIndex); + } + }); + updateRemoveButtonState(); + updateTotalNutrition(); + } + + function removeEntryFromLocalStorage(rowData) { + let entries = JSON.parse(localStorage.getItem('nutritionEntries')) || []; + entries = entries.filter(entry => entry.food !== rowData.food || entry.weight !== rowData.weight); + localStorage.setItem('nutritionEntries', JSON.stringify(entries)); + } + + function updateRemoveButtonState() { + const selectedRows = document.querySelectorAll('#nutrition-table .selected').length; + document.getElementById('remove-button').disabled = selectedRows === 0; + } // JavaScript-Funktionen function updateButtonState() { @@ -66,30 +119,36 @@ const weight = weightInput.value; - fetch(`/add_lm?food=${encodeURIComponent(food)}&weight=${encodeURIComponent(weight)}`) - .then(response => response.json()) - .then(data => { - const table = document.getElementById('nutrition-table'); - const row = table.insertRow(); - // Fügt die einzelnen Nährwerte zur neuen Zeile hinzu - row.insertCell(0).innerHTML = food; - row.insertCell(1).innerHTML = weight; - row.insertCell(2).innerHTML = data.kcal; - row.insertCell(3).innerHTML = data.ew; - row.insertCell(4).innerHTML = data.fett; - row.insertCell(5).innerHTML = data.kh; - row.insertCell(6).innerHTML = data.bst; - row.insertCell(7).innerHTML = data.ca; + fetch(`/add_lm?food=${encodeURIComponent(food)}&weight=${encodeURIComponent(weight)}`) + .then(response => response.json()) + .then(data => { + const table = document.getElementById('nutrition-table'); + const row = table.insertRow(); + // Fügt die einzelnen Nährwerte zur neuen Zeile hinzu + row.insertCell(0).innerHTML = food; + row.insertCell(1).innerHTML = weight; + row.insertCell(2).innerHTML = data.kcal; + row.insertCell(3).innerHTML = data.ew; + row.insertCell(4).innerHTML = data.fett; + row.insertCell(5).innerHTML = data.kh; + row.insertCell(6).innerHTML = data.bst; + row.insertCell(7).innerHTML = data.ca; - foodInput.value = ''; // Zurücksetzen des Lebensmittel-Eingabefeldes - weightInput.value = ''; // Zurücksetzen des Gewicht-Eingabefeldes - document.getElementById('submit-button').disabled = true; // Deaktivieren des Hinzufügen-Buttons + foodInput.value = ''; // Zurücksetzen des Lebensmittel-Eingabefeldes + weightInput.value = ''; // Zurücksetzen des Gewicht-Eingabefeldes + document.getElementById('submit-button').disabled = true; // Deaktivieren des Hinzufügen-Buttons - updateTotalNutrition(); - }) - .catch(error => console.error('Fehler:', error)); + updateTotalNutrition(); + saveToLocalStorage(food, weight, data); + }) + .catch(error => console.error('Fehler:', error)); + } -} + function saveToLocalStorage(food, weight, nutritionData) { + let entries = JSON.parse(localStorage.getItem('nutritionEntries')) || []; + entries.push({ food, weight, nutritionData, timestamp: new Date().getTime() }); + localStorage.setItem('nutritionEntries', JSON.stringify(entries)); + } function updateTotalNutrition() { let totalWeight = 0, totalKcal = 0, totalEw = 0, totalFett = 0, totalKh = 0, totalBst = 0, totalCa = 0;