JavaScript
Tema 9 · Dashboards per a l'enginyeria
Introducció
Un dashboard (panell de control) és una interfície que agrupa indicadors clau (KPIs), gràfics i dades en temps real per facilitar la presa de decisions. En enginyeria, un dashboard pot mostrar l'estat de màquines, consums energètics, temperatures, alarmes i qualsevol dada rellevant d'un sistema monitoritzat.
Objectius
- Integrar HTML, CSS, JavaScript, Chart.js i LocalStorage en una sola aplicació
- Crear targetes d'indicadors amb actualització dinàmica
- Connectar un dashboard a una API per obtenir dades en temps real
- Aplicar bones pràctiques de disseny responsive i accessibilitat bàsica
Estructura d'un dashboard
Organització típica d'un panell de control amb HTML i CSS Grid:
<div class="dashboard">
<!-- Targetes KPI -->
<div class="kpi" id="kpi-temp">
<i class="fas fa-thermometer-half"></i>
<span class="valor">23.5</span>
<span class="etiqueta">Temperatura (°C)</span>
</div>
<div class="kpi" id="kpi-pressio">...</div>
<div class="kpi" id="kpi-potencia">...</div>
<div class="kpi" id="kpi-consum">...</div>
<!-- Gràfics -->
<div class="graf"><canvas id="chart-temp"></canvas></div>
<div class="graf"><canvas id="chart-consum"></canvas></div>
<!-- Taula d'alarmes -->
<div class="taula">...</div>
</div>
Actualització dinàmica amb setInterval
Simular dades de sensors que s'actualitzen cada 3 segons:
function actualitzarKPIs() {
// Simular noves lectures
const temp = (20 + Math.random() * 10).toFixed(1);
const pressio = (1010 + Math.random() * 10).toFixed(0);
const potencia = (1200 + Math.random() * 500).toFixed(0);
document.getElementById('kpi-temp').querySelector('.valor').textContent = temp;
document.getElementById('kpi-pressio').querySelector('.valor').textContent = pressio;
document.getElementById('kpi-potencia').querySelector('.valor').textContent = potencia;
// Canviar colors segons llindars
const tempEl = document.getElementById('kpi-temp');
if (parseFloat(temp) > 27) tempEl.style.borderLeftColor = 'red';
else tempEl.style.borderLeftColor = 'green';
}
// Actualitzar cada 3 segons
setInterval(actualitzarKPIs, 3000);
actualitzarKPIs(); // primera crida
Exercicis
- Crea un dashboard amb 4 targetes KPI (temperatura, pressió, cabal, nivell) que s'actualitzin cada 2 segons amb valors aleatoris simulats.
- Afegeix un gràfic de línies que mostri l'evolució de la temperatura durant els últims 10 punts de dades.
- Implementa un sistema d'alarmes visuals: si un KPI supera un llindar, la targeta ha de parpellejar o canviar de color.
Mini Projecte – Dashboard de supervisió industrial
Construeix un panell de control complet per supervisar una planta de producció:
- 4 targetes KPI amb indicadors clau (temperatura, pressió, velocitat de producció, consum elèctric).
- Un gràfic de línies que mostri l'històric de temperatura (mínim 10 punts, actualitzant-se cada 2 segons).
- Un gràfic de barres amb el consum diari simulat dels últims 7 dies.
- Una taula d'alarmes que registri automàticament qualsevol valor fora de rang (timestamp + descripció).
- Utilitza CSS Grid per a la disposició, Chart.js per als gràfics i LocalStorage per conservar les alarmes entre sessions.
Tot el codi ha d'estar en un únic fitxer HTML (sense dependències de servidor).