5 Commits
0.2.3 ... 0.2.8

Author SHA1 Message Date
e4fe5b9831 token stuff, 3
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-31 13:09:26 +01:00
6a9b938ab9 token stuff, 2
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-31 13:03:04 +01:00
367e76f9f1 token stuff
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-31 12:47:35 +01:00
e59b184da5 style
All checks were successful
ci/woodpecker/tag/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-01-30 23:11:29 +01:00
c318cd21e0 delete button
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-30 22:56:22 +01:00
3 changed files with 92 additions and 2 deletions

View File

@ -5,6 +5,7 @@ from werkzeug.middleware.proxy_fix import ProxyFix
import os
import json
import psycopg2
import logging
app = Flask(__name__)
app.config.update({
@ -18,6 +19,7 @@ app.config.update({
})
oidc = OpenIDConnect(app)
logger = logging.getLogger(__name__)
@ -105,8 +107,10 @@ def convert_decimal(value):
@app.route('/add_nutrition', methods=['POST'])
@oidc.accept_token(True)
@oidc.accept_token(['openid'])
def add_nutrition():
logger.info("add_nutrition")
food = request.form.get('food')
kcal = convert_decimal(request.form.get('kcal'))
ew = convert_decimal(request.form.get('ew'))
@ -132,6 +136,7 @@ def add_nutrition():
@app.route('/nutrition')
@oidc.require_login
def nutrition():
logger.info("nutrition")
return render_template('nutrition.html')
@app.route('/get_token')

View File

@ -174,3 +174,43 @@ tr:hover:not(.selected) {
#database-nutrition-table tr.selected {
background-color: #f0e68c;
}
#password-prompt {
margin-top: 10px;
display: flex;
align-items: center;
justify-content: center;
}
#password-prompt input[type="password"] {
padding: 8px;
margin-right: 10px;
border: 1px solid #ddd;
border-radius: 4px;
}
#password-prompt button {
padding: 8px 15px;
margin-right: 10px;
border: none;
border-radius: 4px;
cursor: pointer;
color: white;
}
#password-prompt button[type="submit"] {
background-color: #008C50; /* Helles Grün */
}
#password-prompt button[type="submit"]:hover {
background-color: #007344; /* Dunkleres Grün */
}
#password-prompt button[type="button"] {
background-color: #640000; /* Helles Rot */
}
#password-prompt button[type="button"]:hover {
background-color: #490000; /* Dunkleres Rot */
}

View File

@ -61,8 +61,10 @@
table.addEventListener('click', function(e) {
if (e.target.tagName === 'TD') {
e.target.parentNode.classList.toggle('selected');
updateDeleteButtonState();
}
});
updateDeleteButtonState();
});
function deleteSelectedRows() {
@ -75,6 +77,36 @@
});
}
function showPasswordPrompt() {
document.getElementById('delete-row-button').style.display = 'none';
document.getElementById('password-prompt').style.display = 'block';
}
function hidePasswordPrompt() {
document.getElementById('delete-row-button').style.display = 'block';
document.getElementById('password-prompt').style.display = 'none';
}
function deleteRowsIfPasswordCorrect() {
const password = document.getElementById('password-input').value;
if (password === 'wowmuchsecurity') {
deleteSelectedRows(); // Funktion, die die ausgewählten Zeilen löscht
hidePasswordPrompt();
} else {
alert('Falsches Passwort!');
}
}
function updateDeleteButtonState() {
const selectedRows = document.querySelectorAll('#nutrition-table .selected').length;
const deleteButton = document.getElementById('delete-row-button');
deleteButton.disabled = selectedRows === 0;
if (selectedRows === 0) {
hidePasswordPrompt(); // Versteckt die Passwort-Eingabe, falls keine Zeile ausgewählt ist
}
}
function loadDatabaseEntries() {
fetch('/get_database_entries') // Pfad zur entsprechenden Flask-Route
.then(response => response.json())
@ -84,6 +116,12 @@
const row = tableBody.insertRow();
row.insertCell(0).innerHTML = entry.food;
row.insertCell(1).innerHTML = entry.kcal;
row.insertCell(2).innerHTML = entry.ew;
row.insertCell(3).innerHTML = entry.fett;
row.insertCell(4).innerHTML = entry.kh;
row.insertCell(5).innerHTML = entry.bst;
row.insertCell(6).innerHTML = entry.ca;
// ... Fügen Sie weitere Zellen für die anderen Werte hinzu ...
});
})
@ -147,7 +185,14 @@ document.addEventListener('DOMContentLoaded', loadDatabaseEntries);
</tbody>
</table>
</div>
<button id="delete-row-button" onclick="deleteSelectedRows()">Ausgewählte Zeilen löschen</button>
<button id="delete-row-button" onclick="showPasswordPrompt()">Zeilen löschen</button>
<div id="password-prompt" style="display: none;">
<input type="password" id="password-input" placeholder="Passwort">
<button onclick="deleteRowsIfPasswordCorrect()">OK</button>
<button onclick="hidePasswordPrompt()">Abbrechen</button>
</div>
</div>
</body>