175 lines
7.1 KiB
JavaScript
175 lines
7.1 KiB
JavaScript
/**
|
|
* 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');
|
|
})();
|