change alter zu geburtsdatum

This commit is contained in:
Carsten Graf
2025-06-10 10:03:53 +02:00
parent 9305ef6d5f
commit 7856bb229b
2 changed files with 127 additions and 76 deletions

View File

@@ -47,8 +47,11 @@
</div>
<div class="form-group">
<label for="alter">Alter <span class="required">*</span></label>
<input type="number" id="alter" name="alter" placeholder="Alter eingeben" min="1" max="120" required>
<label for="geburtsdatum">Geburtsdatum <span class="required">*</span></label>
<div class="date-input-group">
<input type="date" id="geburtsdatum" name="geburtsdatum" required max="">
<div id="ageDisplay" class="age-display" style="display: none;"></div>
</div>
</div>
<div class="btn-container">
@@ -60,11 +63,55 @@
</div>
<script>
// Globale Variablen
let rfidData = [];
let isLoading = false;
// Maximales Datum auf heute setzen
document.addEventListener('DOMContentLoaded', function() {
const today = new Date().toISOString().split('T')[0];
document.getElementById('geburtsdatum').setAttribute('max', today);
});
// Alter berechnen und anzeigen
function calculateAge(birthDate) {
const today = new Date();
const birth = new Date(birthDate);
let age = today.getFullYear() - birth.getFullYear();
const monthDiff = today.getMonth() - birth.getMonth();
if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birth.getDate())) {
age--;
}
return age;
}
// Geburtsdatum Change Event
document.getElementById('geburtsdatum').addEventListener('change', function(e) {
const birthDate = e.target.value;
const ageDisplay = document.getElementById('ageDisplay');
if (birthDate) {
const age = calculateAge(birthDate);
if (age >= 0 && age <= 150) {
ageDisplay.textContent = `${age} Jahre`;
ageDisplay.style.display = 'block';
} else {
ageDisplay.style.display = 'none';
if (age < 0) {
showErrorMessage('Das Geburtsdatum kann nicht in der Zukunft liegen!');
e.target.value = '';
} else {
showErrorMessage('Bitte überprüfen Sie das Geburtsdatum!');
e.target.value = '';
}
}
} else {
ageDisplay.style.display = 'none';
}
});
// Form Submit Handler
document.getElementById('rfidForm').addEventListener('submit', async function(e) {
e.preventDefault();
@@ -75,14 +122,21 @@
const uid = document.getElementById('uid').value.trim();
const vorname = document.getElementById('vorname').value.trim();
const nachname = document.getElementById('nachname').value.trim();
const alter = parseInt(document.getElementById('alter').value);
const geburtsdatum = document.getElementById('geburtsdatum').value;
// Validierung
if (!uid || !vorname || !nachname || !alter) {
if (!uid || !vorname || !nachname || !geburtsdatum) {
showErrorMessage('Bitte füllen Sie alle Pflichtfelder aus!');
return;
}
// Alter berechnen
const alter = calculateAge(geburtsdatum);
if (alter < 0) {
showErrorMessage('Das Geburtsdatum kann nicht in der Zukunft liegen!');
return;
}
// Loading State
setLoadingState(true);
@@ -97,7 +151,8 @@
uid: uid,
vorname: vorname,
nachname: nachname,
alter: alter
geburtsdatum: geburtsdatum,
alter: alter // Berechnetes Alter wird mit gesendet
})
});
@@ -127,7 +182,6 @@
}
});
function showSuccessMessage(message = 'Daten erfolgreich gespeichert!') {
const successMsg = document.getElementById('successMessage');
successMsg.textContent = `${message}`;
@@ -182,6 +236,7 @@
function clearForm() {
document.getElementById('rfidForm').reset();
document.getElementById('ageDisplay').style.display = 'none';
document.getElementById('uid').focus();
}
@@ -272,27 +327,27 @@
// Button Status zurücksetzen
readBtn.disabled = false;
readBtn.className = 'read-uid-btn';
readBtn.innerHTML = '📡 Read UID';
readBtn.innerHTML = '📡 Read Chip';
}
}
async function checkServerStatus() {
try {
const response = await fetch('/api/health');
const data = await response.json();
if (!data.status || data.status !== 'connected') {
showErrorMessage('Server nicht verbunden. Einige Funktionen könnten eingeschränkt sein.');
return false;
async function checkServerStatus() {
try {
const response = await fetch('/api/health');
const data = await response.json();
if (!data.status || data.status !== 'connected') {
showErrorMessage('Server nicht verbunden. Einige Funktionen könnten eingeschränkt sein.');
return false;
}
return true;
} catch (error) {
console.error('Server Status Check fehlgeschlagen:', error);
showErrorMessage('Verbindung zum Server nicht möglich.');
return false;
}
}
return true;
} catch (error) {
console.error('Server Status Check fehlgeschlagen:', error);
showErrorMessage('Verbindung zum Server nicht möglich.');
return false;
}
}
</script>
</body>
</html>