.tpl manualmente. Genera el código del template automáticamente a partir de la configuración de los bloques.
Accediendo al Template Builder
Para abrir el Template Builder:
También puede editar un template existente en el builder haciendo clic en su nombre en la lista de templates (si fue creado originalmente con el builder).
Layout del editor
Header
La barra superior contiene:- Back — regresa a la lista de templates.
- Template name — campo de texto editable inline.
- Output format — selector entre XML, HTML, CSV, TXT o PDF.
Cuando se selecciona PDF, el código de template generado utiliza formato HTML. La salida se renderiza como HTML y se convierte a PDF en el momento de la generación del reporte.
- View mode — alterne entre Visual (editor de bloques) y Code (preview del código generado).
- Download .tpl file — descarga el código del template generado como archivo
.tpl. - Save — valida los bloques y guarda el template.
Canvas (modo Visual)
El área principal donde se construye el template. Contiene:- Blocks toolbar — paleta de tipos de bloques disponibles en la parte superior. Haga clic en un tipo de bloque para agregarlo al canvas.
- Block list — la lista ordenada de bloques que componen el template. Puede arrastrar los bloques para reordenarlos.
Canvas (modo Code)
Un preview de solo lectura del código generado con syntax highlighting. Expresiones de template ({{ }}), tags ({% %}) y comentarios ({# #}) están diferenciados por color. Puede copiar el código o descargarlo.
Barra lateral de Data Sources
Un panel a la izquierda que muestra las conexiones de base de datos configuradas. Puede:- Navegar por schemas y tablas de sus Data Sources.
- Hacer clic en un campo para agregar automáticamente un bloque Variable referenciando ese campo.
La barra lateral de Data Sources solo muestra conexiones configuradas en la sección Data Sources. Si no hay conexiones disponibles, el panel mostrará un mensaje orientando la configuración.
Tipos de bloques
El builder proporciona 13 tipos de bloques, cada uno con una función específica:
| Bloque | Descripción | ||
|---|---|---|---|
| Text | Contenido de texto estático (HTML, XML, CSV o cualquier texto). | ||
| Variable | Inserta un valor de un campo de data source. Soporta filtros (ej: upper, lower). Puede referenciar data source, tabla, campo e índice. | ||
| Loop | Itera sobre una colección de una tabla de data source. Requiere un nombre de iterador y una fuente iterable (ej: dataSource.table). Acepta bloques hijos. | ||
| Conditional | Renderiza bloques hijos basado en una condición (ej: account.status == "active"). Soporta operadores: ==, !=, >, <, >=, <=, &&, ` | `. Opcionalmente incluye bloque else. | |
| Aggregation | Realiza cálculos agregados: Sum, Count, Average, Min, Max o Last Item by Group. Requiere fuente, campo y condición opcional. | ||
| Calculation | Evalúa una expresión matemática (ej: value * 1.05). Soporta operadores: +, -, *, /, ** (potencia), % (módulo). | ||
| Date/Time | Inserta fecha/hora formateada. Opcionalmente referencia un campo de fecha; usa la hora actual del servidor si está vacío. | ||
| Counter | Incrementa o muestra un contador nombrado. Útil para numeración de filas. Puede gestionar múltiples contadores. | ||
| Comment | Agrega un comentario que no aparece en el reporte generado. | ||
| Section | Agrupa bloques hijos bajo un título de sección. Útil para organizar templates grandes. | ||
| With (Assign) | Asigna el resultado de una expresión a una variable, que bloques hijos pueden referenciar. | ||
| Expression | Inserta una expresión inline renderizada como {{ expression }}. Soporta filtros con pipe. | ||
| Custom Tag | Renderiza una tag de template personalizada (ej: include, load). Acepta nombre de tag y argumentos opcionales. |
Trabajando con bloques
Agregando bloques
- Haga clic en un tipo de bloque en la toolbar en la parte superior del canvas, o
- Haga clic en un campo en la barra lateral de Data Sources para agregar un bloque Variable automáticamente.
Reordenando bloques
Arrastre los bloques usando el handle de arrastre para reordenarlos dentro del template.Configurando bloques
Cada bloque tiene su propio formulario de configuración que aparece inline. Complete los campos obligatorios para el tipo de bloque (ej: source y field para Variable, condition para Conditional).Opciones de los bloques
Cada bloque tiene opciones adicionales en su header:- Inline — renderiza el bloque sin salto de línea después.
- Trim whitespace — elimina espacios en blanco alrededor de la salida del bloque.
- Duplicate — crea una copia del bloque.
- Delete — elimina el bloque del template.
Bloques contenedor
Algunos bloques aceptan bloques hijos (Loop, Conditional, Section, With). Puede agregar bloques dentro de ellos para crear lógica de template anidada. Los bloques condicionales también soportan hijos else.Guardando y descargando
Cuando hace clic en Save, el builder:
- Valida todos los bloques en cuanto a campos obligatorios y configuración correcta.
- Envía los bloques al backend para generación de código.
- Si la generación en el backend falla, hace fallback a generación de código local.
- Guarda el template con el archivo
.tplgenerado.
.tpl generado en cualquier momento usando el botón Download .tpl file en el header, sin necesidad de guardar.
Atajos de teclado
| Atajo | Acción |
|---|---|
Ctrl+Z / ⌘+Z | Deshacer |
Ctrl+Shift+Z / ⌘+Shift+Z | Rehacer |

