Geburtstag in Riegenliste und Stand der Telefonnummer

This commit is contained in:
klaas 2025-03-06 19:42:37 +01:00
parent 0ac7e87d3e
commit dd1c4e4c63
3 changed files with 43 additions and 14 deletions

11
app.js
View File

@ -82,7 +82,11 @@ const transporter = nodemailer.createTransport({
// Datenbankverbindung
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
connectionString: process.env.DATABASE_URL + "tkd",
});
const poolNew = new Pool({
connectionString: process.env.DATABASE_URL + "tkd_neu",
});
// Altersberechnung
@ -872,6 +876,7 @@ ORDER BY r.riegennummer, t.geburtsdatum ASC;
helfer: row.helfer,
probe: row.probe,
anwesenheit: row.anwesenheit,
birthday: row.geburtsdatum,
});
});
@ -981,8 +986,8 @@ app.post("/update-mitglied", requireAdmin, async (req, res) => {
try {
if (type == "tel") {
await pool.query(
"INSERT INTO telefonnummern (fid_teilnehmer, name, verbindung, nummer, stand) VALUES ($1, $2, $3, $4, $5)",
[id, name, verbindung, nummer, moment().toDate()]
"INSERT INTO telefonnummern (fid_teilnehmer, name, verbindung, nummer) VALUES ($1, $2, $3, $4)",
[id, name, verbindung, nummer]
);
} else if (type == "tel-delete") {
await pool.query("DELETE FROM telefonnummern WHERE id = $1", [telid]);

View File

@ -19,7 +19,7 @@
<p>
<% numbers.forEach(number => { %>
<% if (number.verbindung != 4) { %>
<strong><%= number.bezeichnung %> - <%= number.name %>: </strong> <%= number.nummer %> <% if (number.stand) { %>(stand: <%= ("00" + birthday.getDate()).slice(-2) %>.<%= ("00" + (birthday.getMonth() + 1)).slice(-2) %>.<%= number.stand.getFullYear() %>) <% } %></br>
<strong><%= number.bezeichnung %> - <%= number.name %>: </strong> <%= number.nummer %> <% if (number.stand) { %>(stand: <%= ("00" + number.stand.getDate()).slice(-2) %>.<%= ("00" + (number.stand.getMonth() + 1)).slice(-2) %>.<%= number.stand.getFullYear() %>) <% } %></br>
<% }}) %>
</p>

View File

@ -39,6 +39,9 @@
<th onclick="sortTable(0, 'table-<%= riegennummer %>')">Vorname</th>
<th onclick="sortTable(1, 'table-<%= riegennummer %>')">Nachname</th>
<th onclick="sortTable(2, 'table-<%= riegennummer %>')">Alter</th>
<th onclick="sortTable(3, 'table-<%= riegennummer %>')">
Geburtstag
</th>
</tr>
</thead>
<tbody>
@ -75,6 +78,11 @@
<% } %>
</td>
<td><%= teilnehmer.age %> Jahre</td>
<td>
<%= ('00' + teilnehmer.birthday.getDate()).slice(-2) %>.<%= ('00' +
(teilnehmer.birthday.getMonth() + 1)).slice(-2) %>.<%=
teilnehmer.birthday.getFullYear() %>
</td>
</tr>
<% }) %>
</tbody>
@ -84,23 +92,39 @@
</div>
<script>
function sortTable(spaltenIndex, tableId) {
const table = document.getElementById(tableId);
function sortTable(spaltenIndex, tableID) {
const table = document.getElementById(tableID);
let rows = Array.from(table.rows).slice(1); // Überschrift auslassen
let isAscending = table.getAttribute("data-sort") === "asc";
rows.sort((rowA, rowB) => {
let cellA = rowA.cells[spaltenIndex].innerText.toLowerCase();
let cellB = rowB.cells[spaltenIndex].innerText.toLowerCase();
let cellA = rowA.cells[spaltenIndex].innerText.trim();
let cellB = rowB.cells[spaltenIndex].innerText.trim();
if (!isNaN(cellA) && !isNaN(cellB)) {
// Wenn die Zellen Zahlen sind, sortiere nach Zahlengröße
cellA = parseFloat(cellA);
cellB = parseFloat(cellB);
// Prüfen, ob das Format dem Geburtsdatum (TT-MM.JJJJ) entspricht
const datePattern = /^(\d{2}).(\d{2})\.(\d{4})$/;
let dateA = cellA.match(datePattern);
let dateB = cellB.match(datePattern);
if (dateA && dateB) {
// Umwandlung in das Format JJJJ-MM-TT für die korrekte Sortierung
let dateObjA = new Date(`${dateA[3]}-${dateA[2]}-${dateA[1]}`);
let dateObjB = new Date(`${dateB[3]}-${dateB[2]}-${dateB[1]}`);
return isAscending ? dateObjA - dateObjB : dateObjB - dateObjA;
}
if (cellA < cellB) return isAscending ? 1 : -1;
if (cellA > cellB) return isAscending ? -1 : 1;
// Überprüfen, ob beide Werte Zahlen sind
let numA = parseFloat(cellA);
let numB = parseFloat(cellB);
if (!isNaN(numA) && !isNaN(numB)) {
return isAscending ? numA - numB : numB - numA;
}
// Alphabetische Sortierung als Fallback
if (cellA < cellB) return isAscending ? -1 : 1;
if (cellA > cellB) return isAscending ? 1 : -1;
return 0;
});