@softros/agulhao-charts-react 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -37,7 +37,7 @@ export function MinhaTela() {
37
37
  }
38
38
  ```
39
39
 
40
- O componente aceita qualquer `DefinicaoGrafico` suportada pelo pacote `core`, incluindo `barra`, `linha`, `area`, `pizza`, `gauge` e `mapa`.
40
+ O componente aceita qualquer `DefinicaoGrafico` suportada pelo pacote `core`, incluindo `barra`, `linha`, `area`, `pizza`, `gauge`, `mapa` e `ranking`.
41
41
 
42
42
  Exemplo com cor por série:
43
43
 
@@ -98,6 +98,64 @@ const graficoGauge: DefinicaoGrafico = {
98
98
  }
99
99
  ```
100
100
 
101
+ Exemplo de ranking sem ECharts:
102
+
103
+ ```tsx
104
+ const graficoRanking: DefinicaoGrafico = {
105
+ tipo: 'ranking',
106
+ titulo: 'Ranking de vendedores',
107
+ dataset: {
108
+ linhas: [
109
+ { nome: 'Bruno', total: 240 },
110
+ { nome: 'Carla', total: 180 },
111
+ { nome: 'Ana', total: 120 },
112
+ ],
113
+ },
114
+ mapeamento: {
115
+ rotulo: 'nome',
116
+ valor: 'total',
117
+ },
118
+ opcoes: {
119
+ ranking: {
120
+ limite: 10,
121
+ mostrarPodio: true,
122
+ },
123
+ },
124
+ }
125
+ ```
126
+
127
+ ## Mapa padrão do Brasil
128
+
129
+ Para gráficos `tipo: 'mapa'` com `opcoes.mapa.nome: 'BR'`, o componente registra automaticamente o GeoJSON padrão dos estados brasileiros fornecido pelo `core`.
130
+
131
+ ```tsx
132
+ const graficoMapa: DefinicaoGrafico = {
133
+ tipo: 'mapa',
134
+ titulo: 'Indicador por estado',
135
+ dataset: {
136
+ linhas: [
137
+ { estado: 'São Paulo', valor: 46649 },
138
+ { estado: 'Minas Gerais', valor: 21412 },
139
+ ],
140
+ },
141
+ mapeamento: {
142
+ rotulo: 'estado',
143
+ valor: 'valor',
144
+ },
145
+ opcoes: {
146
+ mostrarLegenda: false,
147
+ mapa: {
148
+ nome: 'BR',
149
+ tamanho: '82%',
150
+ centro: {
151
+ x: '43%',
152
+ y: '55%',
153
+ },
154
+ },
155
+ },
156
+ }
157
+ ```
158
+
101
159
  ## Props
102
160
 
103
161
  ```ts
@@ -110,6 +168,7 @@ type AgulhaoChartProps = {
110
168
  notMerge?: boolean
111
169
  lazyUpdate?: boolean
112
170
  onEvents?: Record<string, (params: unknown) => void>
171
+ echarts?: unknown
113
172
  }
114
173
  ```
115
174
 
@@ -9,9 +9,10 @@ export type AgulhaoChartProps = {
9
9
  notMerge?: boolean;
10
10
  lazyUpdate?: boolean;
11
11
  onEvents?: Record<string, (params: unknown) => void>;
12
+ echarts?: unknown;
12
13
  };
13
14
  /**
14
15
  * Componente do Agulhao Charts.
15
16
  */
16
- export declare function AgulhaoChart({ grafico, largura, altura, className, style, notMerge, lazyUpdate, onEvents }: AgulhaoChartProps): import("react").JSX.Element;
17
+ export declare function AgulhaoChart({ grafico, largura, altura, className, style, notMerge, lazyUpdate, onEvents, echarts: echartsCustomizado, }: AgulhaoChartProps): import("react").JSX.Element;
17
18
  //# sourceMappingURL=AgulhaoChart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgulhaoChart.d.ts","sourceRoot":"","sources":["../src/AgulhaoChart.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAEpE,MAAM,MAAM,iBAAiB,GAAG;IAC5B,OAAO,EAAE,gBAAgB,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC,CAAA;CACvD,CAAA;AAaD;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,OAAgB,EAAE,MAAY,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,iBAAiB,+BAY5I"}
