etiquetas.js 1.0.0-alpha.7 → 1.0.0-alpha.9

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
@@ -1,175 +1,122 @@
1
- # 🏷️ Sistema de Etiquetas - Etiquetas.js
2
-
3
- Sistema completo para geração de etiquetas de peças, tamponamentos, insumos, retalhos e volumes com suporte a impressão e download de PDFs.
4
-
5
- ## 📋 Recursos Principais
6
-
7
- - Geração de 5 tipos de etiquetas: Peças, Tamponamentos, Insumos, Retalhos e Volumes
8
- - Suporte para impressão direta
9
- - Download em formato PDF
10
- - Templates personalizáveis
11
- - Integração com API para busca de modelos de etiquetas
12
- - **🔄 Legacy Transformer** - Sistema de transformação de dados legados
13
-
14
- ## 🚀 Instalação
15
-
16
- ```bash
17
- npm install etiquetas.js
18
- ```
19
-
20
- ## ⚙️ Uso Básico
21
-
22
- ```javascript
23
- import etiquetas from './src/etiquetas.js';
24
-
25
- // Inicializar o sistema com seu token JWT para autenticação na API
26
- etiquetas.init({
27
- token:'<jwt-token>'
28
- });
29
-
30
- // Gerar etiqueta de peça
31
- const pdfBuffer = await etiquetas.makeLabel(labelData, '<id-etiqueta>',options);
32
- //Gerar e enviar para impressora, caso a impressora não esteja disponível o arquivo é baixado automaticamente
33
- await etiquetas.sendLabel(labelData, '<id-etiqueta>',{
34
- fileName:<nome-do-arquivo>
35
- });
36
-
37
- // Download ou impressão
38
- await etiquetas.downloadPDF(pdfBuffer, '<nome-etiqueta>.pdf');
39
- // ou
40
- await etiquetas.sendToPrinter(pdfBuffer);
41
- ```
42
-
43
- ## 🔄 Legacy Transformer
44
-
45
- O sistema de transformação de dados legados permite converter dados antigos para o formato atual das etiquetas. **O transformer padrão é configurado na função `init()`** e será aplicado automaticamente em todas as operações.
46
-
47
- ### Configuração no Init
48
-
49
- ```javascript
50
- import etiquetas from './src/etiquetas.js';
51
-
52
- // Inicializar com legacy transformer (padrão)
53
- etiquetas.init({
54
- token: 'your-token',
55
- // defaultTransformer não especificado = legacy por padrão
56
- });
57
-
58
- // Inicializar com transformer customizado como padrão
59
- etiquetas.init({
60
- token: 'your-token',
61
- defaultTransformer: {
62
- fieldMap: 'custom',
63
- fieldMapSource: {
64
- old_field: 'new_field',
65
- status: ['active', 'inactive', 'pending']
66
- }
67
- }
68
- });
69
-
70
- // Inicializar sem transformer (desabilitado)
71
- etiquetas.init({
72
- token: 'your-token',
73
- defaultTransformer: {
74
- fieldMap: 'none'
75
- }
76
- });
77
- ```
78
-
79
- ### Uso Básico (Usa Padrão do Init)
80
-
81
- ```javascript
82
- // O transformer configurado no init será aplicado automaticamente
83
- const pdf = await etiquetas.makeLabel({
84
- VARIAVEL1: 123,
85
- VARIAVEL2: '12345',
86
-
87
- }, 'template-id');
88
-
89
- // Também funciona com sendLabel
90
- const result = await etiquetas.sendLabel(legacyData, 'template-id');
91
- ```
92
-
93
- ### Sobrescrever Transformer Padrão
94
-
95
- ```javascript
96
- // Sobrescrever para usar legacy transformer
97
- const pdf = await etiquetas.makeLabel(legacyData, 'template-id', {
98
- transformer: {
99
- fieldMap: "legacy"
100
- }
101
- });
102
-
103
- // Sobrescrever para usar fieldMap customizado
104
- const customFieldMap = {
105
- // Mapeamento simples
106
- OLD_FIELD: 'newField',
107
-
108
- // Mapeamento com array de valores
109
- STATUS: ['active', 'inactive', 'pending'],
110
-
111
- // Transformação com função
112
- CUSTOM_CODE: (data) => data.code ? `NEW_${data.code}` : null
113
- };
114
-
115
- const pdf = await etiquetas.makeLabel(legacyData, 'template-id', {
116
- transformer: {
117
- fieldMap: "custom",
118
- fieldMapSource: customFieldMap
119
- }
120
- });
121
-
122
- // Sobrescrever para desabilitar transformer
123
- const pdf = await etiquetas.makeLabel(normalizedData, 'template-id', {
124
- transformer: {
125
- fieldMap: "none"
126
- }
127
- });
128
- ```
129
-
130
- ### Opções do Init
131
-
132
- | Opção | Tipo | Descrição |
133
- |-------|------|-----------|
134
- | `defaultTransformer.fieldMap` | string | Tipo do fieldMap padrão: `"legacy"` (padrão), `"custom"` ou `"none"` |
135
- | `defaultTransformer.fieldMapSource` | Object | FieldMap customizado (obrigatório se `fieldMap="custom"`) |
136
-
137
- ### Opções das Funções (Sobrescrever Padrão)
138
-
139
- | Opção | Tipo | Descrição |
140
- |-------|------|-----------|
141
- | `transformer.fieldMap` | string | Tipo do fieldMap: `"legacy"`, `"custom"` ou `"none"` (sobrescreve padrão do init) |
142
- | `transformer.fieldMapSource` | Object | FieldMap customizado (obrigatório se `fieldMap="custom"`) |
143
-
144
- ### API Legacy (Deprecated)
145
-
146
- ```javascript
147
- // ⚠️ API antiga - ainda funciona mas está deprecated
148
- const pdf = await etiquetas.makeLabel(legacyData, 'template-id', {
149
- useLegacyTransformer: true,
150
- customFieldMap: myFieldMap
151
- });
152
- ```
153
-
154
- ### Validação e Tratamento de Erros
155
-
156
- ```javascript
157
- // Validar fieldMap antes de usar
158
- const isValid = etiquetas.validateFieldMap(myFieldMap);
159
-
160
- // Tratamento de erros
161
- try {
162
- const pdf = await etiquetas.makeLabel(legacyData, 'template-id', {
163
- transformer: {
164
- fieldMap: "custom",
165
- fieldMapSource: invalidFieldMap
166
- }
167
- });
168
- } catch (error) {
169
- console.error('Erro na transformação:', error.message);
170
- }
171
- ```
172
-
173
- Para documentação completa sobre transformações, consulte: [src/transformers/README.md](src/transformers/README.md)
174
-
175
-
1
+ # 🏷️ Sistema de Etiquetas - Etiquetas.js
2
+
3
+ Sistema completo para geração de etiquetas de peças, tamponamentos, insumos, retalhos e volumes com suporte a impressão e download de PDFs.
4
+
5
+
6
+
7
+ ## 🚀 Instalação
8
+
9
+ ```bash
10
+ npm install etiquetas.js
11
+ ```
12
+
13
+ ## ⚙️ Configuração Inicial
14
+
15
+ ```javascript
16
+ import etiquetas from 'etiquetas.js';
17
+
18
+ // Inicializar o sistema
19
+ etiquetas.init({
20
+ token: '<jwt-token>'
21
+ });
22
+ ```
23
+
24
+ ## 📚 API Principal
25
+ <jwt-token> é utilizado como authorization na api dinabox para obter os templates de etiqueta
26
+ ### Inicialização e Configuração
27
+
28
+ ```javascript
29
+ // Inicializar sistema
30
+ etiquetas.init(config);
31
+
32
+
33
+ // Verificar status da impressora
34
+ const status = await etiquetas.getPrinterStatus();
35
+ ```
36
+
37
+ ### Geração de Etiquetas
38
+
39
+ const labelData = [{variableProps: {
40
+
41
+
42
+ ```javascript
43
+ // Gerar etiqueta de peça
44
+ [{
45
+ <all-variables>
46
+ }, specialProps: {
47
+ <all-specialprops>
48
+ }]
49
+ O tamanho do array de labelData é a quantidade de etiquetas que serão geradas. Os dados <all-variables> e <all-specialprops>
50
+
51
+ const pdfPeca = await etiquetas.makeLabel({variableProps: {
52
+ PROJETO_ID:123
53
+
54
+ },specialProps: {
55
+ lamination: {
56
+
57
+ material_id:"123",
58
+ edges: {
59
+ left_id:"123",
60
+ right_id:null,
61
+ bottom_id:"123",
62
+ top_id:"245"
63
+ }
64
+
65
+ },
66
+
67
+ }
68
+ }}, <label-id>);
69
+ ```
70
+
71
+ ### Saída e Impressão
72
+
73
+
74
+
75
+ ```javascript
76
+ // Download de PDF
77
+ await etiquetas.downloadPDF(pdfBuffer, 'etiqueta.pdf');
78
+
79
+ // Enviar para impressora
80
+ await etiquetas.sendToPrinter(pdfBuffer);
81
+
82
+ // Envio inteligente (imprime se conectado, senão faz download)
83
+ await etiquetas.sendLabel(labelData, <label-id>);
84
+
85
+ ```
86
+
87
+ ## 🎨 Templates
88
+
89
+ ### Templates Disponíveis
90
+ Utilizando a API das labels busque o ID do template
91
+
92
+ Cada arquivo contém a definição de variáveis e propriedades especiais que podem ser usadas na geração das etiquetas correspondentes.
93
+
94
+ ## 📑 Variáveis e SpecialProps dos Templates
95
+
96
+ Abaixo estão listadas todas as variáveis (`variableProps`) e propriedades especiais (`specialProps`) disponíveis para uso em qualquer template de etiqueta. Use-as conforme o tipo de etiqueta desejado.
97
+
98
+ ### Lista universal de variableProps
99
+
100
+ - {{PROJETO_NOME}}, {{PROJETO_ID}}, {{LOTE_ID}}, {{CLIENTE_NOME}}, {{MODULO_NOME}}, {{MODULO_QTD}}, {{MODULO_REF}}, {{MODULO_OBS}}, {{PECA_ID}}, {{PECA_CODIGO}}, {{PECA_REF}}, {{PECA_INDICE}}, {{PECA_INDICE2}}, {{PECA_NOME}}, {{PECA_OBS}}, {{LARGURA}}, {{ALTURA}}, {{ESPESSURA}}, {{MN}}, {{MA}}, {{ML}}, {{FURO_A}}, {{FURO_A2}}, {{FURO_B}}, {{FURO_B2}}, {{FE}}, {{FD}}, {{FS}}, {{FI}}, {{PECA_TIPO}}, {{MATERIAL_NOME}}, {{TAMPONAMENTO_ID}}, {{TAMPONAMENTO_REF}}, {{TAMPONAMENTO_QT}}, {{TAMPONAMENTO_PESO}}, {{TAMPONAMENTO_NOME}}, {{INSUMO_NOME}}, {{INSUMO_ID}}, {{INSUMO_DIMENSOES}}, {{INSUMO_QTD}}, {{INSUMO_PESO}}, {{INSUMO_REF}}, {{INSUMO_MARCA}}, {{INSUMO_CATEGORIA}}, {{INSUMO_FABRICANTE}}, {{RETALHO_ID}}, {{DATA_CRIACAO}}, {{RETALHO_INDICE}}, {{LADO_USINAGEM}}, {{RETALHO_NOME}}, {{RETALHO_QT}}, {{RETALHO_PESO}}, {{RETALHO_DIMENSOES}}, {{RETALHO_MATERIAL}}, {{RETALHO_ORIGEM}}, {{CODIGO_A}}, {{CODIGO_B}}, {{FURO_A_SD}}, {{FURO_B_SD}}, {{FURO_TOPO}}, {{VOLUME_ID}}, {{VOLUME_NOME}}, {{VOLUME_PESO}}, {{VOLUME_DATA}}, {{VOLUME_DESCRICAO}}, {{VOLUME_PECAS}}, {{VOLUME_DIMENSOES}}
101
+
102
+ > **Observação:** Você pode usar qualquer combinação dessas variáveis em qualquer template, desde que o template utilize o campo correspondente.
103
+
104
+ ---
105
+
106
+ ### Lista universal de specialProps
107
+
108
+ - **rect**: Retângulo. Dados necessários: já vem no template.
109
+ - **lamination**: Desenha bordas de laminação conforme materiais. Dados necessários: informações de borda e material (edge_left_id, material_id, etc).
110
+ - **enhancedLamination**: Laminação detalhada, com indicação visual de materiais e furos. Dados necessários: dados de peça, bordas e furos (holes_diagram, width, height, etc).
111
+ - **identifierByProject**: Gera um identificador visual (preto e branco) para o projeto. Dados necessários: project_id, numberByProject.
112
+ - **colorfulIdentifierByProject**: Igual ao anterior, mas colorido. Dados necessários: project_id, numberByProject, color.
113
+ - **barCode**: Gera um código de barras. Dados necessários: código a ser convertido (originBarcode, customBarcode, code_a, code_b, etc).
114
+ - **miniSheet**: Miniatura da chapa. Dados necessários: lista de partes (parts), dimensões da chapa (height, width).
115
+ - **miniPartA**: Miniatura da peça (lado A). Dados necessários: dados da peça (width, height, index).
116
+ - **miniPartB**: Miniatura da peça (lado B). Dados necessários: dados da peça (width, height, index).
117
+ - **Image**: Imagem. Dados necessários: já vem no template.
118
+ - **text**: Texto estático. Dados necessários: já vem no template.
119
+ - **volumeContent**: Gera uma tabela de itens do volume. Dados necessários: itemList (array de itens do volume).
120
+
121
+ > **Observação:** Você pode usar qualquer combinação dessas specialProps em qualquer template, desde que o template utilize o campo correspondente.
122
+
@@ -1,4 +1,4 @@
1
- import { a0, L, h, q, M, K, P, O, a6, D, G, J, T, U, i, S, a8, E, H, x, R, V, A, j, a7, $, X, a3, a4, m, e, a9, Z, a, l, n, t, b, d, f, s, p, a2, B, C, o, F, v, Y, a5, N, r, Q, w, y, I, W, a1, u, k, z } from "./index-Tvy8FVsM.js";
1
+ import { a0, L, h, q, M, K, P, O, a6, D, G, J, T, U, i, S, a8, E, H, x, R, V, A, j, a7, $, X, a3, a4, m, e, a9, Z, a, l, n, t, b, d, f, s, p, a2, B, C, o, F, v, Y, a5, N, r, Q, w, y, I, W, a1, u, k, z } from "./index-Br1zbFfm.js";
2
2
  export {
3
3
  a0 as DEFAULT_LAMINATION_COLORS,
4
4
  L as LABEL_TYPES,