/** * Jobs Safety Fix - Mercedes-Benz MYP Platform * Umfassende Lösung für "jobs undefined" Probleme * Version: 1.0.0 */ (function() { 'use strict'; console.log('🛡️ Jobs Safety Fix wird geladen...'); /** * Globale Jobs-Variable sicher initialisieren */ if (typeof window.jobsData === 'undefined') { window.jobsData = []; } if (typeof window.filteredJobs === 'undefined') { window.filteredJobs = []; } /** * Sichere Jobs-Funktionen */ window.safeJobsOperations = { /** * Jobs sicher abrufen */ getJobs: function() { if (window.jobManager && Array.isArray(window.jobManager.jobs)) { return window.jobManager.jobs; } if (Array.isArray(window.jobsData)) { return window.jobsData; } return []; }, /** * Gefilterte Jobs sicher abrufen */ getFilteredJobs: function() { if (Array.isArray(window.filteredJobs)) { return window.filteredJobs; } return this.getJobs(); }, /** * Jobs sicher setzen */ setJobs: function(jobs) { if (!Array.isArray(jobs)) { console.warn('⚠️ Jobs ist kein Array, konvertiere zu leerem Array'); jobs = []; } if (window.jobManager) { window.jobManager.jobs = jobs; } window.jobsData = jobs; console.log(`✅ ${jobs.length} Jobs sicher gesetzt`); }, /** * Job sicher finden */ findJob: function(jobId) { const jobs = this.getJobs(); return jobs.find(job => job && job.id && job.id.toString() === jobId.toString()) || null; }, /** * Jobs sicher filtern */ filterJobs: function(filterFn) { const jobs = this.getJobs(); if (typeof filterFn !== 'function') { return jobs; } try { return jobs.filter(job => { if (!job || typeof job !== 'object') { return false; } return filterFn(job); }); } catch (error) { console.error('❌ Fehler beim Filtern der Jobs:', error); return jobs; } } }; /** * JobManager Sicherheitsprüfungen */ function ensureJobManagerSafety() { if (typeof window.jobManager !== 'undefined' && window.jobManager) { // Sicherstellen, dass jobs ein Array ist if (!Array.isArray(window.jobManager.jobs)) { console.warn('⚠️ JobManager.jobs ist kein Array, korrigiere...'); window.jobManager.jobs = []; } // Originale loadJobs Methode wrappen if (window.jobManager.loadJobs && typeof window.jobManager.loadJobs === 'function') { const originalLoadJobs = window.jobManager.loadJobs; window.jobManager.loadJobs = async function(...args) { try { await originalLoadJobs.apply(this, args); // Nach dem Laden sicherstellen, dass jobs ein Array ist if (!Array.isArray(this.jobs)) { this.jobs = []; } } catch (error) { console.error('❌ Fehler beim sicheren Laden der Jobs:', error); this.jobs = []; throw error; } }; } // Originale renderJobs Methode wrappen if (window.jobManager.renderJobs && typeof window.jobManager.renderJobs === 'function') { const originalRenderJobs = window.jobManager.renderJobs; window.jobManager.renderJobs = function(...args) { try { // Sicherstellen, dass jobs ein Array ist vor dem Rendern if (!Array.isArray(this.jobs)) { console.warn('⚠️ Jobs ist kein Array vor dem Rendern, korrigiere...'); this.jobs = []; } return originalRenderJobs.apply(this, args); } catch (error) { console.error('❌ Fehler beim sicheren Rendern der Jobs:', error); // Fallback-Rendering const jobsList = document.getElementById('jobs-list'); if (jobsList) { jobsList.innerHTML = `
Jobs konnten nicht angezeigt werden