sf-stimulsoft
v0.3.2
Published
Visor, impresión y carga completa de reportes Stimulsoft (plantilla .mrt + datos JSON) para las apps Angular de TFNBX.
Keywords
Readme
sf-stimulsoft
Visor e impresión de reportes Stimulsoft (plantilla .mrt + datos JSON) para las apps Angular de TFNBX.
Uso
// app.config.ts — la licencia la pone la app, nunca la librería (el paquete es público)
providers: [provideStimulsoft({ licenseKey: environment.stimulsoftKey })]<!-- Visor con barra de herramientas (imprimir, exportar) -->
<sf-sti-viewer [template]="mrt" [data]="data" (failed)="onError($event)"></sf-sti-viewer>// Imprimir sin visor (recibos, comprobantes)
await inject(StiPrintService).print(mrt, data);datatiene la forma{ data: [...] }: la clavedataes el DataSource que declara la plantilla.stimulsoft-dashboards-jses peerDependency y se carga conimport()dinámico: solo la descarga la pantalla que muestra o imprime un reporte. Es el motor y visor destimulsoft-reports-jsmás el módulo de dashboards, así que carga reportes y también plantillas con páginasStiDashboard. Desde la 0.2.0 reemplaza astimulsoft-reports-js: al actualizar, la app instalastimulsoft-dashboards-js.
Reporte completo por id
sf-sti-report hace todo el cargue: consulta el reporte, abre el formulario de parámetros si el reporte
tiene validaciones, carga plantilla y datos con esos parámetros y los muestra en el visor. La app decide
qué endpoints usa implementando StiReportGatewayService.
// app.config.ts
providers: [
MessageService, // los errores salen por el MessageService de PrimeNG; la app debe tener un <p-toast>
provideStimulsoft({ licenseKey: environment.stimulsoftKey }),
{ provide: STI_REPORT_SERVICE, useExisting: MiStiReportGateway }
]<sf-sti-report [idKatios]="idKatios" [reportId]="idReport" [user]="user"
[filterParams]="params" (failed)="onError($event)"></sf-sti-report>| Input | Qué es |
| --- | --- |
| idKatios | Cliente. |
| reportId | Id del reporte. Al cambiarlo se recarga. |
| reportType | TipoReporte del registro (p. ej. BI). Vacío: el gateway usa su valor por defecto. |
| user | { tdoc, ndoc, idHub?, ubicacion? }. La librería no lee la sesión. |
| filterParams | Valores para las validaciones por nombre, sin distinguir mayúsculas. |
| clasificacionPerfil | { PXTA } para los combos COMBOPERFIL (en WE8 está en localStorage, CLASIXPERF<idKatios>). |
La librería no pinta loading. La app se suscribe a SfStimulsoftService.isLoading$ y muestra el suyo,
igual que con SfPbiService de sf-pbi:
inject(SfStimulsoftService).isLoading$
.pipe(takeUntilDestroyed())
.subscribe(loading => (this.isLoading = loading));<app-loading *ngIf="isLoading"></app-loading>
<sf-sti-report ...></sf-sti-report>El gateway entrega los datos ya normalizados. Ver sti-report.port.ts:
getReport(ref)devuelve el registro conxmlAtributo, el XML de validaciones. Puede llevar más campos que el mismo gateway use después.loadReport(ref, registro, { params, format })devuelve{ template, data }.paramstrae el valor de cada validación por su ID, con las fechas en YYYY-MM-DD.getParametrosdevuelve las opciones{ Nivel, Descripcion }de un combo.getControlBusqueda(idKatios, idControl, valor)(opcional) devuelve las opciones{ Descripcion, Valor }de una consulta de CONTROLBUSQUEDA. Si la app no lo implementa, los campos BUSQUEDA son texto libre.
Tipos de campo (CAMPO de cada <VALIDACION>)
| CAMPO | Se pinta como | Qué recibe el procedimiento |
| --- | --- | --- |
| TEXT | Texto | Lo escrito |
| DATE | Selector de fecha | YYYY-MM-DD |
| NUMERIC | Número | El número |
| COMBO | Lista de TBLParametros del GRUPO | La Descripcion elegida |
| BUSQUEDA | Lista con filtro de la consulta CONTROLBUSQUEDA con ID = CONTROL | El Valor (código) elegido; vacío si se limpia |
| COMBOPERFIL | Lista de la clasificación por perfil | Lista 'a','b' de ubicaciones |
<VALIDACION NOMBRE="Linea" ID="LINEA" CAMPO="BUSQUEDA" CONTROL="2044"/>Un gateway puede ejecutar el procedimiento desde el navegador, como reports-embedded con
buildStiAttributes, o pedirle todo a una fachada que lo ejecute del lado del servidor, como TFB.
Peer dependencies: primeng, @angular/forms, fast-xml-parser y moment, además de Stimulsoft.
Publicar
ng build sf-stimulsoft
cd dist/sf-stimulsoft && npm publish