feat: Erweiterung der Drucker-API und Verbesserung der Benutzeroberfläche durch Status-Checks. Neue Drucker sind standardmäßig aktiv, und ein zusätzlicher Endpunkt zum Hinzufügen von Druckern wurde implementiert. Die Drucker-Templates wurden aktualisiert, um verfügbare Drucker mit Status-Indikatoren anzuzeigen und Fallback-Mechanismen bei Ladefehlern zu integrieren.

This commit is contained in:
2025-05-27 11:05:10 +02:00
parent b289501d00
commit c39595382c
4 changed files with 309 additions and 14 deletions

View File

@@ -187,29 +187,60 @@
// Load available printers
async function loadPrinters() {
try {
const response = await apiCall('/api/printers');
printers = response.printers || [];
// Versuche zuerst Status-Check API für bessere Verfügbarkeitsprüfung
let response;
try {
response = await apiCall('/api/printers/status');
printers = Array.isArray(response) ? response : (response.printers || []);
} catch (statusError) {
console.log('Status-API fehlgeschlagen, verwende normale API:', statusError);
response = await apiCall('/api/printers');
printers = response.printers || [];
}
const select = document.getElementById('printer-select');
select.innerHTML = '<option value="">Drucker auswählen...</option>';
// Only show available printers
const availablePrinters = printers.filter(p => p.status === 'available');
console.log('Geladene Drucker:', printers);
// Filtere verfügbare Drucker (status: 'available' oder active: true)
const availablePrinters = printers.filter(p => {
return p.status === 'available' || p.active === true;
});
console.log('Verfügbare Drucker:', availablePrinters);
if (availablePrinters.length === 0) {
select.innerHTML = '<option value="">Keine verfügbaren Drucker</option>';
select.disabled = true;
showFlashMessage('Derzeit sind keine Drucker verfügbar', 'warning');
// Zeige alle Drucker an, falls keine als verfügbar markiert sind
if (printers.length > 0) {
printers.forEach(printer => {
const option = document.createElement('option');
option.value = printer.id;
option.textContent = `${printer.name} (${printer.location || printer.model || 'Unbekanntes Modell'}) - Status unbekannt`;
select.appendChild(option);
});
showFlashMessage(`${printers.length} Drucker geladen (Status unbekannt)`, 'warning');
} else {
select.innerHTML = '<option value="">Keine Drucker verfügbar</option>';
select.disabled = true;
showFlashMessage('Keine Drucker in der Datenbank gefunden', 'error');
}
return;
}
availablePrinters.forEach(printer => {
const option = document.createElement('option');
option.value = printer.id;
option.textContent = `${printer.name} (${printer.location})`;
// Status-Indikator hinzufügen
const statusText = printer.status === 'available' ? '✅ Verfügbar' : '⚠️ Status unbekannt';
const location = printer.location || printer.model || 'Unbekanntes Modell';
option.textContent = `${printer.name} (${location}) - ${statusText}`;
select.appendChild(option);
});
showFlashMessage(`${availablePrinters.length} verfügbare Drucker geladen`, 'success');
} catch (error) {
console.error('Error loading printers:', error);
showFlashMessage('Fehler beim Laden der Drucker', 'error');