manage-your-printer/static/js/validation-fix.min.js
2025-06-04 10:03:22 +02:00

17 lines
5.0 KiB
JavaScript

(function(){'use strict';console.log('🔍 JavaScript Fehlervalidierung wird gestartet...');function validateShowToast(){const testsPassed=[];if(typeof window.showToast==='function'){testsPassed.push('✅ window.showToast ist verfügbar');}else{console.warn('⚠️ window.showToast nicht verfügbar - aktiviere Fallback');window.showToast=function(message,type='info',duration=5000){console.log(`🔧 Validation-Fallback showToast:[${type.toUpperCase()}]${message}`);if(window.MYP&&window.MYP.UI&&window.MYP.UI.toast&&window.MYP.UI.toast.show){window.MYP.UI.toast.show(message,type,duration);}};testsPassed.push('🔧 Fallback showToast aktiviert');}
if(window.MYP&&window.MYP.UI&&window.MYP.UI.toast){testsPassed.push('✅ MYP.UI.toast ist verfügbar');}else{testsPassed.push('⚠️ MYP.UI.toast noch nicht verfügbar (wird später geladen)');}
return testsPassed;}
function validateManagers(){const testsPassed=[];if(typeof window.jobManager!=='undefined'&&window.jobManager){testsPassed.push('✅ window.jobManager ist verfügbar');}else if(typeof jobManager!=='undefined'&&jobManager){testsPassed.push('✅ jobManager (global) ist verfügbar');}else{testsPassed.push('⚠️ JobManager nicht verfügbar - API-Fallback wird verwendet');}
if(typeof window.refreshJobs==='function'){testsPassed.push('✅ refreshJobs-Funktion ist verfügbar');}else{testsPassed.push('❌ refreshJobs-Funktion fehlt');}
if(typeof window.refreshStats==='function'){testsPassed.push('✅ refreshStats-Funktion ist verfügbar');}else{testsPassed.push('❌ refreshStats-Funktion fehlt');}
return testsPassed;}
async function validateAPIEndpoints(){const testsPassed=[];const endpoints=[{url:'/api/stats',name:'Statistiken'},{url:'/api/jobs',name:'Jobs'}];for(const endpoint of endpoints){try{const response=await fetch(endpoint.url,{method:'HEAD',headers:{'Content-Type':'application/json'}});if(response.ok||response.status===405){testsPassed.push(`${endpoint.name}API(${endpoint.url})ist erreichbar`);}else{testsPassed.push(`⚠️ ${endpoint.name}API(${endpoint.url})antwortet mit Status ${response.status}`);}}catch(error){testsPassed.push(`${endpoint.name}API(${endpoint.url})nicht erreichbar:${error.message}`);}}
return testsPassed;}
function validateDOMElements(){const testsPassed=[];const criticalElements=['total-print-time','completed-jobs-count','total-material-used','last-updated-time'];criticalElements.forEach(elementId=>{const element=document.getElementById(elementId);if(element){testsPassed.push(`✅ Element#${elementId}gefunden`);}else{testsPassed.push(`⚠️ Element#${elementId}nicht gefunden`);}});const containers=['.jobs-container','#jobs-container','.job-grid','#refresh-button'];containers.forEach(selector=>{const element=document.querySelector(selector);if(element){testsPassed.push(`✅ Container ${selector}gefunden`);}else{testsPassed.push(`⚠️ Container ${selector}nicht gefunden`);}});return testsPassed;}
function validateErrorHandling(){const testsPassed=[];const testError=new Error('Validation Test Error');window.dispatchEvent(new ErrorEvent('error',{message:'Test error for validation',filename:'validation-fix.js',lineno:1,error:testError}));testsPassed.push('✅ Error Handler Funktionalität getestet');return testsPassed;}
async function runCompleteValidation(){console.log('🔍 Starte vollständige JavaScript-Validierung...');const results={showToast:validateShowToast(),managers:validateManagers(),domElements:validateDOMElements(),errorHandling:validateErrorHandling(),apiEndpoints:await validateAPIEndpoints()};console.group('🔍 Validierungsergebnisse:');Object.keys(results).forEach(category=>{console.group(`📋 ${category}:`);results[category].forEach(result=>console.log(result));console.groupEnd();});console.groupEnd();const allResults=Object.values(results).flat();const successCount=allResults.filter(r=>r.startsWith('✅')).length;const warningCount=allResults.filter(r=>r.startsWith('⚠️')).length;const errorCount=allResults.filter(r=>r.startsWith('❌')).length;console.log(`📊 Validierung abgeschlossen:${successCount}OK,${warningCount}Warnungen,${errorCount}Fehler`);if(typeof window.showToast==='function'){if(errorCount===0){window.showToast(`✅ JavaScript-Validierung erfolgreich:${successCount}Checks bestanden`,'success');}else{window.showToast(`⚠️ JavaScript-Validierung:${errorCount}Probleme gefunden`,'warning');}}
return results;}
function startContinuousMonitoring(){setInterval(()=>{if(typeof window.showToast!=='function'){console.warn('⚠️ showToast-Funktion verloren - reaktiviere Fallback');validateShowToast();}
const errorElements=document.querySelectorAll('.text-red-500');if(errorElements.length>0){console.warn(`⚠️ ${errorElements.length}Fehler-Elemente gefunden`);}},30000);}
window.validateJavaScript=runCompleteValidation;window.validateShowToast=validateShowToast;if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',()=>{setTimeout(runCompleteValidation,2000);startContinuousMonitoring();});}else{setTimeout(runCompleteValidation,2000);startContinuousMonitoring();}
console.log('✅ JavaScript Fehlervalidierung initialisiert');})();