"feat: Implement debug fix in static files
This commit is contained in:
107
backend/app/static/js/debug-fix.js
Normal file
107
backend/app/static/js/debug-fix.js
Normal file
@@ -0,0 +1,107 @@
|
||||
/**
|
||||
* 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 || {};
|
||||
|
||||
// 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 erstellen
|
||||
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 erstellt');
|
||||
}
|
||||
|
||||
// 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();
|
||||
}
|
||||
};
|
||||
|
||||
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) {
|
||||
console.error('🐛 JavaScript Error abgefangen:', {
|
||||
message: e.message,
|
||||
filename: e.filename,
|
||||
lineno: e.lineno,
|
||||
colno: e.colno,
|
||||
error: e.error
|
||||
});
|
||||
|
||||
// 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('Cannot read properties of undefined')) {
|
||||
console.log('🔧 Undefined Properties Fehler erkannt - ignoriert für Stabilität');
|
||||
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');
|
||||
})();
|
@@ -641,6 +641,80 @@
|
||||
|
||||
paginationEl.innerHTML = paginationHTML;
|
||||
}
|
||||
|
||||
/**
|
||||
* Neuen Job erstellen
|
||||
*/
|
||||
async createNewJob(formData) {
|
||||
try {
|
||||
console.log('📝 Erstelle neuen Job...');
|
||||
|
||||
const response = await fetch('/api/jobs', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'X-CSRFToken': this.getCSRFToken()
|
||||
},
|
||||
body: formData
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
||||
}
|
||||
|
||||
const result = await response.json();
|
||||
this.showToast('Job erfolgreich erstellt', 'success');
|
||||
|
||||
// Jobs neu laden
|
||||
await this.loadJobs();
|
||||
|
||||
// Formular zurücksetzen
|
||||
const form = document.getElementById('new-job-form');
|
||||
if (form) {
|
||||
form.reset();
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ Fehler beim Erstellen des Jobs:', error);
|
||||
this.showToast('Fehler beim Erstellen des Jobs', 'error');
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Job aktualisieren
|
||||
*/
|
||||
async updateJob(jobId, formData) {
|
||||
try {
|
||||
console.log(`📝 Aktualisiere Job ${jobId}...`);
|
||||
|
||||
const response = await fetch(`/api/jobs/${jobId}`, {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'X-CSRFToken': this.getCSRFToken()
|
||||
},
|
||||
body: formData
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
||||
}
|
||||
|
||||
const result = await response.json();
|
||||
this.showToast('Job erfolgreich aktualisiert', 'success');
|
||||
|
||||
// Jobs neu laden
|
||||
await this.loadJobs();
|
||||
|
||||
return result;
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ Fehler beim Aktualisieren des Jobs:', error);
|
||||
this.showToast('Fehler beim Aktualisieren des Jobs', 'error');
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// JobManager global verfügbar machen
|
||||
|
Reference in New Issue
Block a user