Files
TurboSu/static/js/components/topbar.js
T

37 lines
1.3 KiB
JavaScript

const Topbar = {
_statusEl: null,
init() {
this._statusEl = document.getElementById('connection-status');
this._statusEl.style.cursor = 'pointer';
this._statusEl.addEventListener('click', () => {
if (!WS.connected) {
WS._reconnectDelay = 500;
WS._connect();
Toast.show('正在重连...', 'info', 1500);
}
});
WS.on('status', (status) => {
this._statusEl.className = `status-indicator ${status}`;
this._statusEl.querySelector('.status-text').textContent =
status === 'connected' ? '已连接' :
status === 'error' ? '连接错误' : '未连接';
});
setInterval(() => this._refreshStatus(), 5000);
},
async _refreshStatus() {
try {
const status = await API.getStatus();
const wsStatus = status.ws_clients > 0 ? 'connected' : 'disconnected';
this._statusEl.className = `status-indicator ${wsStatus}`;
this._statusEl.querySelector('.status-text').textContent =
wsStatus === 'connected' ? `已连接 (${status.ws_clients})` : '未连接';
} catch (e) { console.error(e); }
}
};
window.Topbar = Topbar;