Update app.py
Browse files
app.py
CHANGED
|
@@ -242,7 +242,7 @@ htmlTemplate = f"""
|
|
| 242 |
this.servers = new Map();
|
| 243 |
this.instanceOwners = new Map();
|
| 244 |
this.spaceIds = new Map();
|
| 245 |
-
this.
|
| 246 |
}}
|
| 247 |
|
| 248 |
async connect(instanceId, username) {{
|
|
@@ -257,7 +257,7 @@ htmlTemplate = f"""
|
|
| 257 |
eventSource.addEventListener("metric", (event) => {{
|
| 258 |
try {{
|
| 259 |
const data = JSON.parse(event.data);
|
| 260 |
-
this.
|
| 261 |
updateServerCard(data, instanceId);
|
| 262 |
}} catch (error) {{
|
| 263 |
console.error(`解析数据失败 (${{instanceId}}):`, error);
|
|
@@ -280,6 +280,10 @@ htmlTemplate = f"""
|
|
| 280 |
this.eventSources.forEach(es => es.close());
|
| 281 |
this.eventSources.clear();
|
| 282 |
}}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 283 |
}}
|
| 284 |
|
| 285 |
const metricsManager = new MetricsManager();
|
|
@@ -366,41 +370,26 @@ htmlTemplate = f"""
|
|
| 366 |
let totalUpload = 0;
|
| 367 |
let totalDownload = 0;
|
| 368 |
|
| 369 |
-
|
| 370 |
-
const
|
| 371 |
const serverCard = document.getElementById(`server-${serverId}`);
|
| 372 |
|
| 373 |
if (serverCard) {
|
| 374 |
-
const lastSeen = servers.get(serverId);
|
| 375 |
-
const isOnline = lastSeen && (now - lastSeen) < 10000;
|
| 376 |
const statusDot = serverCard.querySelector('.status-dot');
|
| 377 |
statusDot.className = `status-dot status-${isOnline ? 'online' : 'offline'}`;
|
| 378 |
|
| 379 |
-
if (isOnline
|
| 380 |
-
|
| 381 |
-
|
| 382 |
-
|
| 383 |
-
|
| 384 |
-
offline++;
|
| 385 |
-
}
|
| 386 |
-
}
|
| 387 |
-
}
|
| 388 |
-
|
| 389 |
-
// Count servers that might not have metrics yet (newly added)
|
| 390 |
-
let totalServers = servers.size;
|
| 391 |
-
for (let serverId of servers.keys()) {
|
| 392 |
-
if (!metricsManager.lastMetrics.has(serverId)) {
|
| 393 |
-
const lastSeen = servers.get(serverId);
|
| 394 |
-
if (lastSeen && (now-lastSeen) < 10000){
|
| 395 |
-
online++;
|
| 396 |
-
} else {
|
| 397 |
-
offline++;
|
| 398 |
}
|
| 399 |
-
|
| 400 |
}
|
|
|
|
|
|
|
| 401 |
|
| 402 |
-
|
| 403 |
-
document.getElementById('totalServers').textContent = totalServers;
|
| 404 |
document.getElementById('onlineServers').textContent = online;
|
| 405 |
document.getElementById('offlineServers').textContent = offline;
|
| 406 |
document.getElementById('totalUpload').textContent = `${formatBytes(totalUpload)}/s`;
|
|
|
|
| 242 |
this.servers = new Map();
|
| 243 |
this.instanceOwners = new Map();
|
| 244 |
this.spaceIds = new Map();
|
| 245 |
+
this.lastData = new Map(); // Store last received data
|
| 246 |
}}
|
| 247 |
|
| 248 |
async connect(instanceId, username) {{
|
|
|
|
| 257 |
eventSource.addEventListener("metric", (event) => {{
|
| 258 |
try {{
|
| 259 |
const data = JSON.parse(event.data);
|
| 260 |
+
this.lastData.set(instanceId, data); // Store the data
|
| 261 |
updateServerCard(data, instanceId);
|
| 262 |
}} catch (error) {{
|
| 263 |
console.error(`解析数据失败 (${{instanceId}}):`, error);
|
|
|
|
| 280 |
this.eventSources.forEach(es => es.close());
|
| 281 |
this.eventSources.clear();
|
| 282 |
}}
|
| 283 |
+
|
| 284 |
+
getLastData(instanceId) {{
|
| 285 |
+
return this.lastData.get(instanceId);
|
| 286 |
+
}}
|
| 287 |
}}
|
| 288 |
|
| 289 |
const metricsManager = new MetricsManager();
|
|
|
|
| 370 |
let totalUpload = 0;
|
| 371 |
let totalDownload = 0;
|
| 372 |
|
| 373 |
+
servers.forEach((lastSeen, serverId) => {
|
| 374 |
+
const isOnline = (now - lastSeen) < 10000;
|
| 375 |
const serverCard = document.getElementById(`server-${serverId}`);
|
| 376 |
|
| 377 |
if (serverCard) {
|
|
|
|
|
|
|
| 378 |
const statusDot = serverCard.querySelector('.status-dot');
|
| 379 |
statusDot.className = `status-dot status-${isOnline ? 'online' : 'offline'}`;
|
| 380 |
|
| 381 |
+
if (isOnline) {
|
| 382 |
+
const lastData = metricsManager.getLastData(serverId.split(" ")[0]); // Use the correct instanceId
|
| 383 |
+
if(lastData) {
|
| 384 |
+
totalUpload += lastData.tx_bps;
|
| 385 |
+
totalDownload += lastData.rx_bps;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 386 |
}
|
| 387 |
+
}
|
| 388 |
}
|
| 389 |
+
isOnline ? online++ : offline++;
|
| 390 |
+
});
|
| 391 |
|
| 392 |
+
document.getElementById('totalServers').textContent = servers.size;
|
|
|
|
| 393 |
document.getElementById('onlineServers').textContent = online;
|
| 394 |
document.getElementById('offlineServers').textContent = offline;
|
| 395 |
document.getElementById('totalUpload').textContent = `${formatBytes(totalUpload)}/s`;
|