Page 1 of 2

Header in request some REST

Posted: Wed Jun 17, 2020 2:26 pm
by Mateus Garrido Kern
Hello,

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');
  }
}
And I have this problem, where show on console tab in my web page:

Image
(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

Re: Header in request some REST

Posted: Mon Jun 22, 2020 8:34 am
by Lech Kulikowski
Hello,

We need some additional time to investigate the issue, we will let you know about the result.

Thank you.
#2301

Re: Header in request some REST

Posted: Mon Jun 29, 2020 9:31 am
by Vardenis
Hello,

Are there any news ? I'm looking for this answer too

Re: Header in request some REST

Posted: Tue Jun 30, 2020 10:24 am
by Lech Kulikowski
Hello,

We are working on the problem. We will let you know when the solution is available.

Thank you.

Re: Header in request some REST

Posted: Thu Jul 02, 2020 8:45 am
by Lech Kulikowski
Hello,

Please send us a sample report with test data that reproduces the issue for analysis.

Thank you.

Re: Header in request some REST

Posted: Fri Jul 03, 2020 9:14 pm
by Mateus Garrido Kern
Lech Kulikowski wrote: Thu Jul 02, 2020 8:45 am Hello,

Please send us a sample report with test data that reproduces the issue for analysis.

Thank you.
Hello,

You have some e-mail adress to send the test project?

Thank You

Re: Header in request some REST

Posted: Sat Jul 04, 2020 6:28 am
by Andrew
Hello,

Please send it to support@stimulsoft.com and refer to this forum thread.

Thank you.

Re: Header in request some REST

Posted: Mon Jul 06, 2020 6:21 pm
by Mateus Garrido Kern
Hi Andrew, I sent a email to this address with the subject
Files about the topic "Header in request some REST", by Mateus Kern
, and this generate a request number 3164931.

I'm waiting for an answer, thank you.

Re: Header in request some REST

Posted: Mon Jul 06, 2020 10:02 pm
by Lech Kulikowski
Hello,

We need some additional time to investigate the issue, we will let you know about the result.

Thank you.

Re: Header in request some REST

Posted: Fri Jul 10, 2020 4:20 pm
by Mateus Garrido Kern
I solved this problem putting onBeginProcessData in each report

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';
    
    reportMiddle.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.onBeginProcessData = function (event) {
        event.headers.push({key: 'Authorization', value: 'Bearer ' + localStorage.getItem('token')});
      };
      
      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.onBeginProcessData = function (event) {
        event.headers.push({key: 'Authorization', value: 'Bearer ' + localStorage.getItem('token')});
      };
      
      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');
  }
}
Thank you guys for your attention, both here and by support@stimulsoft.com