ECharts / EvilCharts

· Padrão Frontend
Juan Kalleo
Juan Kalleo
Senior Fullstack
This page hasn't been translated to English yet — showing the original Portuguese content.

O que é

echarts é o motor de gráfico. EvilCharts, neste projeto, é a camada React local em shared/ui/graficos/evilcharts, com API de composição parecida com os exemplos de <EChartsLineChart.Line> e <EChartsRadarChart.Radar>.

Por que essa

O projeto precisava de gráficos sem puxar MUI X Charts e sem criar outro design system. ECharts fica só como motor de canvas; o acabamento visual continua controlado por Tailwind e tokens DaisyUI. Leitura de apoio: documentação oficial do Apache ECharts — por que um motor de canvas mantém o tema do projeto em vez de puxar um design system de gráfico.

Versão

^6.1.0 (package.json).

Como importar

import { EChartsLineChart, EChartsRadarChart, type ChartConfig } from "@/shared/ui";

Exemplo real

Relatório de usuários:

const chartConfig = {
  usuarios: {
    label: "Usuários",
    colors: { light: ["#2563eb"], dark: ["#60a5fa"] },
  },
  media: {
    label: "Média por tipo",
    colors: { light: ["#059669"], dark: ["#34d399"] },
  },
} satisfies ChartConfig;

<EChartsLineChart data={data} config={chartConfig} className="h-full w-full p-4" xDataKey="tipo">
  <EChartsLineChart.XAxis dataKey="tipo" tickFormatter={textoCurto} />
  <EChartsLineChart.Brush formatLabel={textoCurto} />
  <EChartsLineChart.Legend isClickable />
  <EChartsLineChart.Tooltip />
  <EChartsLineChart.Line dataKey="usuarios" strokeVariant="solid" isClickable>
    <EChartsLineChart.Dot variant="border" />
    <EChartsLineChart.ActiveDot variant="colored-border" />
  </EChartsLineChart.Line>
</EChartsLineChart>

Convenção do projeto

Wrapper de gráfico fica em shared/ui/graficos; componente que prepara dado de um relatório fica na feature do relatório. O relatório de usuários, por exemplo, transforma RelatorioUsuariosKpis em dados de linha/radar dentro de features/relatorios/usuarios/components/.