angular/projects/researchdatabox/portal-ng-common/src/lib/report.service.ts
Report Service
Author: Shilo B
Properties |
|
Methods |
|
constructor(http: HttpClient, rootContext: string, utilService: UtilityService, configService: ConfigService, loggerService: LoggerService)
|
||||||||||||||||||
Parameters :
|
Public Async getReportConfig | ||||||
getReportConfig(name: string)
|
||||||
Method to retrieve the report configuration. Note: this is currently using the
Parameters :
Returns :
Promise<any>
|
Public Async getReportResult | ||||||||||||||||||||
getReportResult(name: string, pageNum: number, params: any, rows: number)
|
||||||||||||||||||||
Retrieves the ReportsResult page
Parameters :
Returns :
Promise<any>
|
Protected enableCsrfHeader |
enableCsrfHeader()
|
Inherited from
HttpClientService
|
Defined in
HttpClientService:110
|
Call from extending class to enable CSRF in the header
Returns :
void
|
Public getConfig |
getConfig()
|
Inherited from
HttpClientService
|
Defined in
HttpClientService:74
|
Returns the config block
Returns :
any
|
Public getInitSubject |
getInitSubject()
|
Inherited from
HttpClientService
|
Defined in
HttpClientService:78
|
Returns :
Subject<any>
|
Public isInitializing |
isInitializing()
|
Inherited from
HttpClientService
|
Defined in
HttpClientService:104
|
Default checks if we've loaded the config. Extensions can add more conditions as needed.
Returns :
boolean
true if service is ready |
Public Async waitForInit |
waitForInit()
|
Inherited from
HttpClientService
|
Defined in
HttpClientService:87
|
Returns itself when all dependent services/components/data is/are available.
Returns :
Promise<any>
itself |
Public rootContext |
Type : string
|
Decorators :
@Inject(APP_BASE_HREF)
|
Inherited from
HttpClientService
|
Defined in
HttpClientService:41
|
Public baseUrl |
Type : string
|
Inherited from
HttpClientService
|
Defined in
HttpClientService:47
|
Public baseUrlWithContext |
Type : string
|
Inherited from
HttpClientService
|
Defined in
HttpClientService:49
|
Public brandingAndPortalUrl |
Type : string
|
Inherited from
HttpClientService
|
Defined in
HttpClientService:48
|
Protected config |
Type : any
|
Inherited from
HttpClientService
|
Defined in
HttpClientService:46
|
Protected httpContext |
Type : HttpContext
|
Default value : null as any
|
Inherited from
HttpClientService
|
Defined in
HttpClientService:50
|
Protected initSubject |
Type : any
|
Inherited from
HttpClientService
|
Defined in
HttpClientService:45
|
Protected reqOptsJsonBodyOnly |
Type : any
|
Default value : {responseType: 'json', observe: 'body'}
|
Inherited from
HttpClientService
|
Defined in
HttpClientService:52
|
import { Injectable, Inject } from '@angular/core';
import { APP_BASE_HREF } from '@angular/common';
import { HttpClient } from '@angular/common/http';
import { map, firstValueFrom } from 'rxjs';
import { isEmpty as _isEmpty } from 'lodash-es';
import { HttpClientService } from './httpClient.service';
import { ConfigService } from './config.service';
import { UtilityService } from './utility.service';
import { LoggerService } from './logger.service';
import { ReportDto, ReportResultDto } from '@researchdatabox/sails-ng-common';
/**
* Report Service
*
* Author: <a href='https://github.com/shilob' target='_blank'>Shilo B</a>
*/
@Injectable()
export class ReportService extends HttpClientService {
constructor(
@Inject(HttpClient) protected override http: HttpClient,
@Inject(APP_BASE_HREF) public override rootContext: string,
@Inject(UtilityService) protected override utilService: UtilityService,
@Inject(ConfigService) protected override configService: ConfigService,
@Inject(LoggerService) private loggerService: LoggerService
) {
super(http, rootContext, utilService, configService);
}
/**
* Method to retrieve the report configuration.
*
* Note: this is currently using the `/admin` endpoint
*
* @param name
*/
public async getReportConfig(name: string): Promise<any> {
if (_isEmpty(name)) {
this.loggerService.error(`getReportConfig() -> Parameter 'name' is empty!`);
throw new Error('Report Config name is empty!');
}
const req = this.http.get(`${this.brandingAndPortalUrl}/admin/getReport?name=${name}`, this.reqOptsJsonBodyOnly);
req.pipe(
map((data:any) => {
return data as ReportDto
})
);
return firstValueFrom(req);
}
/**
* Retrieves the ReportsResult page
*
*/
public async getReportResult(name: string, pageNum:number, params:any, rows:number = 10): Promise<any> {
if (_isEmpty(name)) {
this.loggerService.error(`getReportResult() -> Parameter 'name' is empty!`);
throw new Error('Report name is empty!');
}
let start = (pageNum-1) * rows;
var url = `${this.brandingAndPortalUrl}/admin/getReportResults?name=${name}&start=${start}&rows=${rows}`;
for(var key in params) {
url=url+'&'+key+"="+params[key];
}
const req = this.http.get(url, this.reqOptsJsonBodyOnly);
req.pipe(
map((data:any) => {
return data as ReportResultDto
})
);
return await firstValueFrom(req);
}
}