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 @@
+
@@ -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');
});