diff --git a/backend/app/database/myp.db-shm b/backend/app/database/myp.db-shm index ba251ec1..7af6484d 100644 Binary files a/backend/app/database/myp.db-shm and b/backend/app/database/myp.db-shm differ diff --git a/backend/app/templates/printers.html b/backend/app/templates/printers.html index b75b6d47..ac440e64 100644 --- a/backend/app/templates/printers.html +++ b/backend/app/templates/printers.html @@ -457,6 +457,7 @@

3D-Drucker

Live-Überwachung und Verwaltung Ihrer Produktionseinheiten

+
@@ -1656,6 +1657,21 @@ class PrinterManager { container: 'status-maintenance', iconBg: 'bg-purple-100 dark:bg-purple-900/30 text-purple-600', badge: 'bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-400' + }, + 'standby': { + container: 'status-standby', + iconBg: 'bg-yellow-100 dark:bg-yellow-900/30 text-yellow-600', + badge: 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400' + }, + 'unreachable': { + container: 'status-unreachable', + iconBg: 'bg-gray-100 dark:bg-gray-900/30 text-gray-600', + badge: 'bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-400' + }, + 'unconfigured': { + container: 'status-unconfigured', + iconBg: 'bg-indigo-100 dark:bg-indigo-900/30 text-indigo-600', + badge: 'bg-indigo-100 text-indigo-800 dark:bg-indigo-900/30 dark:text-indigo-400' } }; return classes[status] || classes['offline']; @@ -1667,7 +1683,10 @@ class PrinterManager { 'offline': '
', 'printing': '
', 'error': '
', - 'maintenance': '
' + 'maintenance': '
', + 'standby': '
', + 'unreachable': '
', + 'unconfigured': '
' }; return icons[status] || icons['offline']; } @@ -1679,7 +1698,10 @@ class PrinterManager { 'printing': 'Druckt', 'error': 'Fehler', 'maintenance': 'Wartung', - 'idle': 'Bereit' + 'idle': 'Bereit', + 'standby': 'Standby', + 'unreachable': 'Unerreichbar', + 'unconfigured': 'Nicht konfiguriert' }; return texts[status] || status; } @@ -1687,9 +1709,12 @@ class PrinterManager { updateStatistics() { const stats = { total: allPrinters.length, - online: allPrinters.filter(p => ['online', 'idle'].includes(p.status)).length, - offline: allPrinters.filter(p => p.status === 'offline').length, - printing: allPrinters.filter(p => p.status === 'printing').length + online: allPrinters.filter(p => ['online', 'idle', 'standby'].includes(p.status)).length, + offline: allPrinters.filter(p => ['offline', 'unreachable'].includes(p.status)).length, + printing: allPrinters.filter(p => p.status === 'printing').length, + standby: allPrinters.filter(p => p.status === 'standby').length, + unreachable: allPrinters.filter(p => p.status === 'unreachable').length, + unconfigured: allPrinters.filter(p => p.status === 'unconfigured').length }; // Animate counter updates @@ -1704,6 +1729,17 @@ class PrinterManager { document.getElementById('offline-percentage').textContent = Math.round((stats.offline / total) * 100); document.getElementById('active-percentage').textContent = Math.round((stats.printing / total) * 100); + // Zeige detaillierte Status-Info in der Konsole + console.log('📊 Status-Verteilung:', { + 'Online (inkl. Standby)': stats.online, + 'Standby': stats.standby, + 'Offline/Unerreichbar': stats.offline, + 'Druckt aktiv': stats.printing, + 'Unerreichbar': stats.unreachable, + 'Unkonfiguriert': stats.unconfigured, + 'Gesamt': stats.total + }); + this.updatePerformanceMetrics(stats); } @@ -2065,6 +2101,34 @@ document.addEventListener('DOMContentLoaded', function() { btn.addEventListener('click', openAddPrinterModal); }); + // PrinterMonitor für Live-Status initialisieren + if (window.printerMonitor) { + console.log('🖨️ Starte PrinterMonitor für Live-Status-Updates...'); + window.printerMonitor.start(); + + // Zusätzlicher Callback für Status-Updates + window.printerMonitor.onUpdate((data) => { + if (data.type === 'update' && data.summary) { + // Update header statistics + document.getElementById('online-count').textContent = data.summary.online || 0; + document.getElementById('total-count').textContent = data.summary.total || 0; + + // Visual feedback für Live-Updates + const statusIndicator = document.getElementById('live-status-indicator'); + if (statusIndicator) { + statusIndicator.classList.add('animate-pulse', 'text-green-500'); + setTimeout(() => { + statusIndicator.classList.remove('animate-pulse'); + }, 1000); + } + + console.log('📊 Live-Status-Update:', data.summary); + } + }); + } else { + console.warn('⚠️ PrinterMonitor nicht verfügbar - verwende Standard-Updates'); + } + console.log('✅ Printer Management System erfolgreich initialisiert'); });