@softros/agulhao-charts-react 1.0.8 → 1.0.10

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.
Files changed (83) hide show
  1. package/README.md +12 -0
  2. package/dist/bancos.d.ts +6 -0
  3. package/dist/bancos.d.ts.map +1 -0
  4. package/dist/bancos.js +169 -0
  5. package/dist/bancos.js.map +1 -0
  6. package/dist/base.css +3 -0
  7. package/dist/chart.d.ts +98 -0
  8. package/dist/chart.d.ts.map +1 -0
  9. package/dist/{AgulhaoChart.js → chart.js} +1 -1
  10. package/dist/chart.js.map +1 -0
  11. package/dist/dashboard/context.d.ts +7 -0
  12. package/dist/dashboard/context.d.ts.map +1 -0
  13. package/dist/dashboard/context.js +9 -0
  14. package/dist/dashboard/context.js.map +1 -0
  15. package/dist/dashboard/dashboard.css +37 -0
  16. package/dist/dashboard/estrutura.d.ts +13 -0
  17. package/dist/dashboard/estrutura.d.ts.map +1 -0
  18. package/dist/dashboard/estrutura.js +26 -0
  19. package/dist/dashboard/estrutura.js.map +1 -0
  20. package/dist/dashboard/index.d.ts +37 -0
  21. package/dist/dashboard/index.d.ts.map +1 -0
  22. package/dist/dashboard/index.js +50 -0
  23. package/dist/dashboard/index.js.map +1 -0
  24. package/dist/dashboard/types.d.ts +37 -0
  25. package/dist/dashboard/types.d.ts.map +1 -0
  26. package/dist/dashboard/types.js +2 -0
  27. package/dist/dashboard/types.js.map +1 -0
  28. package/dist/dashboard/widgets/acompanhamentoPedidos.d.ts +5 -0
  29. package/dist/dashboard/widgets/acompanhamentoPedidos.d.ts.map +1 -0
  30. package/dist/dashboard/widgets/acompanhamentoPedidos.js +94 -0
  31. package/dist/dashboard/widgets/acompanhamentoPedidos.js.map +1 -0
  32. package/dist/dashboard/widgets/calendario.d.ts +5 -0
  33. package/dist/dashboard/widgets/calendario.d.ts.map +1 -0
  34. package/dist/dashboard/widgets/calendario.js +196 -0
  35. package/dist/dashboard/widgets/calendario.js.map +1 -0
  36. package/dist/dashboard/widgets/graficoDespesasMesGrupoPlanoContas.d.ts +5 -0
  37. package/dist/dashboard/widgets/graficoDespesasMesGrupoPlanoContas.d.ts.map +1 -0
  38. package/dist/dashboard/widgets/graficoDespesasMesGrupoPlanoContas.js +94 -0
  39. package/dist/dashboard/widgets/graficoDespesasMesGrupoPlanoContas.js.map +1 -0
  40. package/dist/dashboard/widgets/graficoReceitasMesPlanoContas.d.ts +5 -0
  41. package/dist/dashboard/widgets/graficoReceitasMesPlanoContas.d.ts.map +1 -0
  42. package/dist/dashboard/widgets/graficoReceitasMesPlanoContas.js +94 -0
  43. package/dist/dashboard/widgets/graficoReceitasMesPlanoContas.js.map +1 -0
  44. package/dist/dashboard/widgets/graficoVendasMesTipoLancamento.d.ts +5 -0
  45. package/dist/dashboard/widgets/graficoVendasMesTipoLancamento.d.ts.map +1 -0
  46. package/dist/dashboard/widgets/graficoVendasMesTipoLancamento.js +89 -0
  47. package/dist/dashboard/widgets/graficoVendasMesTipoLancamento.js.map +1 -0
  48. package/dist/dashboard/widgets/graficoVendasUltimos12meses.d.ts +5 -0
  49. package/dist/dashboard/widgets/graficoVendasUltimos12meses.d.ts.map +1 -0
  50. package/dist/dashboard/widgets/graficoVendasUltimos12meses.js +98 -0
  51. package/dist/dashboard/widgets/graficoVendasUltimos12meses.js.map +1 -0
  52. package/dist/dashboard/widgets/index.d.ts +7 -0
  53. package/dist/dashboard/widgets/index.d.ts.map +1 -0
  54. package/dist/dashboard/widgets/index.js +75 -0
  55. package/dist/dashboard/widgets/index.js.map +1 -0
  56. package/dist/dashboard/widgets/indicadoresOrcamentosAprovadosFaturadosEntregues.d.ts +5 -0
  57. package/dist/dashboard/widgets/indicadoresOrcamentosAprovadosFaturadosEntregues.d.ts.map +1 -0
  58. package/dist/dashboard/widgets/indicadoresOrcamentosAprovadosFaturadosEntregues.js +85 -0
  59. package/dist/dashboard/widgets/indicadoresOrcamentosAprovadosFaturadosEntregues.js.map +1 -0
  60. package/dist/dashboard/widgets/indicadoresReceberPagar.d.ts +5 -0
  61. package/dist/dashboard/widgets/indicadoresReceberPagar.d.ts.map +1 -0
  62. package/dist/dashboard/widgets/indicadoresReceberPagar.js +137 -0
  63. package/dist/dashboard/widgets/indicadoresReceberPagar.js.map +1 -0
  64. package/dist/dashboard/widgets/indicadoresSaldoContas.d.ts +5 -0
  65. package/dist/dashboard/widgets/indicadoresSaldoContas.d.ts.map +1 -0
  66. package/dist/dashboard/widgets/indicadoresSaldoContas.js +116 -0
  67. package/dist/dashboard/widgets/indicadoresSaldoContas.js.map +1 -0
  68. package/dist/formatacoes.d.ts +5 -0
  69. package/dist/formatacoes.d.ts.map +1 -0
  70. package/dist/formatacoes.js +33 -0
  71. package/dist/formatacoes.js.map +1 -0
  72. package/dist/index.d.ts +5 -2
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +3 -1
  75. package/dist/index.js.map +1 -1
  76. package/dist/utils.d.ts +9 -0
  77. package/dist/utils.d.ts.map +1 -0
  78. package/dist/utils.js +101 -0
  79. package/dist/utils.js.map +1 -0
  80. package/package.json +7 -4
  81. package/dist/AgulhaoChart.d.ts +0 -18
  82. package/dist/AgulhaoChart.d.ts.map +0 -1
  83. package/dist/AgulhaoChart.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dashboard/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG;IACjC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IACV;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAA;CAClC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACjC,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;CACb,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/dashboard/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { LayoutItem } from 'react-grid-layout';
