change alter zu geburtsdatum
This commit is contained in:
103
data/rfid.html
103
data/rfid.html
@@ -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>
|
||||
Reference in New Issue
Block a user