I'm having trouble putting headers in my API requests using the report merge.
How I put headers in my requests using report merge?
My code is it:
Code: Select all
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
declare var Stimulsoft: any;
@Component({
selector: 'app-livro-diario-relatorio',
template: `<div id="viewerContent"></div>`
})
export class LivroDiarioRelatorioComponent implements OnInit {
show: boolean;
options: any = new Stimulsoft.Viewer.StiViewerOptions();
viewer: any = new Stimulsoft.Viewer.StiViewer(this.options, 'StiViewer', false);
constructor(private activatedRoute: ActivatedRoute) {}
ngOnInit() {
this.activatedRoute.queryParams.subscribe(params => {
this.show = params['show'] === 'true' ? true : false;
});
let reportStart;
let reportFinish;
let dbJsonStart;
let dbJsonFinish;
const reportMiddle = new Stimulsoft.Report.StiReport.createNewReport();
reportMiddle.loadFile('../../../../assets/ReportMiddle.mrt');
reportMiddle.isAsync = true;
const reportMerge = new Stimulsoft.Report.StiReport();
reportMerge.reportUnit = reportMiddle.reportUnit;
reportMerge.renderAsync();
reportMerge.renderedPages.clear();
const dbJsonMiddle = reportMiddle.dictionary.databases.getByName('JSON');
dbJsonMiddle.pathData = 'https://api.test/middle';
this.viewer.onBeginProcessData = function (event) {
event.headers.push({key: 'Authorization', value: 'Bearer ' + localStorage.getItem('token')});
};
if (this.show) {
reportStart = new Stimulsoft.Report.StiReport.createNewReport();
reportStart.loadFile('../../../../assets/ReportStart.mrt');
reportStart.isAsync = true;
reportFinish = new Stimulsoft.Report.StiReport.createNewReport();
reportFinish.loadFile('../../../../assets/ReportFinish.mrt');
reportFinish.isAsync = true;
dbJsonStart = reportStart.dictionary.databases.getByName('JSON');
dbJsonStart.pathData = 'https://api.test/start';
dbJsonFinish = reportFinish.dictionary.databases.getByName('JSON');
dbJsonFinish.pathData = 'https://api.test/finish';
reportStart.renderAsync(function () {
for (let index = 0; index < reportStart.renderedPages.count; ++index) {
reportMerge.renderedPages.add(reportStart.renderedPages.getByIndex(index));
}
});
}
reportMiddle.renderAsync(function () {
for (let index = 0; index < reportMiddle.renderedPages.count; ++index) {
reportMerge.renderedPages.add(reportMiddle.renderedPages.getByIndex(index));
}
});
if (this.show) {
reportFinish.renderAsync(function () {
for (let index = 0; index < reportFinish.renderedPages.count; ++index) {
reportMerge.renderedPages.add(reportFinish.renderedPages.getByIndex(index));
}
});
}
reportMerge.renderedPages.list.forEach(function(page, i, arr) {
const pagination = page.components.getByName('Pagination');
if (pagination) {
pagination.text = 'Page ' + (i + 1) + ' of ' + reportMerge.renderedPages.count;
}
const centralText = page.components.getByName('CentralText');
if (centralText) {
centralText.text = centralText.text.replace(/{NumberPages}/gi, '' + reportMerge.renderedPages.count);
}
});
this.viewer.report = reportMerge;
this.viewer.renderHtml('viewerContent');
}
}
(If the image didnt work, you can see this image access this url: https://prnt.sc/t1hcnt or see the attachment named CONSOLE_LOG_ERRO.png)
Thank you