"Update logging configuration and related files for improved debugging support"

This commit is contained in:
2025-05-29 09:58:29 +02:00
parent 06cfc0b8aa
commit a5e7556527
10 changed files with 665 additions and 203 deletions

View File

@@ -1,10 +1,10 @@
/**
* Dark Mode Toggle Fix
* Diese Datei stellt sicher, dass der Dark Mode Toggle Button korrekt funktioniert
* Dark Mode Toggle Fix - Premium Edition
* Diese Datei stellt sicher, dass der neue Premium Dark Mode Toggle Button korrekt funktioniert
*/
document.addEventListener('DOMContentLoaded', function() {
// Dark Mode Toggle Button
// Dark Mode Toggle Button (Premium Design)
const darkModeToggle = document.getElementById('darkModeToggle');
const html = document.documentElement;
@@ -23,56 +23,57 @@ document.addEventListener('DOMContentLoaded', function() {
}
/**
* Icons im Toggle-Button aktualisieren
* Icons im Premium Toggle-Button aktualisieren
*/
function updateIcons(isDark) {
// Finde die Icons im Button - versuche sowohl direkte Kinder als auch verschachtelte
let sunIcon = darkModeToggle.querySelector('.sun-icon');
let moonIcon = darkModeToggle.querySelector('.moon-icon');
if (!darkModeToggle) return;
// Finde die Premium-Icons
const sunIcon = darkModeToggle.querySelector('.sun-icon');
const moonIcon = darkModeToggle.querySelector('.moon-icon');
// Wenn Icons nicht gefunden wurden, erstelle sie neu
if (!sunIcon || !moonIcon) {
console.warn('Icons nicht gefunden - erzeuge neue Icons');
// Entferne vorhandene Inhalte im Button
darkModeToggle.innerHTML = '';
// Neue Icons erstellen
sunIcon = document.createElement('svg');
sunIcon.className = 'w-5 h-5 sm:w-5 sm:h-5 sun-icon';
sunIcon.setAttribute('fill', 'none');
sunIcon.setAttribute('stroke', 'currentColor');
sunIcon.setAttribute('viewBox', '0 0 24 24');
sunIcon.setAttribute('aria-hidden', 'true');
sunIcon.innerHTML = '<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" />';
moonIcon = document.createElement('svg');
moonIcon.className = 'w-5 h-5 sm:w-5 sm:h-5 moon-icon hidden';
moonIcon.setAttribute('fill', 'none');
moonIcon.setAttribute('stroke', 'currentColor');
moonIcon.setAttribute('viewBox', '0 0 24 24');
moonIcon.setAttribute('aria-hidden', 'true');
moonIcon.innerHTML = '<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" />';
darkModeToggle.appendChild(sunIcon);
darkModeToggle.appendChild(moonIcon);
console.warn('Premium Dark Mode Icons nicht gefunden');
return;
}
// Icons entsprechend dem Dark Mode Status anzeigen/verbergen
// Animation für Übergänge
if (isDark) {
sunIcon.classList.add('hidden');
moonIcon.classList.remove('hidden');
// Dark Mode aktiviert - zeige Mond
sunIcon.style.opacity = '0';
sunIcon.style.transform = 'scale(0.75) rotate(90deg)';
moonIcon.style.opacity = '1';
moonIcon.style.transform = 'scale(1) rotate(0deg)';
// CSS-Klassen für Dark Mode
sunIcon.classList.add('opacity-0', 'dark:opacity-0', 'scale-75', 'dark:scale-75', 'rotate-90', 'dark:rotate-90');
sunIcon.classList.remove('opacity-100', 'scale-100', 'rotate-0');
moonIcon.classList.add('opacity-100', 'dark:opacity-100', 'scale-100', 'dark:scale-100', 'rotate-0', 'dark:rotate-0');
moonIcon.classList.remove('opacity-0', 'scale-75', 'rotate-90');
} else {
sunIcon.classList.remove('hidden');
moonIcon.classList.add('hidden');
// Light Mode aktiviert - zeige Sonne
sunIcon.style.opacity = '1';
sunIcon.style.transform = 'scale(1) rotate(0deg)';
moonIcon.style.opacity = '0';
moonIcon.style.transform = 'scale(0.75) rotate(-90deg)';
// CSS-Klassen für Light Mode
sunIcon.classList.add('opacity-100', 'scale-100', 'rotate-0');
sunIcon.classList.remove('opacity-0', 'dark:opacity-0', 'scale-75', 'dark:scale-75', 'rotate-90', 'dark:rotate-90');
moonIcon.classList.add('opacity-0', 'dark:opacity-100', 'scale-75', 'dark:scale-100', 'rotate-90', 'dark:rotate-0');
moonIcon.classList.remove('opacity-100', 'scale-100', 'rotate-0');
}
// Icon-Animationen hinzufügen
sunIcon.classList.toggle('icon-enter', !isDark);
moonIcon.classList.toggle('icon-enter', isDark);
}
/**
* Dark Mode aktivieren/deaktivieren
* Premium Dark Mode aktivieren/deaktivieren
*/
function setDarkMode(enable) {
console.log(`Setze Dark Mode auf: ${enable ? 'Aktiviert' : 'Deaktiviert'}`);
console.log(`🎨 Setze Premium Dark Mode auf: ${enable ? 'Aktiviert' : 'Deaktiviert'}`);
if (enable) {
html.classList.add('dark');
@@ -82,7 +83,7 @@ document.addEventListener('DOMContentLoaded', function() {
if (darkModeToggle) {
darkModeToggle.setAttribute('aria-pressed', 'true');
darkModeToggle.setAttribute('title', 'Light Mode aktivieren');
// Button-Icons aktualisieren
// Premium Button-Icons aktualisieren
updateIcons(true);
}
} else {
@@ -93,7 +94,7 @@ document.addEventListener('DOMContentLoaded', function() {
if (darkModeToggle) {
darkModeToggle.setAttribute('aria-pressed', 'false');
darkModeToggle.setAttribute('title', 'Dark Mode aktivieren');
// Button-Icons aktualisieren
// Premium Button-Icons aktualisieren
updateIcons(false);
}
}
@@ -111,17 +112,33 @@ document.addEventListener('DOMContentLoaded', function() {
window.dispatchEvent(new CustomEvent('darkModeChanged', {
detail: { isDark: enable }
}));
// Premium-Feedback
console.log(`${enable ? '🌙' : '☀️'} Premium Design umgeschaltet auf: ${enable ? 'Dark Mode' : 'Light Mode'}`);
}
// Toggle Dark Mode Funktion
function toggleDarkMode() {
const currentMode = isDarkMode();
setDarkMode(!currentMode);
// Premium-Animation beim Klick
if (darkModeToggle) {
const container = darkModeToggle.querySelector('div');
if (container) {
container.style.transform = 'scale(0.95)';
setTimeout(() => {
container.style.transform = '';
}, 150);
}
}
}
// Event Listener für Toggle Button
// Event Listener für Premium Toggle Button
if (darkModeToggle) {
// Vorherige Event-Listener entfernen, um Duplikate zu vermeiden
console.log('🎨 Premium Dark Mode Toggle Button gefunden - initialisiere...');
// Entferne vorherige Event-Listener, um Duplikate zu vermeiden
const newDarkModeToggle = darkModeToggle.cloneNode(true);
darkModeToggle.parentNode.replaceChild(newDarkModeToggle, darkModeToggle);
@@ -133,15 +150,15 @@ document.addEventListener('DOMContentLoaded', function() {
});
// Aktualisiere die Variable auf das neue Element
darkModeToggle = newDarkModeToggle;
const updatedToggle = document.getElementById('darkModeToggle');
// Initialen Status setzen
const isDark = isDarkMode();
setDarkMode(isDark);
console.log('Dark Mode Toggle Button erfolgreich initialisiert');
console.log('✨ Premium Dark Mode Toggle Button erfolgreich initialisiert');
} else {
console.error('Dark Mode Toggle Button konnte nicht gefunden werden!');
console.error('❌ Premium Dark Mode Toggle Button konnte nicht gefunden werden!');
}
// Tastaturkürzel: Strg+Shift+D für Dark Mode Toggle
@@ -152,8 +169,26 @@ document.addEventListener('DOMContentLoaded', function() {
}
});
// Alternative Tastaturkürzel: Alt+T für Theme Toggle
document.addEventListener('keydown', function(e) {
if (e.altKey && e.key === 't') {
toggleDarkMode();
e.preventDefault();
}
});
// Direkte Verfügbarkeit der Funktionen im globalen Bereich
window.toggleDarkMode = toggleDarkMode;
window.isDarkMode = isDarkMode;
window.setDarkMode = setDarkMode;
// Premium Features
window.premiumDarkMode = {
toggle: toggleDarkMode,
isDark: isDarkMode,
setMode: setDarkMode,
version: '3.0.0-premium'
};
console.log('🎨 Premium Dark Mode System geladen - Version 3.0.0');
});

View File

@@ -0,0 +1,2 @@
/* FullCalendar v6 CSS is embedded in the JavaScript bundle */
/* This file is kept for template compatibility */

File diff suppressed because one or more lines are too long