A construção de um painel de controle (dashboard) para uma plataforma de gerenciamento de equipamentos exige uma interface capaz de processar e exibir grandes volumes de métricas operacionais. Utilizando HTML5 em conjunto com a biblioteca Apache ECharts, é possível estruturar uma visualização modular, permitindo o monitoramento simultâneo do status de dispositivos, distribuição de falhas e avaliações de desempenho regional.
A estrutura do documento é segmentada em três colunas principais para otimizar a área útil da tela. O painel esquerdo concentra-se na geolocalização e no status geral da frota. O painel central exibe gráficos analíticos de linha e barras para avaliação temporal e categórica de incidentes. O painel direito apresenta indicadores de ranking e gráficos de radar para diagnóstico avançado.
<div class="dashboard-layout">
<div class="panel-section panel-left">
<div class="map-wrapper" id="dashboard-map-container"></div>
<ul class="equipment-status-metrics">
<li class="metric-item active">65.5% <span class="metric-label">Online</span></li>
<li class="metric-item inactive">10.5% <span class="metric-label">Offline</span></li>
<li class="metric-item maintenance">10.5% <span class="metric-label">Manutenção</span></li>
<li class="metric-item error">9.5% <span class="metric-label">Falha</span></li>
</ul>
</div>
<div class="panel-section panel-center">
<div class="analytics-grid">
<div class="analytics-card">
<h3 class="card-title">Distribuição Temporal de Falhas</h3>
<div class="chart-container" id="fault-timeline-chart"></div>
<ul class="status-legend">
<li><i class="legend-dot normal"></i>Total de Falhas <span>556</span></li>
</ul>
</div>
<div class="analytics-card">
<h3 class="card-title">Categorias de Falhas</h3>
<div class="chart-container" id="fault-category-chart"></div>
</div>
</div>
</div>
<div class="panel-section panel-right">
<div class="card top-card">
<h3 class="card-title">Ranking de Regiões</h3>
<div class="chart-container" id="region-ranking-chart"></div>
</div>
<div class="card bottom-card">
<h3 class="card-title">Análise de Radar de Equipamentos</h3>
<div class="chart-container" id="equipment-radar-chart"></div>
</div>
</div>
</div>
Para a estilização, adota-se um tema escuro, padrão em centros de comando de Big Data, que reduz o cansaço visual e maximiza o contraste dos componentes gráficos. O layout emprega o modelo Flexbox para garantir a proporção de tela de 28% - 44% - 28% entre as colunas, assegurando a organização dos contêineres sem dependência de flutuação (floats). Variáveis CSS nativas são aplicadas para centralizar a gestão da paleta de cores e bordas dos widgets.
:root {
--bg-primary: #051135;
--border-color: #1f2a5e;
--accent-blue: #3b5bdb;
--text-primary: #ffffff;
--status-online: #2ecc71;
--status-offline: #7f8c8d;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body, html {
height: 100%;
width: 100%;
background-color: var(--bg-primary);
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
color: var(--text-primary);
}
.dashboard-layout {
display: flex;
height: 100vh;
padding: 10px;
gap: 10px;
}
.panel-section {
display: flex;
flex-direction: column;
gap: 10px;
}
.panel-left, .panel-right {
flex: 0 0 28%;
}
.panel-center {
flex: 0 0 44%;
}
.card, .analytics-card {
position: relative;
border: 1px solid var(--border-color);
border-radius: 4px;
overflow: hidden;
flex: 1;
display: flex;
flex-direction: column;
}
.card-title {
background-color: var(--accent-blue);
padding: 10px 15px;
font-size: 14px;
border-bottom-right-radius: 6px;
border-bottom-left-radius: 6px;
position: absolute;
top: 0;
left: 5%;
z-index: 10;
}
.chart-container {
flex: 1;
width: 100%;
min-height: 200px;
}
.analytics-grid {
display: flex;
gap: 10px;
flex: 1;
}
.analytics-card:first-child {
border-left: none;
}
.analytics-card:last-child {
border-right: none;
}
.equipment-status-metrics {
display: flex;
position: absolute;
bottom: 12%;
left: 4%;
list-style: none;
width: 90%;
}
.metric-item {
height: 35px;
line-height: 35px;
margin-right: 1%;
text-align: center;
color: var(--text-primary);
}
.metric-item.active { width: 65.5%; border: 1px solid #2ecc71; background: rgba(46, 204, 113, 0.4); }
.metric-item.inactive { width: 10.5%; border: 1px solid #7f8c8d; background: rgba(127, 140, 141, 0.4); }
.metric-item.maintenance { width: 10.5%; border: 1px solid #f1c40f; background: rgba(241, 196, 15, 0.4); }
.metric-item.error { width: 9.5%; border: 1px solid #e74c3c; background: rgba(231, 76, 60, 0.4); }
.status-legend {
position: absolute;
bottom: 10%;
width: 100%;
display: flex;
justify-content: center;
list-style: none;
font-size: 12px;
}
.legend-dot {
display: inline-block;
width: 10px;
height: 10px;
margin-right: 5px;
border-radius: 50%;
}
.legend-dot.normal { background-color: #4f8bf9; }
Os elementos identificados com a classe .chart-container (como fault-timeline-chart e equipment-radar-chart) atuam como nós de renderização (DOM targets) para as instâncias gráficas inicializadas via JavaScript. As listas de status de equipamentos na seção inferior esquerda utilizam cores semânticas aliadas a larguras percentuais dinâmicas para compor um micro-gráfico de barras horizontais. Isso indica visualmente e de forma imediata a proporção de dispositivos ativos, inativos, em manutenção preventiva ou apresentando falhas críticas no ambiente monitorado.