2
+ import { AgulhaoDashboardWidget } from '../types';
3
+ export declare function AcompanhamentoPedidos(w: AgulhaoDashboardWidget): import("react").JSX.Element;
4
+ export declare const AcompanhamentoPedidosLayout: LayoutItem;
5
+ //# sourceMappingURL=acompanhamentoPedidos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acompanhamentoPedidos.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/acompanhamentoPedidos.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAQjD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,sBAAsB,+BA+E9D;AAWD,eAAO,MAAM,2BAA2B,EAAE,UAUzC,CAAA"}
@@ -0,0 +1,94 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { z } from 'zod';
3
+ import { useEffect, useRef, useState } from 'react';
4
+ import { statusPedidoAgulhao, zodStringToJson } from '../../utils';
5
+ import { AgulhaoChart } from '../../chart';
6
+ import { Estrutura } from '../estrutura';
7
+ import { inteiro, milhares } from '../../formatacoes';
8
+ import { useDashboard } from '../context';
9
+ export function AcompanhamentoPedidos(w) {
10
+ const { atualizaWidget } = useDashboard();
11
+ const [carregando, setCarregando] = useState(false);
12
+ const [dados, setDados] = useState(zodStringToJson(w.conteudo || '{}', schema).data || null);
13
+ const intervalo = useRef(null);
14
+ useEffect(() => {
15
+ if (w.atualizaEmSegundos && w.atualizaEmSegundos > 0) {
16
+ intervalo.current = window.setInterval(() => {
17
+ atualizar();
18
+ }, w.atualizaEmSegundos * 1000);
19
+ }
20
+ return () => {
21
+ if (intervalo.current) {
22
+ clearInterval(intervalo.current);
23
+ }
24
+ };
25
+ }, []);
26
+ const atualizar = async () => {
27
+ setCarregando(true);
28
+ const resultado = await atualizaWidget(w.widgetId, w.id);
29
+ setCarregando(false);
30
+ if (resultado) {
31
+ const dadosAtualizados = zodStringToJson(resultado, schema).data || null;
32
+ setDados(dadosAtualizados);
33
+ }
34
+ };
35
+ return (_jsx(Estrutura, { id: w.id, titulo: w.titulo, descricao: w.descricao, ultimaSincronizacao: w.ultimaSincronizacao, carregando: carregando, children: _jsxs("div", { style: { height: '100%', display: 'flex', flexDirection: 'column', flex: 1 }, children: [_jsx(AgulhaoChart, { style: { flexGrow: 1 }, grafico: {
36
+ tipo: 'pizza',
37
+ dataset: {
38
+ linhas: (dados?.lista || []).map((l) => {
39
+ const status = statusPedidoAgulhao.find((s) => s.sigla === l.status);
40
+ return { status: status?.descricao || l.status, quantidade: l.quantidade, cor: status?.cor || '' };
41
+ }),
42
+ },
43
+ mapeamento: { rotulo: 'status', valor: 'quantidade', cor: 'cor' },
44
+ opcoes: {
45
+ serie: { nome: 'Status do pedido' },
46
+ pizza: { raio: '50%' },
47
+ rotulo: {
48
+ formato: (p) => `${p.name}\n ${inteiro(p.value)} (${milhares(p.percent)}%)`,
49
+ tamanhoFonte: 18,
50
+ alturaLinha: 20,
51
+ espacamento: 10,
52
+ linha: { comprimento: 40, comprimento2: 40, suave: false },
53
+ },
54
+ },
55
+ } }), _jsxs("div", { style: {
56
+ display: 'flex',
57
+ justifyContent: 'space-between',
58
+ alignItems: 'center',
59
+ borderTop: '1px solid var(--ag-dashboard-cor)',
60
+ textAlign: 'center',
61
+ padding: '10px',
62
+ }, children: [renderizaValor('Peças', inteiro(dados?.pecas || 0)), renderizaValor('Pedidos', inteiro(dados?.registros || 0)), renderizaValor('Bruto', `R$ ${milhares(dados?.bruto || 0)}`), renderizaValor('Descontos (-)', `R$ ${milhares(dados?.descontos || 0)}`), renderizaValor('Outros (+)', `R$ ${milhares(dados?.outros || 0)}`), renderizaValor('Líquido', `R$ ${milhares(dados?.liquido || 0)}`)] })] }) }));
63
+ }
64
+ function renderizaValor(descricao, valor) {
65
+ return (_jsxs("div", { children: [_jsx("p", { style: { margin: 0, fontWeight: 'bold', fontSize: '0.875rem' }, children: descricao }), _jsx("p", { style: { margin: 0, marginTop: '2px', color: descricao === 'Líquido' ? '#00a91f' : '' }, children: valor })] }));
66
+ }
67
+ export const AcompanhamentoPedidosLayout = {
68
+ i: 'acompanhamentoPedidos',
69
+ x: 0,
70
+ y: 0,
71
+ w: 4,
72
+ h: 4,
73
+ minW: 1,
74
+ minH: 1,
75
+ isResizable: true,
76
+ isDraggable: true,
77
+ };
78
+ const schema = z.object({
79
+ pecasFaturadas: z.number(),
80
+ pecas: z.number(),
81
+ registros: z.number(),
82
+ bruto: z.number(),
83
+ outros: z.number(),
84
+ liquido: z.number(),
85
+ descontos: z.number(),
86
+ lista: z
87
+ .array(z.object({
88
+ status: z.string(),
89
+ quantidade: z.number(),
90
+ valor: z.number(),
91
+ }))
92
+ .optional(),
93
+ });
94
+ //# sourceMappingURL=acompanhamentoPedidos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acompanhamentoPedidos.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/acompanhamentoPedidos.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,MAAM,UAAU,qBAAqB,CAAC,CAAyB;IAC3D,MAAM,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE,CAAA;IAEzC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,eAAe,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;IAC1G,MAAM,SAAS,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAA;IAE7C,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;YACnD,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;gBACxC,SAAS,EAAE,CAAA;YACf,CAAC,EAAE,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAA;QACnC,CAAC;QAED,OAAO,GAAG,EAAE;YACR,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACpB,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACpC,CAAC;QACL,CAAC,CAAA;IACL,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QACzB,aAAa,CAAC,IAAI,CAAC,CAAA;QACnB,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QACxD,aAAa,CAAC,KAAK,CAAC,CAAA;QAEpB,IAAI,SAAS,EAAE,CAAC;YACZ,MAAM,gBAAgB,GAAG,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,CAAA;YACxE,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QAC9B,CAAC;IACL,CAAC,CAAA;IAED,OAAO,CACH,KAAC,SAAS,IAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,mBAAmB,EAAE,UAAU,EAAE,UAAU,YAC7H,eAAK,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,aAC7E,KAAC,YAAY,IACT,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EACtB,OAAO,EAAE;wBACL,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE;4BACL,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gCACnC,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC,CAAA;gCACpE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,CAAA;4BACtG,CAAC,CAAC;yBACL;wBACD,UAAU,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE;wBACjE,MAAM,EAAE;4BACJ,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;4BACnC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;4BACtB,MAAM,EAAE;gCACJ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;gCAC3E,YAAY,EAAE,EAAE;gCAChB,WAAW,EAAE,EAAE;gCACf,WAAW,EAAE,EAAE;gCACf,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;6BAC7D;yBACJ;qBACJ,GACH,EAEF,eACI,KAAK,EAAE;wBACH,OAAO,EAAE,MAAM;wBACf,cAAc,EAAE,eAAe;wBAC/B,UAAU,EAAE,QAAQ;wBACpB,SAAS,EAAE,mCAAmC;wBAC9C,SAAS,EAAE,QAAQ;wBACnB,OAAO,EAAE,MAAM;qBAClB,aACA,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EACnD,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC,EACzD,cAAc,CAAC,OAAO,EAAE,MAAM,QAAQ,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,EAC5D,cAAc,CAAC,eAAe,EAAE,MAAM,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EACxE,cAAc,CAAC,YAAY,EAAE,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,EAClE,cAAc,CAAC,SAAS,EAAE,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,IAC/D,IACJ,GACE,CACf,CAAA;AACL,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,KAAa;IACpD,OAAO,CACH,0BACI,YAAG,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAG,SAAS,GAAK,EAClF,YAAG,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,YAAG,KAAK,GAAK,IACrG,CACT,CAAA;AACL,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAe;IACnD,CAAC,EAAE,uBAAuB;IAC1B,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;CACpB,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,KAAK,EAAE,CAAC;SACH,KAAK,CACF,CAAC,CAAC,MAAM,CAAC;QACL,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC,CACL;SACA,QAAQ,EAAE;CAClB,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { LayoutItem } from 'react-grid-layout';
2
+ import { AgulhaoDashboardWidget } from '../types';
3
+ export declare function Calendario(w: AgulhaoDashboardWidget): import("react").JSX.Element;
4
+ export declare const CalendarioLayout: LayoutItem;
5
+ //# sourceMappingURL=calendario.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendario.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/calendario.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAyCjD,wBAAgB,UAAU,CAAC,CAAC,EAAE,sBAAsB,+BAoHnD;AA8HD,eAAO,MAAM,gBAAgB,EAAE,UAU9B,CAAA"}
@@ -0,0 +1,196 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { z } from 'zod';
3
+ import { useEffect, useMemo, useRef, useState } from 'react';
4
+ import { Cake, Calendar as CalendarIcon, ChevronLeft, ChevronRight, CircleDot, Receipt, StickyNote } from 'lucide-react';
5
+ import { zodStringToJson } from '../../utils';
6
+ import { zero } from '../../formatacoes';
7
+ import { Estrutura } from '../estrutura';
8
+ import { useDashboard } from '../context';
9
+ const meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'];
10
+ const diasSemana = ['DOM', 'SEG', 'TER', 'QUA', 'QUI', 'SEX', 'SÁB'];
11
+ // Tipos de evento reconhecidos por padrão. Um evento com um "tipo" fora desta lista
12
+ // ainda é exibido, usando um ícone genérico e o título informado no próprio evento.
13
+ const tiposEventoPadrao = {
14
+ aniversariantes: { titulo: 'Aniversariantes', cor: '#ff8100', icone: Cake },
15
+ contasPagar: { titulo: 'Contas a Pagar', cor: '#dc2626', icone: Receipt },
16
+ contasReceber: { titulo: 'Contas a Receber', cor: '#16a34a', icone: Receipt },
17
+ lembretes: { titulo: 'Lembretes', cor: '#2c8dd3', icone: StickyNote },
18
+ };
19
+ export function Calendario(w) {
20
+ const { atualizaWidget } = useDashboard();
21
+ const agora = new Date();
22
+ const [mes, setMes] = useState(agora.getMonth());
23
+ const [ano, setAno] = useState(agora.getFullYear());
24
+ const [carregando, setCarregando] = useState(false);
25
+ const [dados, setDados] = useState(zodStringToJson(w.conteudo || '{}', schema).data || null);
26
+ const intervalo = useRef(null);
27
+ useEffect(() => {
28
+ if (w.atualizaEmSegundos && w.atualizaEmSegundos > 0) {
29
+ intervalo.current = window.setInterval(() => {
30
+ atualizar();
31
+ }, w.atualizaEmSegundos * 1000);
32
+ }
33
+ return () => {
34
+ if (intervalo.current)
35
+ clearInterval(intervalo.current);
36
+ };
37
+ }, []);
38
+ const atualizar = async () => {
39
+ setCarregando(true);
40
+ const resultado = await atualizaWidget(w.widgetId, w.id);
41
+ setCarregando(false);
42
+ if (resultado) {
43
+ setDados(zodStringToJson(resultado, schema).data || null);
44
+ }
45
+ };
46
+ const navegaMes = (contador) => {
47
+ if (contador === 0) {
48
+ const hoje = new Date();
49
+ setMes(hoje.getMonth());
50
+ setAno(hoje.getFullYear());
51
+ return;
52
+ }
53
+ let novoMes = mes + contador;
54
+ let novoAno = ano;
55
+ if (novoMes > 11) {
56
+ novoMes = 0;
57
+ novoAno++;
58
+ }
59
+ else if (novoMes < 0) {
60
+ novoMes = 11;
61
+ novoAno--;
62
+ }
63
+ setMes(novoMes);
64
+ setAno(novoAno);
65
+ };
66
+ const semanas = useMemo(() => montaSemanasMes(ano, mes, dados?.eventos || []), [ano, mes, dados?.eventos]);
67
+ return (_jsx(Estrutura, { id: w.id, titulo: w.titulo, descricao: w.descricao, ultimaSincronizacao: w.ultimaSincronizacao, carregando: carregando, children: _jsxs("div", { style: { height: '100%', display: 'flex', flexDirection: 'column' }, children: [_jsxs("div", { style: {
68
+ display: 'flex',
69
+ alignItems: 'center',
70
+ justifyContent: 'space-between',
71
+ padding: '0.5rem 0.7rem',
72
+ borderBottom: '1px solid var(--ag-dashboard-cor)',
73
+ }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '2px' }, children: [_jsx("button", { type: "button", onClick: () => navegaMes(0), style: estiloBotaoNav, title: "Ir para o m\u00EAs atual", children: _jsx(CalendarIcon, { size: 15 }) }), _jsx("button", { type: "button", onClick: () => navegaMes(-1), style: estiloBotaoNav, title: "M\u00EAs anterior", children: _jsx(ChevronLeft, { size: 15 }) }), _jsx("button", { type: "button", onClick: () => navegaMes(1), style: estiloBotaoNav, title: "Pr\u00F3ximo m\u00EAs", children: _jsx(ChevronRight, { size: 15 }) })] }), _jsxs("span", { style: { fontWeight: 600, fontSize: '0.85rem' }, children: [meses[mes], " de ", ano] })] }), _jsxs("table", { style: { width: '100%', borderCollapse: 'collapse', flex: 1, tableLayout: 'fixed' }, children: [_jsx("thead", { children: _jsx("tr", { children: diasSemana.map((diaSemana) => (_jsx("th", { style: {
74
+ background: '#003e85',
75
+ color: '#fff',
76
+ fontWeight: 400,
77
+ fontSize: '0.7rem',
78
+ padding: '0.35rem 0',
79
+ textAlign: 'center',
80
+ }, children: diaSemana }, diaSemana))) }) }), _jsx("tbody", { children: semanas.map((diasDaSemana, i) => (_jsx("tr", { children: diasDaSemana.map((dia) => (_jsx(CelulaDia, { dia: dia, tipos: tiposEventoPadrao }, dia.data))) }, i))) })] })] }) }));
81
+ }
82
+ function CelulaDia({ dia, tipos }) {
83
+ const hoje = !dia.outroMes && dia.data === formataChaveData(new Date());
84
+ const grupos = agrupaEventosDoDia(dia.eventos, tipos);
85
+ return (_jsxs("td", { style: {
86
+ height: '64px',
87
+ padding: '4px',
88
+ textAlign: 'center',
89
+ verticalAlign: 'top',
90
+ border: '1px solid var(--ag-dashboard-cor)',
91
+ background: dia.outroMes ? '#f5f5f5' : hoje ? '#e5eaff' : '#fff',
92
+ color: dia.outroMes ? '#a1a1a1' : hoje ? '#0d0049' : '#141414',
93
+ }, children: [_jsx("p", { style: { margin: 0, fontSize: '0.8rem', fontWeight: hoje ? 700 : 400 }, children: dia.dia }), grupos.length > 0 && (
94
+ // Largura limitada a 2 ícones por linha (no máximo 4 tipos de evento padrão, logo até 2 linhas).
95
+ _jsx("div", { style: { display: 'flex', flexWrap: 'wrap', gap: '3px', justifyContent: 'center', margin: '4px auto 0', width: '38px' }, children: grupos.map((grupo) => {
96
+ const Icone = grupo.icone;
97
+ return (_jsx(Icone, { size: 17, strokeWidth: 2.25, style: { color: grupo.cor, cursor: grupo.acao ? 'pointer' : 'default' }, onClick: grupo.acao ? () => window.open(grupo.acao, '_blank') : undefined, children: _jsx("title", { children: grupo.titulo }) }, grupo.tipo));
98
+ }) }))] }));
99
+ }
100
+ // Agrupa os eventos do dia por "tipo", para exibir apenas um ícone por tipo (mesmo que
101
+ // existam vários eventos daquele tipo no mesmo dia).
102
+ function agrupaEventosDoDia(eventos, tipos) {
103
+ const grupos = new Map();
104
+ eventos.forEach((evento) => {
105
+ const tipoPadrao = tipos[evento.tipo];
106
+ const titulo = evento.titulo || tipoPadrao?.titulo || evento.tipo;
107
+ const cor = evento.cor || tipoPadrao?.cor || '#6b7280';
108
+ const icone = tipoPadrao?.icone || CircleDot;
109
+ const existente = grupos.get(evento.tipo);
110
+ if (existente) {
111
+ if (!existente.titulo.includes(titulo))
112
+ existente.titulo += `, ${titulo}`;
113
+ existente.acao = existente.acao || evento.acao;
114
+ }
115
+ else {
116
+ grupos.set(evento.tipo, { tipo: evento.tipo, titulo, cor, icone, acao: evento.acao });
117
+ }
118
+ });
119
+ return Array.from(grupos.values());
120
+ }
121
+ // Monta as semanas (domingo a sábado) necessárias para exibir o mês por completo,
122
+ // incluindo os dias do mês anterior/seguinte usados para completar a primeira/última semana.
123
+ function montaSemanasMes(ano, mes, eventos) {
124
+ const primeiroDiaSemana = new Date(ano, mes, 1).getDay();
125
+ const ultimoDiaMes = new Date(ano, mes + 1, 0).getDate();
126
+ const totalCelulas = Math.ceil((primeiroDiaSemana + ultimoDiaMes) / 7) * 7;
127
+ const eventosPorData = new Map();
128
+ eventos.forEach((evento) => {
129
+ const chave = normalizaData(evento.data);
130
+ if (!chave)
131
+ return;
132
+ const lista = eventosPorData.get(chave) || [];
133
+ lista.push(evento);
134
+ eventosPorData.set(chave, lista);
135
+ });
136
+ const dias = [];
137
+ for (let i = 0; i < totalCelulas; i++) {
138
+ const data = new Date(ano, mes, 1 - primeiroDiaSemana + i);
139
+ const chave = formataChaveData(data);
140
+ dias.push({
141
+ dia: data.getDate(),
142
+ data: chave,
143
+ outroMes: data.getMonth() !== mes,
144
+ eventos: eventosPorData.get(chave) || [],
145
+ });
146
+ }
147
+ const semanas = [];
148
+ for (let i = 0; i < dias.length; i += 7) {
149
+ semanas.push(dias.slice(i, i + 7));
150
+ }
151
+ return semanas;
152
+ }
153
+ const formataChaveData = (data) => `${data.getFullYear()}-${zero(data.getMonth() + 1)}-${zero(data.getDate())}`;
154
+ // Aceita tanto "YYYY-MM-DD" quanto "DD/MM/YYYY" como formato de data do evento.
155
+ function normalizaData(data) {
156
+ const isoMatch = data.match(/^(\d{4})-(\d{2})-(\d{2})/);
157
+ if (isoMatch)
158
+ return `${isoMatch[1]}-${isoMatch[2]}-${isoMatch[3]}`;
159
+ const brMatch = data.match(/^(\d{2})\/(\d{2})\/(\d{4})$/);
160
+ if (brMatch)
161
+ return `${brMatch[3]}-${brMatch[2]}-${brMatch[1]}`;
162
+ return null;
163
+ }
164
+ const estiloBotaoNav = {
165
+ background: 'transparent',
166
+ border: 'none',
167
+ borderRadius: '4px',
168
+ padding: '4px 6px',
169
+ cursor: 'pointer',
170
+ color: 'inherit',
171
+ display: 'flex',
172
+ alignItems: 'center',
173
+ };
174
+ export const CalendarioLayout = {
175
+ i: 'calendario',
176
+ x: 0,
177
+ y: 0,
178
+ w: 4,
179
+ h: 5,
180
+ minW: 3,
181
+ minH: 4,
182
+ isResizable: true,
183
+ isDraggable: true,
184
+ };
185
+ const schema = z.object({
186
+ eventos: z
187
+ .array(z.object({
188
+ data: z.string(),
189
+ tipo: z.string(),
190
+ titulo: z.string().optional(),
191
+ cor: z.string().optional(),
192
+ acao: z.string().optional(),
193
+ }))
194
+ .optional(),
195
+ });
196
+ //# sourceMappingURL=calendario.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendario.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/calendario.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { LayoutItem } from 'react-grid-layout';
2
+ import { AgulhaoDashboardWidget } from '../types';
3
+ export declare function GraficoDespesasMesGrupoPlanoContas(w: AgulhaoDashboardWidget): import("react").JSX.Element;
4
+ export declare const GraficoDespesasMesGrupoPlanoContasLayout: LayoutItem;
5
+ //# sourceMappingURL=graficoDespesasMesGrupoPlanoContas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graficoDespesasMesGrupoPlanoContas.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/graficoDespesasMesGrupoPlanoContas.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAUjD,wBAAgB,kCAAkC,CAAC,CAAC,EAAE,sBAAsB,+BAsF3E;AAWD,eAAO,MAAM,wCAAwC,EAAE,UAUtD,CAAA"}
@@ -0,0 +1,94 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { z } from 'zod';
3
+ import { useEffect, useRef, useState } from 'react';
4
+ import { zodStringToJson } from '../../utils';
5
+ import { AgulhaoChart } from '../../chart';
6
+ import { Estrutura } from '../estrutura';
7
+ import { milhares } from '../../formatacoes';
8
+ import { useDashboard } from '../context';
9
+ const nomesMes = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'];
10
+ export function GraficoDespesasMesGrupoPlanoContas(w) {
11
+ const { atualizaWidget } = useDashboard();
12
+ const [carregando, setCarregando] = useState(false);
13
+ const [dados, setDados] = useState(zodStringToJson(w.conteudo || '[]', schema).data || []);
14
+ const intervalo = useRef(null);
15
+ useEffect(() => {
16
+ if (w.atualizaEmSegundos && w.atualizaEmSegundos > 0) {
17
+ intervalo.current = window.setInterval(() => {
18
+ atualizar();
19
+ }, w.atualizaEmSegundos * 1000);
20
+ }
21
+ return () => {
22
+ if (intervalo.current) {
23
+ clearInterval(intervalo.current);
24
+ }
25
+ };
26
+ }, []);
27
+ const atualizar = async () => {
28
+ setCarregando(true);
29
+ const resultado = await atualizaWidget(w.widgetId, w.id);
30
+ setCarregando(false);
31
+ if (resultado) {
32
+ const dadosAtualizados = zodStringToJson(resultado, schema).data || [];
33
+ setDados(dadosAtualizados);
34
+ }
35
+ };
36
+ const mesVigente = dados.reduce((maior, d) => Math.max(maior, d.ano * 100 + d.mes), 0);
37
+ const doMesVigente = dados.filter((d) => d.ano * 100 + d.mes === mesVigente);
38
+ const porGrupo = new Map();
39
+ for (const d of doMesVigente) {
40
+ porGrupo.set(d.grupoPlanoContas, (porGrupo.get(d.grupoPlanoContas) || 0) + d.valor);
41
+ }
42
+ const linhas = [...porGrupo.entries()].sort((a, b) => b[1] - a[1]).map(([grupoPlanoContas, valor]) => ({ grupoPlanoContas, valor }));
43
+ const total = linhas.reduce((soma, l) => soma + l.valor, 0);
44
+ return (_jsx(Estrutura, { id: w.id, titulo: w.titulo, descricao: w.descricao, ultimaSincronizacao: w.ultimaSincronizacao, carregando: carregando, children: _jsxs("div", { style: { height: '100%', display: 'flex', flexDirection: 'column', flex: 1 }, children: [_jsx(AgulhaoChart, { style: { flexGrow: 1 }, grafico: {
45
+ tipo: 'pizza',
46
+ dataset: { linhas },
47
+ mapeamento: { rotulo: 'grupoPlanoContas', valor: 'valor' },
48
+ opcoes: {
49
+ pizza: {
50
+ raio: '50%',
51
+ },
52
+ legenda: {
53
+ orientacao: 'horizontal',
54
+ },
55
+ formatadorValor: (v) => milhares(v, 'R$'),
56
+ rotulo: {
57
+ formato: (p) => `${p.name}\n ${milhares(p.value, 'R$')} (${milhares(p.percent)}%)`,
58
+ tamanhoFonte: 18,
59
+ alturaLinha: 20,
60
+ espacamento: 10,
61
+ linha: { comprimento: 40, comprimento2: 40, suave: false },
62
+ },
63
+ },
64
+ } }), _jsxs("div", { style: {
65
+ display: 'flex',
66
+ justifyContent: 'space-between',
67
+ alignItems: 'center',
68
+ borderTop: '1px solid var(--ag-dashboard-cor)',
69
+ textAlign: 'center',
70
+ padding: '10px',
71
+ }, children: [renderizaValor('Mês', mesVigente ? `${nomesMes[(mesVigente % 100) - 1]}/${Math.floor(mesVigente / 100)}` : '-'), renderizaValor('Total', `R$ ${milhares(total)}`)] })] }) }));
72
+ }
73
+ function renderizaValor(descricao, valor) {
74
+ return (_jsxs("div", { children: [_jsx("p", { style: { margin: 0, fontWeight: 'bold', fontSize: '0.875rem' }, children: descricao }), _jsx("p", { style: { margin: 0, marginTop: '2px' }, children: valor })] }));
75
+ }
76
+ export const GraficoDespesasMesGrupoPlanoContasLayout = {
77
+ i: 'graficoDespesasMesGrupoPlanoContas',
78
+ x: 0,
79
+ y: 0,
80
+ w: 4,
81
+ h: 4,
82
+ minW: 1,
83
+ minH: 1,
84
+ isResizable: true,
85
+ isDraggable: true,
86
+ };
87
+ const linhaSchema = z.object({
88
+ mes: z.coerce.number(),
89
+ ano: z.coerce.number(),
90
+ grupoPlanoContas: z.string(),
91
+ valor: z.coerce.number(),
92
+ });
93
+ const schema = z.array(linhaSchema);
94
+ //# sourceMappingURL=graficoDespesasMesGrupoPlanoContas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graficoDespesasMesGrupoPlanoContas.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/graficoDespesasMesGrupoPlanoContas.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { LayoutItem } from 'react-grid-layout';
2
+ import { AgulhaoDashboardWidget } from '../types';
3
+ export declare function GraficoReceitasMesPlanoContas(w: AgulhaoDashboardWidget): import("react").JSX.Element;
4
+ export declare const GraficoReceitasMesPlanoContasLayout: LayoutItem;
5
+ //# sourceMappingURL=graficoReceitasMesPlanoContas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graficoReceitasMesPlanoContas.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/graficoReceitasMesPlanoContas.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAUjD,wBAAgB,6BAA6B,CAAC,CAAC,EAAE,sBAAsB,+BAsFtE;AAWD,eAAO,MAAM,mCAAmC,EAAE,UAUjD,CAAA"}
@@ -0,0 +1,94 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { z } from 'zod';
3
+ import { useEffect, useRef, useState } from 'react';
4
+ import { zodStringToJson } from '../../utils';
5
+ import { AgulhaoChart } from '../../chart';
6
+ import { Estrutura } from '../estrutura';
7
+ import { milhares } from '../../formatacoes';
8
+ import { useDashboard } from '../context';
9
+ const nomesMes = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'];
10
+ export function GraficoReceitasMesPlanoContas(w) {
11
+ const { atualizaWidget } = useDashboard();
12
+ const [carregando, setCarregando] = useState(false);
13
+ const [dados, setDados] = useState(zodStringToJson(w.conteudo || '[]', schema).data || []);
14
+ const intervalo = useRef(null);
15
+ useEffect(() => {
16
+ if (w.atualizaEmSegundos && w.atualizaEmSegundos > 0) {
17
+ intervalo.current = window.setInterval(() => {
18
+ atualizar();
19
+ }, w.atualizaEmSegundos * 1000);
20
+ }
21
+ return () => {
22
+ if (intervalo.current) {
23
+ clearInterval(intervalo.current);
24
+ }
25
+ };
26
+ }, []);
27
+ const atualizar = async () => {
28
+ setCarregando(true);
29
+ const resultado = await atualizaWidget(w.widgetId, w.id);
30
+ setCarregando(false);
31
+ if (resultado) {
32
+ const dadosAtualizados = zodStringToJson(resultado, schema).data || [];
33
+ setDados(dadosAtualizados);
34
+ }
35
+ };
36
+ const mesVigente = dados.reduce((maior, d) => Math.max(maior, d.ano * 100 + d.mes), 0);
37
+ const doMesVigente = dados.filter((d) => d.ano * 100 + d.mes === mesVigente);
38
+ const porPlanoContas = new Map();
39
+ for (const d of doMesVigente) {
40
+ porPlanoContas.set(d.planoContas, (porPlanoContas.get(d.planoContas) || 0) + d.valor);
41
+ }
42
+ const linhas = [...porPlanoContas.entries()].sort((a, b) => b[1] - a[1]).map(([planoContas, valor]) => ({ planoContas, valor }));
43
+ const total = linhas.reduce((soma, l) => soma + l.valor, 0);
44
+ return (_jsx(Estrutura, { id: w.id, titulo: w.titulo, descricao: w.descricao, ultimaSincronizacao: w.ultimaSincronizacao, carregando: carregando, children: _jsxs("div", { style: { height: '100%', display: 'flex', flexDirection: 'column', flex: 1 }, children: [_jsx(AgulhaoChart, { style: { flexGrow: 1 }, grafico: {
45
+ tipo: 'pizza',
46
+ dataset: { linhas },
47
+ mapeamento: { rotulo: 'planoContas', valor: 'valor' },
48
+ opcoes: {
49
+ pizza: {
50
+ raio: '50%',
51
+ },
52
+ legenda: {
53
+ orientacao: 'horizontal',
54
+ },
55
+ formatadorValor: (v) => milhares(v, 'R$'),
56
+ rotulo: {
57
+ formato: (p) => `${p.name}\n ${milhares(p.value, 'R$')} (${milhares(p.percent)}%)`,
58
+ tamanhoFonte: 18,
59
+ alturaLinha: 20,
60
+ espacamento: 10,
61
+ linha: { comprimento: 40, comprimento2: 40, suave: false },
62
+ },
63
+ },
64
+ } }), _jsxs("div", { style: {
65
+ display: 'flex',
66
+ justifyContent: 'space-between',
67
+ alignItems: 'center',
68
+ borderTop: '1px solid var(--ag-dashboard-cor)',
69
+ textAlign: 'center',
70
+ padding: '10px',
71
+ }, children: [renderizaValor('Mês', mesVigente ? `${nomesMes[(mesVigente % 100) - 1]}/${Math.floor(mesVigente / 100)}` : '-'), renderizaValor('Total', `R$ ${milhares(total)}`)] })] }) }));
72
+ }
73
+ function renderizaValor(descricao, valor) {
74
+ return (_jsxs("div", { children: [_jsx("p", { style: { margin: 0, fontWeight: 'bold', fontSize: '0.875rem' }, children: descricao }), _jsx("p", { style: { margin: 0, marginTop: '2px' }, children: valor })] }));
75
+ }
76
+ export const GraficoReceitasMesPlanoContasLayout = {
77
+ i: 'graficoReceitasMesPlanoContas',
78
+ x: 0,
79
+ y: 0,
80
+ w: 4,
81
+ h: 4,
82
+ minW: 1,
83
+ minH: 1,
84
+ isResizable: true,
85
+ isDraggable: true,
86
+ };
87
+ const linhaSchema = z.object({
88
+ mes: z.coerce.number(),
89
+ ano: z.coerce.number(),
90
+ planoContas: z.string(),
91
+ valor: z.coerce.number(),
92
+ });
93
+ const schema = z.array(linhaSchema);
94
+ //# sourceMappingURL=graficoReceitasMesPlanoContas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graficoReceitasMesPlanoContas.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/graficoReceitasMesPlanoContas.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;AAE9I,MAAM,UAAU,6BAA6B,CAAC,CAAyB;IACnE,MAAM,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE,CAAA;IAEzC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAQ,eAAe,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IACjG,MAAM,SAAS,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAA;IAE7C,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;YACnD,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;gBACxC,SAAS,EAAE,CAAA;YACf,CAAC,EAAE,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAA;QACnC,CAAC;QAED,OAAO,GAAG,EAAE;YACR,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACpB,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACpC,CAAC;QACL,CAAC,CAAA;IACL,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QACzB,aAAa,CAAC,IAAI,CAAC,CAAA;QACnB,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QACxD,aAAa,CAAC,KAAK,CAAC,CAAA;QAEpB,IAAI,SAAS,EAAE,CAAC;YACZ,MAAM,gBAAgB,GAAG,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;YACtE,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QAC9B,CAAC;IACL,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACtF,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,CAAA;IAE5E,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;IAChD,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC3B,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;IACzF,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IAEhI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAE3D,OAAO,CACH,KAAC,SAAS,IAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,mBAAmB,EAAE,UAAU,EAAE,UAAU,YAC7H,eAAK,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,aAC7E,KAAC,YAAY,IACT,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EACtB,OAAO,EAAE;wBACL,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE,EAAE,MAAM,EAAE;wBACnB,UAAU,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE;wBACrD,MAAM,EAAE;4BACJ,KAAK,EAAE;gCACH,IAAI,EAAE,KAAK;6BACd;4BACD,OAAO,EAAE;gCACL,UAAU,EAAE,YAAY;6BAC3B;4BACD,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;4BACzC,MAAM,EAAE;gCACJ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;gCAClF,YAAY,EAAE,EAAE;gCAChB,WAAW,EAAE,EAAE;gCACf,WAAW,EAAE,EAAE;gCACf,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;6BAC7D;yBACJ;qBACJ,GACH,EAEF,eACI,KAAK,EAAE;wBACH,OAAO,EAAE,MAAM;wBACf,cAAc,EAAE,eAAe;wBAC/B,UAAU,EAAE,QAAQ;wBACpB,SAAS,EAAE,mCAAmC;wBAC9C,SAAS,EAAE,QAAQ;wBACnB,OAAO,EAAE,MAAM;qBAClB,aACA,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAC/G,cAAc,CAAC,OAAO,EAAE,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAC/C,IACJ,GACE,CACf,CAAA;AACL,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,KAAa;IACpD,OAAO,CACH,0BACI,YAAG,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAG,SAAS,GAAK,EAClF,YAAG,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,YAAG,KAAK,GAAK,IACpD,CACT,CAAA;AACL,CAAC;AAED,MAAM,CAAC,MAAM,mCAAmC,GAAe;IAC3D,CAAC,EAAE,+BAA+B;IAClC,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;CACpB,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;IACtB,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;IACtB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;CAC3B,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { LayoutItem } from 'react-grid-layout';
2
+ import { AgulhaoDashboardWidget } from '../types';
3
+ export declare function GraficoVendasMesTipoLancamento(w: AgulhaoDashboardWidget): import("react").JSX.Element;
4
+ export declare const GraficoVendasMesTipoLancamentoLayout: LayoutItem;
5
+ //# sourceMappingURL=graficoVendasMesTipoLancamento.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graficoVendasMesTipoLancamento.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/graficoVendasMesTipoLancamento.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAQjD,wBAAgB,8BAA8B,CAAC,CAAC,EAAE,sBAAsB,+BAkFvE;AAWD,eAAO,MAAM,oCAAoC,EAAE,UAUlD,CAAA"}