1
+ {"version":3,"file":"AgulhaoChart.d.ts","sourceRoot":"","sources":["../src/AgulhaoChart.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAGpE,MAAM,MAAM,iBAAiB,GAAG;IAC5B,OAAO,EAAE,gBAAgB,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAcD;;GAEG;AACH,wBAAgB,YAAY,CAAC,EACzB,OAAO,EACP,OAAgB,EAChB,MAAY,EACZ,SAAS,EACT,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,OAAO,EAAE,kBAAkB,GAC9B,EAAE,iBAAiB,+BAiCnB"}
@@ -1,19 +1,34 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as ReactEChartsModule from 'echarts-for-react';
3
3
  import { useMemo } from 'react';
4
- import { criarOpcaoECharts } from '@softros/agulhao-charts-core';
4
+ import { CSS_RANKING_GRAFICO, criarHtmlRankingGrafico, criarOpcaoECharts } from '@softros/agulhao-charts-core';
5
+ import { registrarMapasPadrao } from './registrarMapasPadrao.js';
5
6
  const ReactECharts = (ReactEChartsModule.default ?? ReactEChartsModule);
6
7
  /**
7
8
  * Componente do Agulhao Charts.
8
9
  */
9
- export function AgulhaoChart({ grafico, largura = '100%', altura = 400, className, style, notMerge, lazyUpdate, onEvents }) {
10
- const option = useMemo(() => criarOpcaoECharts(grafico), [grafico]);
10
+ export function AgulhaoChart({ grafico, largura = '100%', altura = 400, className, style, notMerge, lazyUpdate, onEvents, echarts: echartsCustomizado, }) {
11
+ const option = useMemo(() => {
12
+ if (grafico.tipo === 'ranking') {
13
+ return undefined;
14
+ }
15
+ registrarMapasPadrao(grafico, echartsCustomizado);
16
+ return criarOpcaoECharts(grafico);
17
+ }, [echartsCustomizado, grafico]);
11
18
  const chartStyle = useMemo(() => ({
12
19
  width: formatarMedidaCss(largura),
13
20
  height: formatarMedidaCss(altura),
14
21
  ...style,
15
22
  }), [altura, largura, style]);
16
- return _jsx(ReactECharts, { option: option, className: className, style: chartStyle, notMerge: notMerge, lazyUpdate: lazyUpdate, onEvents: onEvents });
23
+ if (grafico.tipo === 'ranking') {
24
+ return _jsx(RankingChart, { grafico: grafico, className: className, style: chartStyle });
25
+ }
26
+ return (_jsx(ReactECharts, { echarts: echartsCustomizado, option: option, className: className, style: chartStyle, notMerge: notMerge, lazyUpdate: lazyUpdate, onEvents: onEvents }));
27
+ }
28
+ function RankingChart({ grafico, className, style }) {
29
+ const html = useMemo(() => criarHtmlRankingGrafico(grafico), [grafico]);
30
+ const classeRanking = className ? `agulhao-ranking ${className}` : 'agulhao-ranking';
31
+ return (_jsxs(_Fragment, { children: [_jsx("style", { children: CSS_RANKING_GRAFICO }), _jsx("section", { className: classeRanking, style: style, dangerouslySetInnerHTML: { __html: html } })] }));
17
32
  }
18
33
  /**
19
34
  * Converte medidas numericas para pixels e preserva medidas CSS textuais.
@@ -1 +1 @@
1
- {"version":3,"file":"AgulhaoChart.js","sourceRoot":"","sources":["../src/AgulhaoChart.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,kBAAkB,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAwBhE,MAAM,YAAY,GAAG,CAAC,kBAAkB,CAAC,OAAO,IAAI,kBAAkB,CAAgD,CAAA;AAEtH;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAqB;IACzI,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IACnE,MAAM,UAAU,GAAG,OAAO,CACtB,GAAG,EAAE,CAAC,CAAC;QACH,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC;QACjC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC;QACjC,GAAG,KAAK;KACX,CAAC,EACF,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAC3B,CAAA;IAED,OAAO,KAAC,YAAY,IAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAAA;AACpJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAsB;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,KAAK,IAAI,CAAA;IACvB,CAAC;IAED,OAAO,KAAK,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"AgulhaoChart.js","sourceRoot":"","sources":["../src/AgulhaoChart.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,kBAAkB,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAG9G,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAwBhE,MAAM,YAAY,GAAG,CAAC,kBAAkB,CAAC,OAAO,IAAI,kBAAkB,CAAgD,CAAA;AAEtH;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,EACzB,OAAO,EACP,OAAO,GAAG,MAAM,EAChB,MAAM,GAAG,GAAG,EACZ,SAAS,EACT,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,OAAO,EAAE,kBAAkB,GACX;IAChB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QACxB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAA;QACpB,CAAC;QAED,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAA;QACjD,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC,EAAE,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAA;IACjC,MAAM,UAAU,GAAG,OAAO,CACtB,GAAG,EAAE,CAAC,CAAC;QACH,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC;QACjC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC;QACjC,GAAG,KAAK;KACX,CAAC,EACF,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAC3B,CAAA;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,GAAI,CAAA;IACtF,CAAC;IAED,OAAO,CACH,KAAC,YAAY,IACT,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,GACpB,CACL,CAAA;AACL,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAA4E;IACzH,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IACvE,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAA;IAEpF,OAAO,CACH,8BACI,0BAAQ,mBAAmB,GAAS,EACpC,kBAAS,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAI,IAC/F,CACN,CAAA;AACL,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAsB;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,KAAK,IAAI,CAAA;IACvB,CAAC;IAED,OAAO,KAAK,CAAA;AAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DefinicaoGrafico } from '@softros/agulhao-charts-core';
2
+ export declare function registrarMapasPadrao(grafico: DefinicaoGrafico, echartsCustomizado?: unknown): void;
3
+ //# sourceMappingURL=registrarMapasPadrao.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registrarMapasPadrao.d.ts","sourceRoot":"","sources":["../src/registrarMapasPadrao.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAOpE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,OAAO,GAAG,IAAI,CAclG"}
@@ -0,0 +1,17 @@
1
+ import { createRequire as _createRequire } from "module";
2
+ const __require = _createRequire(import.meta.url);
3
+ const echarts = __require("echarts");
4
+ import { obterGeoJsonMapaBrasil, obterNomeMapa } from '@softros/agulhao-charts-core';
5
+ export function registrarMapasPadrao(grafico, echartsCustomizado) {
6
+ if (obterNomeMapa(grafico) !== 'BR') {
7
+ return;
8
+ }
9
+ const geoJson = obterGeoJsonMapaBrasil();
10
+ const registradorCustomizado = echartsCustomizado?.registerMap;
11
+ if (registradorCustomizado) {
12
+ registradorCustomizado('BR', geoJson);
13
+ return;
14
+ }
15
+ echarts.registerMap('BR', geoJson);
16
+ }
17
+ //# sourceMappingURL=registrarMapasPadrao.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registrarMapasPadrao.js","sourceRoot":"","sources":["../src/registrarMapasPadrao.ts"],"names":[],"mappings":";;AAAA,qCAAmC;AACnC,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAQpF,MAAM,UAAU,oBAAoB,CAAC,OAAyB,EAAE,kBAA4B;IACxF,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,OAAM;IACV,CAAC;IAED,MAAM,OAAO,GAAG,sBAAsB,EAAwB,CAAA;IAC9D,MAAM,sBAAsB,GAAI,kBAA2D,EAAE,WAAW,CAAA;IAExG,IAAI,sBAAsB,EAAE,CAAC;QACzB,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACrC,OAAM;IACV,CAAC;IAED,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACtC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softros/agulhao-charts-react",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "Componente React para renderizar graficos a partir da definicao comum do Agulhao Charts.",
5
5
  "homepage": "https://github.com/SOFTROS-SISTEMAS/agulhao-charts",
6
6
  "license": "Apache-2.0",
@@ -32,7 +32,7 @@
32
32
  "directory": "packages/react"
33
33
  },
34
34
  "dependencies": {
35
- "@softros/agulhao-charts-core": "^1.0.4",
35
+ "@softros/agulhao-charts-core": "^1.0.6",
36
36
  "echarts-for-react": "^3.0.2"
37
37
  },
38
38
  "peerDependencies": {