yangtb24 commited on
Commit
7b03da8
·
verified ·
1 Parent(s): 9c5947c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -28
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.lastMetrics = new Map(); // Store last metrics for each instance
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.lastMetrics.set(instanceId, data); // Store the received data
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
- for (const [instanceId, lastMetric] of metricsManager.lastMetrics) {
370
- const serverId = instanceId; // instanceId is the same as serverId in this context
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 && lastMetric) {
380
- totalUpload += lastMetric.tx_bps;
381
- totalDownload += lastMetric.rx_bps;
382
- online++;
383
- } else if (!isOnline) {
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`;