🎉 Removed unnecessary files & logs, updated documentation & UI components. 🖥️🔍📚💻
This commit is contained in:
249
backend/static/js/validation-fix.js
Normal file
249
backend/static/js/validation-fix.js
Normal file
@ -0,0 +1,249 @@
|
||||
/**
|
||||
* MYP Platform - JavaScript Fehler Validierung und Überwachung
|
||||
* Überprüft die behobenen Fehler und aktiviert weitere Fallbacks bei Bedarf
|
||||
*/
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
console.log('🔍 JavaScript Fehlervalidierung wird gestartet...');
|
||||
|
||||
/**
|
||||
* Validierung der showToast-Verfügbarkeit
|
||||
*/
|
||||
function validateShowToast() {
|
||||
const testsPassed = [];
|
||||
|
||||
// Test 1: Grundfunktion verfügbar
|
||||
if (typeof window.showToast === 'function') {
|
||||
testsPassed.push('✅ window.showToast ist verfügbar');
|
||||
} else {
|
||||
console.warn('⚠️ window.showToast nicht verfügbar - aktiviere Fallback');
|
||||
|
||||
// Fallback aktivieren
|
||||
window.showToast = function(message, type = 'info', duration = 5000) {
|
||||
console.log(`🔧 Validation-Fallback showToast: [${type.toUpperCase()}] ${message}`);
|
||||
|
||||
// Versuche MYP.UI.toast zu verwenden
|
||||
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');
|
||||
}
|
||||
|
||||
// Test 2: MYP.UI.toast verfügbar
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validierung der Manager-Verfügbarkeit
|
||||
*/
|
||||
function validateManagers() {
|
||||
const testsPassed = [];
|
||||
|
||||
// JobManager-Test
|
||||
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');
|
||||
}
|
||||
|
||||
// Refresh-Funktionen Test
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* API-Endpunkt Validierung
|
||||
*/
|
||||
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', // Nur Header abrufen, kein Body
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
});
|
||||
|
||||
if (response.ok || response.status === 405) { // 405 = Method Not Allowed ist OK
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* DOM-Element Validierung
|
||||
*/
|
||||
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`);
|
||||
}
|
||||
});
|
||||
|
||||
// Container-Elemente
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Error Handler Validierung
|
||||
*/
|
||||
function validateErrorHandling() {
|
||||
const testsPassed = [];
|
||||
|
||||
// Test ob unser error handler aktiv ist
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vollständige Validierung durchführen
|
||||
*/
|
||||
async function runCompleteValidation() {
|
||||
console.log('🔍 Starte vollständige JavaScript-Validierung...');
|
||||
|
||||
const results = {
|
||||
showToast: validateShowToast(),
|
||||
managers: validateManagers(),
|
||||
domElements: validateDOMElements(),
|
||||
errorHandling: validateErrorHandling(),
|
||||
apiEndpoints: await validateAPIEndpoints()
|
||||
};
|
||||
|
||||
// Ergebnisse ausgeben
|
||||
console.group('🔍 Validierungsergebnisse:');
|
||||
|
||||
Object.keys(results).forEach(category => {
|
||||
console.group(`📋 ${category}:`);
|
||||
results[category].forEach(result => console.log(result));
|
||||
console.groupEnd();
|
||||
});
|
||||
|
||||
console.groupEnd();
|
||||
|
||||
// Zusammenfassung
|
||||
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`);
|
||||
|
||||
// Status-Toast anzeigen
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Kontinuierliche Überwachung
|
||||
*/
|
||||
function startContinuousMonitoring() {
|
||||
setInterval(() => {
|
||||
// Prüfe kritische Funktionen
|
||||
if (typeof window.showToast !== 'function') {
|
||||
console.warn('⚠️ showToast-Funktion verloren - reaktiviere Fallback');
|
||||
validateShowToast();
|
||||
}
|
||||
|
||||
// Prüfe auf neue Fehler
|
||||
const errorElements = document.querySelectorAll('.text-red-500');
|
||||
if (errorElements.length > 0) {
|
||||
console.warn(`⚠️ ${errorElements.length} Fehler-Elemente gefunden`);
|
||||
}
|
||||
}, 30000); // Alle 30 Sekunden
|
||||
}
|
||||
|
||||
// Globale Funktionen exportieren
|
||||
window.validateJavaScript = runCompleteValidation;
|
||||
window.validateShowToast = validateShowToast;
|
||||
|
||||
// DOMContentLoaded abwarten und dann validieren
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
setTimeout(runCompleteValidation, 2000); // 2 Sekunden warten
|
||||
startContinuousMonitoring();
|
||||
});
|
||||
} else {
|
||||
setTimeout(runCompleteValidation, 2000);
|
||||
startContinuousMonitoring();
|
||||
}
|
||||
|
||||
console.log('✅ JavaScript Fehlervalidierung initialisiert');
|
||||
})();
|
Reference in New Issue
Block a user