etiquetas.js 1.0.0-alpha.1
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.git.md +486 -0
- package/README.md +38 -0
- package/api/api-labels.json +114 -0
- package/api/api.js +316 -0
- package/api/mock/data-volume-id_680.json +64 -0
- package/api/mock/labels-input.json +96 -0
- package/api/mock/labels-part.json +216 -0
- package/api/mock/labels-scrap.json +76 -0
- package/api/mock/labels-thickened.json +96 -0
- package/api/mock/labels-volume.json +56 -0
- package/api/token.txt +1 -0
- package/package.json +43 -0
- package/services/index.js +28 -0
- package/src/constants.js +247 -0
- package/src/createLabel.js +342 -0
- package/src/etiquetas.js +654 -0
- package/src/formatData.js +96 -0
- package/src/formatDataIntegrated.js +498 -0
- package/src/index.js +86 -0
- package/src/label/services/index.js +1201 -0
- package/src/label/services/sortFunctions.js +158 -0
- package/src/label/services/utils.js +280 -0
- package/src/labelWorker.js +123 -0
- package/src/reducer.js +40 -0
- package/src/store.js +55 -0
- package/src/templates.js +139 -0
- package/src/types.ts +575 -0
- package/src/useLabelData.js +99 -0
- package/src/usePrinterStore.js +115 -0
- package/src/variableManager.js +224 -0
package/src/templates.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🏷️ TEMPLATES DO SISTEMA DE ETIQUETAS
|
|
3
|
+
*
|
|
4
|
+
* Configurações e definições de templates para cada tipo de etiqueta
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { templateVariables } from './constants.js';
|
|
8
|
+
import { LabelsAPI } from '../api/api.js';
|
|
9
|
+
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// TEMPLATES DE PEÇAS
|
|
12
|
+
// ============================================================================
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Obtém um template pelo seu ID a partir da API de etiquetas
|
|
17
|
+
* @param {number|string} templateId - ID do template/etiqueta a buscar
|
|
18
|
+
* @returns {Promise<Object>} Template com dados da API
|
|
19
|
+
*/
|
|
20
|
+
export async function getTemplateById(templateId) {
|
|
21
|
+
try {
|
|
22
|
+
// Converte para número se for string numérica
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
// Busca na API pelo ID
|
|
27
|
+
const labelData = await LabelsAPI.getLabel(templateId);
|
|
28
|
+
|
|
29
|
+
if (!labelData) {
|
|
30
|
+
throw new Error(`Template/etiqueta não encontrado com ID: ${templateId}`);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
// Retorna em formato de array conforme esperado pela função loadLabelTemplate
|
|
37
|
+
console.log('templateContent:', labelData);
|
|
38
|
+
return JSON.parse(labelData.label_content);
|
|
39
|
+
} catch (error) {
|
|
40
|
+
console.error(`Erro ao buscar template: ${error.message}`);
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Obtém templates por tipo
|
|
47
|
+
* @param {string} type - Tipo de etiqueta (parts, woodwork, inputs, scraps, volumes)
|
|
48
|
+
* @returns {Array} Lista de templates do tipo especificado
|
|
49
|
+
*/
|
|
50
|
+
export function getTemplatesByType(type) {
|
|
51
|
+
return Object.values(allTemplates).filter(template => template.type === type);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Lista todos os IDs de templates disponíveis
|
|
56
|
+
* @returns {Array} Lista de IDs de templates
|
|
57
|
+
*/
|
|
58
|
+
export function getTemplateIds() {
|
|
59
|
+
return Object.keys(allTemplates);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Valida se um template possui estrutura válida
|
|
64
|
+
* @param {Object} template - Template a ser validado
|
|
65
|
+
* @returns {boolean} True se válido, false caso contrário
|
|
66
|
+
*/
|
|
67
|
+
export function validateTemplate(template) {
|
|
68
|
+
if (!template || typeof template !== 'object') return false;
|
|
69
|
+
|
|
70
|
+
const requiredFields = ['id', 'name', 'type', 'pageWidth', 'pageHeight', 'elements'];
|
|
71
|
+
|
|
72
|
+
for (const field of requiredFields) {
|
|
73
|
+
if (!(field in template)) return false;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (!Array.isArray(template.elements)) return false;
|
|
77
|
+
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Obtém variáveis utilizadas em um template
|
|
83
|
+
* @param {Object} template - Template a ser analisado
|
|
84
|
+
* @returns {Array} Lista de variáveis encontradas
|
|
85
|
+
*/
|
|
86
|
+
export function getTemplateVariables(template) {
|
|
87
|
+
if (!validateTemplate(template)) return [];
|
|
88
|
+
|
|
89
|
+
const variables = new Set();
|
|
90
|
+
const variableRegex = /\{\{([^}]+)\}\}/g;
|
|
91
|
+
|
|
92
|
+
template.elements.forEach(element => {
|
|
93
|
+
if (element.content) {
|
|
94
|
+
let match;
|
|
95
|
+
while ((match = variableRegex.exec(element.content)) !== null) {
|
|
96
|
+
variables.add(match[1]);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
return Array.from(variables);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Substitui variáveis em um template com dados fornecidos
|
|
106
|
+
* @param {Object} template - Template base
|
|
107
|
+
* @param {Object} data - Dados para substituição
|
|
108
|
+
* @returns {Object} Template com variáveis substituídas
|
|
109
|
+
*/
|
|
110
|
+
export function replaceTemplateVariables(template, data) {
|
|
111
|
+
if (!validateTemplate(template)) return template;
|
|
112
|
+
|
|
113
|
+
const processedTemplate = JSON.parse(JSON.stringify(template));
|
|
114
|
+
|
|
115
|
+
processedTemplate.elements = processedTemplate.elements.map(element => {
|
|
116
|
+
if (element.content) {
|
|
117
|
+
element.content = element.content.replace(/\{\{([^}]+)\}\}/g, (match, variable) => {
|
|
118
|
+
return data[variable] || match;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
return element;
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
return processedTemplate;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// ============================================================================
|
|
128
|
+
// EXPORTAÇÃO PADRÃO
|
|
129
|
+
// ============================================================================
|
|
130
|
+
|
|
131
|
+
export default {
|
|
132
|
+
|
|
133
|
+
getTemplateById,
|
|
134
|
+
getTemplatesByType,
|
|
135
|
+
getTemplateIds,
|
|
136
|
+
validateTemplate,
|
|
137
|
+
getTemplateVariables,
|
|
138
|
+
replaceTemplateVariables
|
|
139
|
+
};
|