Visualização de Dados para Plataforma de Gerenciamento de Equipamentos usando ECharts

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.

Tags: html5 CSS3 echarts dashboards visualização-de-dados

Publicado em 6-14 04:03 por Thomas