Auto-Status: initial ping on load and 30s interval; README updated
This commit is contained in:
@@ -106,9 +106,9 @@ Falls weder Kommandozeilenparameter noch Umgebungsvariable gesetzt sind, wird Po
|
|||||||
- Das System sendet automatisch ein Wake-on-LAN Paket
|
- Das System sendet automatisch ein Wake-on-LAN Paket
|
||||||
|
|
||||||
### Online-Status prüfen (Ping)
|
### Online-Status prüfen (Ping)
|
||||||
- Klicken Sie auf den Button "Status aktualisieren" in der Tabelle
|
- Beim Laden der Seite wird automatisch der Status abgefragt
|
||||||
- Die Online/Offline-Badges werden pro Gerät aktualisiert
|
- Alle 30 Sekunden wird der Status automatisch aktualisiert
|
||||||
- Optional kann ein automatisches Intervall ergänzt werden (siehe Entwicklung)
|
- Zusätzlich können Sie manuell über den Button "Status aktualisieren" aktualisieren
|
||||||
|
|
||||||
### PC löschen
|
### PC löschen
|
||||||
- Klicken Sie auf den "Löschen"-Button neben dem gewünschten PC
|
- Klicken Sie auf den "Löschen"-Button neben dem gewünschten PC
|
||||||
|
|||||||
@@ -5,12 +5,15 @@ class PCManager {
|
|||||||
this.allPCs = []; // Alle PCs im Speicher
|
this.allPCs = []; // Alle PCs im Speicher
|
||||||
this.filteredPCs = []; // Gefilterte PCs
|
this.filteredPCs = []; // Gefilterte PCs
|
||||||
this.searchTerm = ''; // Aktueller Suchbegriff
|
this.searchTerm = ''; // Aktueller Suchbegriff
|
||||||
|
this.statusTimer = null; // Intervall für Auto-Status
|
||||||
|
this.refreshing = false; // Guard gegen parallele Status-Requests
|
||||||
this.init();
|
this.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
this.loadPCs();
|
this.loadPCs();
|
||||||
this.setupEventListeners();
|
this.setupEventListeners();
|
||||||
|
this.startAutoStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
setupEventListeners() {
|
setupEventListeners() {
|
||||||
@@ -55,6 +58,8 @@ class PCManager {
|
|||||||
this.allPCs = data.pcs;
|
this.allPCs = data.pcs;
|
||||||
this.filteredPCs = [...this.allPCs];
|
this.filteredPCs = [...this.allPCs];
|
||||||
this.displayPCs();
|
this.displayPCs();
|
||||||
|
// Ersten Status direkt nach dem Laden abfragen
|
||||||
|
this.refreshStatus();
|
||||||
} else {
|
} else {
|
||||||
this.showNotification('Fehler', data.message, 'danger');
|
this.showNotification('Fehler', data.message, 'danger');
|
||||||
}
|
}
|
||||||
@@ -63,6 +68,15 @@ class PCManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
startAutoStatus() {
|
||||||
|
if (this.statusTimer) {
|
||||||
|
clearInterval(this.statusTimer);
|
||||||
|
}
|
||||||
|
this.statusTimer = setInterval(() => {
|
||||||
|
this.refreshStatus();
|
||||||
|
}, 30000); // alle 30 Sekunden
|
||||||
|
}
|
||||||
|
|
||||||
searchPCs(searchTerm) {
|
searchPCs(searchTerm) {
|
||||||
this.searchTerm = searchTerm.toLowerCase().trim();
|
this.searchTerm = searchTerm.toLowerCase().trim();
|
||||||
|
|
||||||
@@ -304,6 +318,8 @@ class PCManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async refreshStatus() {
|
async refreshStatus() {
|
||||||
|
if (this.refreshing) return;
|
||||||
|
this.refreshing = true;
|
||||||
try {
|
try {
|
||||||
const response = await fetch('/api/pcs/status');
|
const response = await fetch('/api/pcs/status');
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
@@ -327,6 +343,8 @@ class PCManager {
|
|||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.showNotification('Fehler', 'Fehler beim Aktualisieren des Online-Status', 'danger');
|
this.showNotification('Fehler', 'Fehler beim Aktualisieren des Online-Status', 'danger');
|
||||||
|
} finally {
|
||||||
|
this.refreshing = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user