feat: real-time WebSocket metrics broadcaster and UI updates
- New metrics_broadcaster service (410 lines) — background broadcaster pushing CPU/RAM/disk/network stats to subscribed WebSocket clients - WebSocket protocol extended: subscribe/unsubscribe channels, get_rrd/get_node_rrd requests with request_id - main.py: metrics broadcaster started in lifespan, WS message dispatcher - websocket_manager.py: subscription map support - templates: dashboard, instance_detail, proxmox_server_detail, proxmox_vms, workspaces — real-time charts and UI updates - auth.py, servers.py, settings.py: minor fixes
This commit is contained in:
@@ -277,12 +277,6 @@
|
||||
<h2><i class="fa-solid fa-gear"></i> {{ t('panel_settings') }}</h2>
|
||||
|
||||
<form id="panel-form" class="settings-form">
|
||||
<div class="form-group">
|
||||
<label for="refresh_interval">{{ t('refresh_interval_label') }}</label>
|
||||
<input type="number" id="refresh_interval" min="1" max="60" value="5">
|
||||
<small>{{ t('refresh_interval_help') }}</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="log_retention_days">{{ t('log_retention_label') }}</label>
|
||||
<input type="number" id="log_retention_days" min="1" max="365" value="30">
|
||||
@@ -1222,7 +1216,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
const oldLang = panelSettings ? panelSettings.language : 'ru';
|
||||
|
||||
const data = {
|
||||
refresh_interval: parseInt(document.getElementById('refresh_interval').value),
|
||||
log_retention_days: parseInt(document.getElementById('log_retention_days').value),
|
||||
language: currentLang
|
||||
};
|
||||
@@ -1398,7 +1391,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
displayPanelInfo(settings);
|
||||
|
||||
// Fill form (only for admins)
|
||||
document.getElementById('refresh_interval').value = settings.refresh_interval;
|
||||
document.getElementById('log_retention_days').value = settings.log_retention_days;
|
||||
document.getElementById('language').value = settings.language || 'ru';
|
||||
}
|
||||
@@ -1412,10 +1404,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
}
|
||||
|
||||
panelInfo.innerHTML = `
|
||||
<div class="info-item">
|
||||
<label>${t('refresh_interval')}</label>
|
||||
<div class="value">${settings.refresh_interval} ${t('sec')}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<label>${t('log_retention_days')}</label>
|
||||
<div class="value">${settings.log_retention_days} ${t('days')}</div>
|
||||
|
||||
Reference in New Issue
Block a user