Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions backend/src/main/resources/static/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ <h1>SysAdmin Monitor Dashboard</h1>
<select id="host-select">
<option value="">Todas las maquinas</option>
</select>
<select id="intervalo-select">
<option value="2000">2s</option>
<option value="5000">5s</option>
<option value="10000">10s</option>
<option value="30000">30s</option>
</select>
<span id="status">Conectando...</span>
</div>
</header>
Expand Down
41 changes: 34 additions & 7 deletions backend/src/main/resources/static/js/dashboard.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
const API_BASE = "/api/metrics";
const INTERVALO = 5000;
const INTERVALO_POR_DEFECTO = 5000;

const statusEl = document.getElementById("status");
const cpuValueEl = document.getElementById("cpu-value");
const ramValueEl = document.getElementById("ram-value");
const diskValueEl = document.getElementById("disk-value");
const hostSelect = document.getElementById("host-select");
const intervaloSelect = document.getElementById("intervalo-select");

let intervaloId = null;

function crearConfig(label, color) {
return {
Expand Down Expand Up @@ -144,15 +147,39 @@ async function fetchMetricas() {
}
}

function leerIntervaloGuardado() {
const guardado = parseInt(localStorage.getItem("intervalo"), 10);
// si no hay nada guardado o es raro nos quedamos con el de por defecto
if (!guardado || guardado < 1000) {
return INTERVALO_POR_DEFECTO;
}
return guardado;
}

function arrancarRefresco(intervalo) {
if (intervaloId !== null) {
clearInterval(intervaloId);
}
intervaloId = setInterval(() => {
cargarHosts();
fetchMetricas();
}, intervalo);
}

// cuando cambia el selector recargamos los datos
hostSelect.addEventListener("change", fetchMetricas);

// cambiamos cada cuanto se refresca y lo guardamos para la proxima visita
intervaloSelect.addEventListener("change", () => {
const intervalo = parseInt(intervaloSelect.value, 10);
localStorage.setItem("intervalo", intervalo);
arrancarRefresco(intervalo);
fetchMetricas();
});

// primera carga
const intervaloInicial = leerIntervaloGuardado();
intervaloSelect.value = String(intervaloInicial);
cargarHosts();
fetchMetricas();

// actualizamos cada 5 segundos
setInterval(() => {
cargarHosts();
fetchMetricas();
}, INTERVALO);
arrancarRefresco(intervaloInicial);
Loading