forked from Simnation/Main
ed
This commit is contained in:
parent
05be118a84
commit
2f2d0b1103
3 changed files with 60 additions and 142 deletions
|
@ -19,7 +19,7 @@ window.addEventListener('message', function(event) {
|
|||
}
|
||||
});
|
||||
|
||||
// Lizenz anzeigen
|
||||
// In der showLicense Funktion in script.js
|
||||
function showLicense(data) {
|
||||
currentLicense = data;
|
||||
const container = document.getElementById('license-container');
|
||||
|
@ -69,121 +69,10 @@ function showLicense(data) {
|
|||
|
||||
// Notification
|
||||
showNotification('Lizenz geladen', 'success');
|
||||
|
||||
}, 500);
|
||||
}
|
||||
|
||||
// Spieler-Foto anzeigen
|
||||
function displayPlayerPhoto(license) {
|
||||
const photoImg = document.getElementById('player-photo');
|
||||
const photoPlaceholder = document.getElementById('photo-placeholder');
|
||||
|
||||
if (license.photo_url && license.photo_url !== '') {
|
||||
photoImg.src = license.photo_url;
|
||||
photoImg.onload = function() {
|
||||
photoImg.classList.remove('hidden');
|
||||
photoPlaceholder.classList.add('hidden');
|
||||
};
|
||||
photoImg.onerror = function() {
|
||||
photoImg.classList.add('hidden');
|
||||
photoPlaceholder.classList.remove('hidden');
|
||||
};
|
||||
} else {
|
||||
photoImg.classList.add('hidden');
|
||||
photoPlaceholder.classList.remove('hidden');
|
||||
}
|
||||
}
|
||||
|
||||
// Lizenz-Klassen anzeigen
|
||||
function displayLicenseClasses(license) {
|
||||
const classesRow = document.getElementById('license-classes-row');
|
||||
const classesElement = document.getElementById('license-classes');
|
||||
|
||||
if (license.license_type === 'drivers_license' && license.classes && license.classes !== '[]') {
|
||||
try {
|
||||
const classes = JSON.parse(license.classes);
|
||||
if (classes && classes.length > 0) {
|
||||
classesElement.textContent = classes.join(', ');
|
||||
classesRow.style.display = 'flex';
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Fehler beim Parsen der Klassen:', e);
|
||||
}
|
||||
}
|
||||
classesRow.style.display = 'none';
|
||||
}
|
||||
|
||||
// Lizenz-Status anzeigen
|
||||
function displayLicenseStatus(license) {
|
||||
const statusElement = document.getElementById('license-status');
|
||||
const statusIcon = statusElement.querySelector('.status-icon');
|
||||
const statusText = statusElement.querySelector('.status-text');
|
||||
|
||||
// Ablaufdatum prüfen
|
||||
let isExpired = false;
|
||||
let isExpiringSoon = false;
|
||||
|
||||
if (license.expire_date) {
|
||||
const expireDate = new Date(license.expire_date);
|
||||
const today = new Date();
|
||||
const daysUntilExpire = Math.ceil((expireDate - today) / (1000 * 60 * 60 * 24));
|
||||
|
||||
isExpired = daysUntilExpire < 0;
|
||||
isExpiringSoon = daysUntilExpire <= 30 && daysUntilExpire >= 0;
|
||||
}
|
||||
|
||||
// Status setzen
|
||||
if (!license.is_active || isExpired) {
|
||||
statusElement.className = 'license-status inactive';
|
||||
statusIcon.className = 'status-icon fas fa-times-circle';
|
||||
statusText.textContent = isExpired ? 'Abgelaufen' : 'Ungültig';
|
||||
} else if (isExpiringSoon) {
|
||||
statusElement.className = 'license-status warning';
|
||||
statusIcon.className = 'status-icon fas fa-exclamation-triangle';
|
||||
statusText.textContent = 'Läuft bald ab';
|
||||
} else {
|
||||
statusElement.className = 'license-status active';
|
||||
statusIcon.className = 'status-icon fas fa-check-circle';
|
||||
statusText.textContent = 'Gültig';
|
||||
}
|
||||
}
|
||||
|
||||
// Gültigkeits-Indikator anzeigen
|
||||
function displayValidityIndicator(license) {
|
||||
const validityFill = document.getElementById('validity-fill');
|
||||
const validityText = document.getElementById('validity-text');
|
||||
|
||||
if (!license.expire_date) {
|
||||
validityText.textContent = 'Unbegrenzt gültig';
|
||||
validityFill.style.width = '100%';
|
||||
validityFill.style.backgroundColor = '#4CAF50';
|
||||
return;
|
||||
}
|
||||
|
||||
const issueDate = new Date(license.issue_date);
|
||||
const expireDate = new Date(license.expire_date);
|
||||
const today = new Date();
|
||||
|
||||
const totalDays = Math.ceil((expireDate - issueDate) / (1000 * 60 * 60 * 24));
|
||||
const remainingDays = Math.ceil((expireDate - today) / (1000 * 60 * 60 * 24));
|
||||
const percentage = Math.max(0, Math.min(100, (remainingDays / totalDays) * 100));
|
||||
|
||||
validityFill.style.width = percentage + '%';
|
||||
|
||||
if (remainingDays < 0) {
|
||||
validityText.textContent = 'Abgelaufen';
|
||||
validityFill.style.backgroundColor = '#f44336';
|
||||
} else if (remainingDays <= 30) {
|
||||
validityText.textContent = `Noch ${remainingDays} Tage gültig`;
|
||||
validityFill.style.backgroundColor = '#ff9800';
|
||||
} else {
|
||||
validityText.textContent = `Noch ${remainingDays} Tage gültig`;
|
||||
validityFill.style.backgroundColor = '#4CAF50';
|
||||
}
|
||||
}
|
||||
|
||||
// Rückseite vorbereiten
|
||||
// Erweitere die prepareBackSide Funktion um Bemerkungen anzuzeigen
|
||||
function prepareBackSide(license) {
|
||||
const classesGrid = document.getElementById('classes-grid');
|
||||
const restrictionsList = document.getElementById('restrictions-list');
|
||||
|
@ -192,7 +81,7 @@ function prepareBackSide(license) {
|
|||
// Klassen-Grid für Führerschein
|
||||
if (license.license_type === 'drivers_license' && license.classes) {
|
||||
try {
|
||||
const classes = JSON.parse(license.classes);
|
||||
const classes = Array.isArray(license.classes) ? license.classes : JSON.parse(license.classes);
|
||||
classesGrid.innerHTML = '';
|
||||
|
||||
const classDescriptions = {
|
||||
|
@ -207,15 +96,19 @@ function prepareBackSide(license) {
|
|||
'DE': 'Bus mit Anhänger'
|
||||
};
|
||||
|
||||
classes.forEach(cls => {
|
||||
const classItem = document.createElement('div');
|
||||
classItem.className = 'class-item';
|
||||
classItem.innerHTML = `
|
||||
<div class="class-letter">${cls}</div>
|
||||
<div class="class-description">${classDescriptions[cls] || 'Unbekannt'}</div>
|
||||
`;
|
||||
classesGrid.appendChild(classItem);
|
||||
});
|
||||
if (classes && classes.length > 0) {
|
||||
classes.forEach(cls => {
|
||||
const classItem = document.createElement('div');
|
||||
classItem.className = 'class-item';
|
||||
classItem.innerHTML = `
|
||||
<div class="class-letter">${cls}</div>
|
||||
<div class="class-description">${classDescriptions[cls] || 'Unbekannt'}</div>
|
||||
`;
|
||||
classesGrid.appendChild(classItem);
|
||||
});
|
||||
} else {
|
||||
classesGrid.innerHTML = '<p>Keine Klassen verfügbar</p>';
|
||||
}
|
||||
} catch (e) {
|
||||
classesGrid.innerHTML = '<p>Keine Klassen verfügbar</p>';
|
||||
}
|
||||
|
@ -230,6 +123,7 @@ function prepareBackSide(license) {
|
|||
notesText.textContent = license.notes || 'Keine besonderen Bemerkungen';
|
||||
}
|
||||
|
||||
|
||||
// Karte drehen
|
||||
function flipCard() {
|
||||
const frontSide = document.querySelector('.license-content, .license-footer');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue