release: 0.2.2
This commit is contained in:
@ -95,6 +95,30 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- System Information Section -->
|
||||
<section id="systemSection" class="panel-section hidden">
|
||||
<h3><i data-lucide="monitor"></i> System Information</h3>
|
||||
<div class="metrics" id="systemMetrics">
|
||||
<div class="metric-card" id="metricCpu">
|
||||
<div class="label"><i data-lucide="cpu"></i> CPU</div>
|
||||
<div class="value">-</div>
|
||||
</div>
|
||||
<div class="metric-card" id="metricRam">
|
||||
<div class="label"><i data-lucide="memory-stick"></i> RAM</div>
|
||||
<div class="value">-</div>
|
||||
</div>
|
||||
<div class="metric-card" id="metricGpu">
|
||||
<div class="label"><i data-lucide="monitor"></i> GPU</div>
|
||||
<div class="value">-</div>
|
||||
</div>
|
||||
<div class="metric-card" id="metricNet">
|
||||
<div class="label"><i data-lucide="network"></i> Netzwerk</div>
|
||||
<div class="value">-</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-muted" style="font-size: 0.75rem; margin-top: 0.5rem;">Aktualisierung alle 5 Sekunden.</div>
|
||||
</section>
|
||||
|
||||
<!-- User Management Section -->
|
||||
<section id="userSection" class="panel-section hidden">
|
||||
<h3><i data-lucide="users"></i> Nutzerverwaltung</h3>
|
||||
@ -326,14 +350,24 @@
|
||||
showApp();
|
||||
document.getElementById('userSection').classList.remove('hidden');
|
||||
document.getElementById('updateSection').classList.remove('hidden');
|
||||
document.getElementById('systemSection').classList.remove('hidden');
|
||||
await refreshUsers();
|
||||
await refreshUpdateStatus();
|
||||
await refreshSystemMetrics();
|
||||
if (!window.systemMetricsTimer) {
|
||||
window.systemMetricsTimer = setInterval(refreshSystemMetrics, 5000);
|
||||
}
|
||||
return true;
|
||||
} catch (err) {
|
||||
document.getElementById('currentUser').textContent = 'Nicht angemeldet';
|
||||
showLanding();
|
||||
document.getElementById('userSection').classList.add('hidden');
|
||||
document.getElementById('updateSection').classList.add('hidden');
|
||||
document.getElementById('systemSection').classList.add('hidden');
|
||||
if (window.systemMetricsTimer) {
|
||||
clearInterval(window.systemMetricsTimer);
|
||||
window.systemMetricsTimer = null;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -513,6 +547,29 @@
|
||||
}
|
||||
}
|
||||
|
||||
async function refreshSystemMetrics() {
|
||||
try {
|
||||
const data = await api('/system/metrics');
|
||||
document.querySelector('#metricCpu .value').textContent = `${data.cpu_percent.toFixed(1)}%`;
|
||||
const ramGb = data.ram_total_mb / 1024.0;
|
||||
document.querySelector('#metricRam .value').textContent = `${data.ram_used_percent.toFixed(1)}% (${ramGb.toFixed(1)} GB)`;
|
||||
if (data.gpu_present && data.gpu_vram_total_mb) {
|
||||
const gpuGb = data.gpu_vram_total_mb / 1024.0;
|
||||
const gpuPct = data.gpu_vram_used_percent ?? 0;
|
||||
document.querySelector('#metricGpu .value').textContent = `${gpuPct.toFixed(1)}% (${gpuGb.toFixed(1)} GB)`;
|
||||
} else {
|
||||
document.querySelector('#metricGpu .value').textContent = 'Nicht verfuegbar';
|
||||
}
|
||||
document.querySelector('#metricNet .value').textContent = `${data.net_rx_mbps.toFixed(1)} / ${data.net_tx_mbps.toFixed(1)} Mbps`;
|
||||
lucide.createIcons();
|
||||
} catch (err) {
|
||||
document.querySelector('#metricCpu .value').textContent = 'Fehler';
|
||||
document.querySelector('#metricRam .value').textContent = 'Fehler';
|
||||
document.querySelector('#metricGpu .value').textContent = 'Fehler';
|
||||
document.querySelector('#metricNet .value').textContent = 'Fehler';
|
||||
}
|
||||
}
|
||||
|
||||
// Event listeners
|
||||
document.getElementById('loginForm').addEventListener('submit', async (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
Reference in New Issue
Block a user