/** * Debug Fix Script für MYP Platform * Temporäre Fehlerbehebung für JavaScript-Probleme */ (function() { 'use strict'; console.log('🔧 Debug Fix Script wird geladen...'); // Namespace sicherstellen window.MYP = window.MYP || {}; window.MYP.UI = window.MYP.UI || {}; // MVP.UI Alias erstellen falls es fehlerhaft verwendet wird window.MVP = window.MVP || {}; window.MVP.UI = window.MVP.UI || {}; // Sofortiger Alias für DarkModeManager window.MVP.UI.DarkModeManager = function() { console.log('⚠️ MVP.UI.DarkModeManager Konstruktor aufgerufen - verwende MYP.UI.darkMode stattdessen'); if (window.MYP && window.MYP.UI && window.MYP.UI.darkMode) { return window.MYP.UI.darkMode; } // Fallback: Dummy-Objekt zurückgeben return { init: function() { console.log('DarkModeManager Fallback init'); }, setDarkMode: function() { console.log('DarkModeManager Fallback setDarkMode'); }, isDarkMode: function() { return false; } }; }; // DOMContentLoaded Event abwarten document.addEventListener('DOMContentLoaded', function() { console.log('🚀 Debug Fix: DOM Content geladen'); // Warten bis ui-components.js geladen ist setTimeout(() => { try { // MVP.UI DarkModeManager Alias aktualisieren if (window.MYP && window.MYP.UI && window.MYP.UI.darkMode) { window.MVP.UI.DarkModeManager = function() { console.log('⚠️ MVP.UI.DarkModeManager Konstruktor aufgerufen - verwende MYP.UI.darkMode stattdessen'); return window.MYP.UI.darkMode; }; console.log('✅ MVP.UI.DarkModeManager Alias aktualisiert'); } // JobManager sicherstellen if (!window.jobManager && window.JobManager) { window.jobManager = new window.JobManager(); console.log('✅ JobManager Instanz erstellt'); } // Fehlende setupFormHandlers Methode hinzufügen falls nötig if (window.jobManager && !window.jobManager.setupFormHandlers) { window.jobManager.setupFormHandlers = function() { console.log('✅ setupFormHandlers Fallback aufgerufen'); }; } // Global verfügbare Wrapper-Funktionen erstellen window.refreshJobs = function() { if (window.jobManager && window.jobManager.loadJobs) { return window.jobManager.loadJobs(); } else { console.warn('⚠️ JobManager nicht verfügbar - Seite wird neu geladen'); window.location.reload(); } }; // Weitere globale Funktionen für Kompatibilität window.startJob = function(jobId) { if (window.jobManager && window.jobManager.startJob) { return window.jobManager.startJob(jobId); } }; window.pauseJob = function(jobId) { if (window.jobManager && window.jobManager.pauseJob) { return window.jobManager.pauseJob(jobId); } }; window.resumeJob = function(jobId) { if (window.jobManager && window.jobManager.resumeJob) { return window.jobManager.resumeJob(jobId); } }; window.deleteJob = function(jobId) { if (window.jobManager && window.jobManager.deleteJob) { return window.jobManager.deleteJob(jobId); } }; console.log('✅ Debug Fix Script erfolgreich angewendet'); } catch (error) { console.error('❌ Debug Fix Fehler:', error); } }, 100); }); // Error Handler für unbehandelte Fehler window.addEventListener('error', function(e) { // Bessere Fehler-Serialisierung const errorInfo = { message: e.message || 'Unbekannter Fehler', filename: e.filename || 'Unbekannte Datei', lineno: e.lineno || 0, colno: e.colno || 0, stack: e.error ? e.error.stack : 'Stack nicht verfügbar', type: e.error ? e.error.constructor.name : 'Unbekannter Typ' }; console.error('🐛 JavaScript Error abgefangen:', JSON.stringify(errorInfo, null, 2)); // Spezifische Fehlerbehebungen if (e.message.includes('MVP.UI.DarkModeManager is not a constructor')) { console.log('🔧 DarkModeManager Fehler erkannt - verwende MYP.UI.darkMode'); e.preventDefault(); return false; } if (e.message.includes('setupFormHandlers is not a function')) { console.log('🔧 setupFormHandlers Fehler erkannt - verwende Fallback'); e.preventDefault(); return false; } if (e.message.includes('refreshStats is not defined')) { console.log('🔧 refreshStats Fehler erkannt - lade global-refresh-functions.js'); // Versuche, global-refresh-functions.js zu laden const script = document.createElement('script'); script.src = '/static/js/global-refresh-functions.js'; script.onload = function() { console.log('✅ global-refresh-functions.js nachgeladen'); }; document.head.appendChild(script); e.preventDefault(); return false; } if (e.message.includes('Cannot read properties of undefined')) { console.log('🔧 Undefined Properties Fehler erkannt - ignoriert für Stabilität'); e.preventDefault(); return false; } if (e.message.includes('jobManager') || e.message.includes('JobManager')) { console.log('🔧 JobManager Fehler erkannt - verwende Fallback'); e.preventDefault(); return false; } if (e.message.includes('showToast is not defined')) { console.log('🔧 showToast Fehler erkannt - verwende Fallback'); e.preventDefault(); return false; } }); // Promise rejection handler window.addEventListener('unhandledrejection', function(e) { console.error('🐛 Promise Rejection abgefangen:', e.reason); if (e.reason && e.reason.message && e.reason.message.includes('Jobs')) { console.log('🔧 Jobs-bezogener Promise Fehler - ignoriert'); e.preventDefault(); } }); console.log('✅ Debug Fix Script bereit'); })();