Add createDefaultReports feature

This commit is contained in:
mauriziovitale84
2016-11-07 11:32:59 +00:00
parent 56e08a1294
commit e68705f137
3 changed files with 76 additions and 10 deletions

View File

@@ -81,6 +81,40 @@ describe('Test ng2-activiti-analytics Report list', () => {
expect(component.isReportsEmpty()).toBeTruthy();
});
it('should return the default reports when the report list is empty', (done) => {
fixture.detectChanges();
component.onSuccess.subscribe(() => {
fixture.detectChanges();
expect(element.querySelector('#report-list-0 > i').innerHTML).toBe('assignment');
expect(element.querySelector('#report-list-0 > span').innerHTML).toBe('Fake Test Process definition heat map');
expect(element.querySelector('#report-list-1 > span').innerHTML).toBe('Fake Test Process definition overview');
expect(element.querySelector('#report-list-2 > span').innerHTML).toBe('Fake Test Process instances overview');
expect(element.querySelector('#report-list-3 > span').innerHTML).toBe('Fake Test Task overview');
expect(element.querySelector('#report-list-4 > span').innerHTML).toBe('Fake Test Task service level agreement');
expect(component.isReportsEmpty()).toBeFalsy();
done();
});
jasmine.Ajax.requests.mostRecent().respondWith({
status: 200,
contentType: 'json',
responseText: []
});
jasmine.Ajax.requests.mostRecent().respondWith({
status: 200,
contentType: 'json',
responseText: []
});
jasmine.Ajax.requests.mostRecent().respondWith({
status: 200,
contentType: 'json',
responseText: reportList
});
});
it('Report render the report list relative to a single app', (done) => {
fixture.detectChanges();

View File

@@ -60,13 +60,20 @@ export class AnalyticsReportListComponent implements OnInit {
this.getReportListByAppId();
}
/**
* Get the report list by app id
*/
getReportListByAppId() {
this.analyticsService.getReportList().subscribe(
(res: ReportParametersModel[]) => {
if (res && res.length === 0) {
this.createDefaultReports();
} else {
res.forEach((report) => {
this.reportObserver.next(report);
});
this.onSuccess.emit(res);
}
},
(err: any) => {
this.onError.emit(err);
@@ -75,6 +82,28 @@ export class AnalyticsReportListComponent implements OnInit {
);
}
/**
* Create the default reports and return the report list
*/
createDefaultReports() {
this.analyticsService.createDefaultReports().subscribe(
() => {
this.analyticsService.getReportList().subscribe(
(response: ReportParametersModel[]) => {
response.forEach((report) => {
this.reportObserver.next(report);
});
this.onSuccess.emit(response);
}
);
}
);
}
/**
* Check if the report list is empty
* @returns {boolean|ReportParametersModel[]}
*/
isReportsEmpty(): boolean {
return this.reports === undefined || (this.reports && this.reports.length === 0);
}

View File

@@ -46,9 +46,6 @@ export class AnalyticsService {
let reportModel = new ReportParametersModel(report);
reports.push(reportModel);
});
if (body && body.length === 0) {
return this.createDefaultReports();
}
return reports;
}).catch(this.handleError);
}
@@ -215,9 +212,15 @@ export class AnalyticsService {
}).catch(this.handleError);
}
public createDefaultReports(): ReportParametersModel[] {
let reports: ReportParametersModel[] = [];
return reports;
public createDefaultReports(): Observable<any> {
let url = `${this.alfrescoSettingsService.getBPMApiBaseUrl()}/app/rest/reporting/default-reports`;
let options = this.getRequestOptions();
let body = {};
return this.http
.post(url, body, options)
.map((res: any) => {
return res;
}).catch(this.handleError);
}
public getHeaders(): Headers {