()
| 33 | } |
| 34 | |
| 35 | export function showStatisticsModal() { |
| 36 | const stats = calculateStatistics(); |
| 37 | |
| 38 | document.getElementById('stat-total-connections').textContent = stats.totalConnections; |
| 39 | document.getElementById('stat-active-connections').textContent = stats.activeConnections; |
| 40 | document.getElementById('stat-total-messages').textContent = stats.totalMessages; |
| 41 | document.getElementById('stat-avg-messages').textContent = stats.avgMessages; |
| 42 | |
| 43 | const statsConnectionList = document.getElementById('stats-connection-list'); |
| 44 | |
| 45 | if (stats.connections.length === 0) { |
| 46 | statsConnectionList.innerHTML = '<div style="text-align: center; color: var(--text-muted); padding: 20px;">暂无连接数据</div>'; |
| 47 | } else { |
| 48 | statsConnectionList.innerHTML = stats.connections.map(conn => ` |
| 49 | <div class="stats-connection-item"> |
| 50 | <div class="stats-connection-header"> |
| 51 | <div class="stats-connection-url" title="${escapeHtml(conn.url)}">${escapeHtml(getUrlPath(conn.url))}</div> |
| 52 | <span class="stats-connection-status status-${conn.status}">${getStatusText(conn.status)}</span> |
| 53 | </div> |
| 54 | <div class="stats-connection-details"> |
| 55 | <div class="stats-detail-item"> |
| 56 | <span class="stats-detail-label">消息数</span> |
| 57 | <span class="stats-detail-value">${conn.messageCount}</span> |
| 58 | </div> |
| 59 | <div class="stats-detail-item"> |
| 60 | <span class="stats-detail-label">持续时间</span> |
| 61 | <span class="stats-detail-value">${formatDuration(conn.duration)}</span> |
| 62 | </div> |
| 63 | <div class="stats-detail-item"> |
| 64 | <span class="stats-detail-label">ID</span> |
| 65 | <span class="stats-detail-value">${conn.id.substring(0, 8)}...</span> |
| 66 | </div> |
| 67 | </div> |
| 68 | </div> |
| 69 | `).join(''); |
| 70 | } |
| 71 | |
| 72 | elements.statsModal.style.display = 'flex'; |
| 73 | } |
| 74 | |
| 75 | export function closeStatisticsModal() { |
| 76 | elements.statsModal.style.display = 'none'; |
nothing calls this directly
no test coverage detected