@acorex/connectivity 20.3.0-next.7 → 20.3.0-next.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/index.d.ts +13 -7
- package/fesm2022/acorex-connectivity-api-execute.command-CP4cZ_5M.mjs +86 -0
- package/fesm2022/acorex-connectivity-api-execute.command-CP4cZ_5M.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-api.mjs +334 -12
- package/fesm2022/acorex-connectivity-api.mjs.map +1 -1
- package/fesm2022/acorex-connectivity-mock.mjs +2469 -392
- package/fesm2022/acorex-connectivity-mock.mjs.map +1 -1
- package/mock/index.d.ts +80 -6
- package/package.json +5 -5
package/api/index.d.ts
CHANGED
|
@@ -2,11 +2,12 @@ import { AXPQueryRequest, AXPPagedListResult } from '@acorex/platform/core';
|
|
|
2
2
|
import { AXPEntityStorageService } from '@acorex/platform/layout/entity';
|
|
3
3
|
import { HttpClient } from '@angular/common/http';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import * as i1 from 'angular-oauth2-oidc';
|
|
5
|
+
import * as i1$1 from 'angular-oauth2-oidc';
|
|
6
6
|
import { AuthConfig } from 'angular-oauth2-oidc';
|
|
7
7
|
import * as i2 from '@acorex/platform/auth';
|
|
8
8
|
import { AXPApplicationLoader, AXPApplication, AXPFeatureLoader, AXPFeature, AXPAuthStrategy, AXPBaseCredentials, AXPSignInResult, AXPSessionContext, AXPPermissionLoader, AXPPermission, AXPTenantLoader, AXPTenant } from '@acorex/platform/auth';
|
|
9
9
|
import * as i3 from '@acorex/connectivity/utils';
|
|
10
|
+
import * as i1 from '@acorex/platform/runtime';
|
|
10
11
|
import { Observable } from 'rxjs';
|
|
11
12
|
|
|
12
13
|
declare class AXCApiEntityStorageService implements AXPEntityStorageService<string, any> {
|
|
@@ -15,16 +16,15 @@ declare class AXCApiEntityStorageService implements AXPEntityStorageService<stri
|
|
|
15
16
|
private filterService;
|
|
16
17
|
private entityResolver;
|
|
17
18
|
private mainUrl;
|
|
19
|
+
private readonly API_VERSION;
|
|
20
|
+
private readonly DEFAULT_AREA;
|
|
18
21
|
constructor(http: HttpClient);
|
|
19
22
|
get dbName(): string;
|
|
20
23
|
getConfigEntity(entityName: string): {
|
|
21
24
|
module: string;
|
|
22
25
|
entity: string;
|
|
23
26
|
area: string;
|
|
24
|
-
|
|
25
|
-
module: string;
|
|
26
|
-
entity: string;
|
|
27
|
-
area: null;
|
|
27
|
+
version: string;
|
|
28
28
|
};
|
|
29
29
|
initial<T = any>(entityName: string, collection: T[]): Promise<T[]>;
|
|
30
30
|
getOne<T = any>(entityName: string, id: string): Promise<T>;
|
|
@@ -39,9 +39,15 @@ declare class AXCApiEntityStorageService implements AXPEntityStorageService<stri
|
|
|
39
39
|
static ɵprov: i0.ɵɵInjectableDeclaration<AXCApiEntityStorageService>;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
declare class AXCReportManagementApiModule {
|
|
43
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXCReportManagementApiModule, never>;
|
|
44
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AXCReportManagementApiModule, never, [typeof i1.AXPRuntimeModule], never>;
|
|
45
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<AXCReportManagementApiModule>;
|
|
46
|
+
}
|
|
47
|
+
|
|
42
48
|
declare class AXCApiModule {
|
|
43
49
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXCApiModule, never>;
|
|
44
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<AXCApiModule, never, [typeof i1.OAuthModule, typeof i2.AXPAuthModule, typeof i3.AXCUtilsModule], never>;
|
|
50
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AXCApiModule, never, [typeof i1$1.OAuthModule, typeof i2.AXPAuthModule, typeof i3.AXCUtilsModule, typeof AXCReportManagementApiModule], never>;
|
|
45
51
|
static ɵinj: i0.ɵɵInjectorDeclaration<AXCApiModule>;
|
|
46
52
|
}
|
|
47
53
|
|
|
@@ -228,5 +234,5 @@ declare class APIGoogleStrategy extends AXPAuthStrategy {
|
|
|
228
234
|
static ɵprov: i0.ɵɵInjectableDeclaration<APIGoogleStrategy>;
|
|
229
235
|
}
|
|
230
236
|
|
|
231
|
-
export { APIGoogleStrategy, AXCAPIOidcStrategy, AXCApiEntityStorageService, AXCApiModule, AXMConfigurationService, AXMOidcApplicationLoader, AXMOidcFeatureLoader, AXMOidcPermissionLoader, AXMOidcTenantLoader };
|
|
237
|
+
export { APIGoogleStrategy, AXCAPIOidcStrategy, AXCApiEntityStorageService, AXCApiModule, AXCReportManagementApiModule, AXMConfigurationService, AXMOidcApplicationLoader, AXMOidcFeatureLoader, AXMOidcPermissionLoader, AXMOidcTenantLoader };
|
|
232
238
|
export type { AXPOAuthExternalCredentials, AXPUserPassCredentials, ApplicationConfiguration, Auth, Culture, IAuthenticationDataModel, Language, Localization, NameValue, Resource };
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { AXPReportDefinitionService } from '@acorex/modules/report-management';
|
|
2
|
+
import { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';
|
|
3
|
+
import { HttpClient } from '@angular/common/http';
|
|
4
|
+
import * as i0 from '@angular/core';
|
|
5
|
+
import { inject, Injectable } from '@angular/core';
|
|
6
|
+
import { firstValueFrom } from 'rxjs';
|
|
7
|
+
|
|
8
|
+
class AXCReportExecuteCommand {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.http = inject(HttpClient);
|
|
11
|
+
this.reportDefinitionService = inject(AXPReportDefinitionService);
|
|
12
|
+
this.configs = inject(AXP_ROOT_CONFIG_TOKEN);
|
|
13
|
+
this.baseUrl = this.configs.baseUrl;
|
|
14
|
+
}
|
|
15
|
+
//#region ---- Command Implementation ----
|
|
16
|
+
async execute(context) {
|
|
17
|
+
try {
|
|
18
|
+
const { reportId, layoutId, parameters } = context;
|
|
19
|
+
// Get the report definition to find the layout
|
|
20
|
+
const reportDefinition = await this.reportDefinitionService.getReportById(reportId);
|
|
21
|
+
if (!reportDefinition) {
|
|
22
|
+
throw new Error(`Report with ID ${reportId} not found`);
|
|
23
|
+
}
|
|
24
|
+
// Find the specific layout
|
|
25
|
+
const layoutDefinition = reportDefinition.layouts.find((l) => l.id === layoutId);
|
|
26
|
+
if (!layoutDefinition) {
|
|
27
|
+
throw new Error(`Layout with ID ${layoutId} not found in report ${reportId}`);
|
|
28
|
+
}
|
|
29
|
+
// Call the Execute API endpoint
|
|
30
|
+
const url = `${this.baseUrl}/v1/global/Report-Management/report/Execute`;
|
|
31
|
+
const body = {
|
|
32
|
+
reportId,
|
|
33
|
+
parameters,
|
|
34
|
+
};
|
|
35
|
+
const executeResult = await firstValueFrom(this.http.post(url, body));
|
|
36
|
+
// Convert ExecuteReportDto to AXPExecutionReportResult format
|
|
37
|
+
let executionResult;
|
|
38
|
+
if (executeResult.type === 'table') {
|
|
39
|
+
executionResult = {
|
|
40
|
+
type: 'table',
|
|
41
|
+
items: executeResult.items,
|
|
42
|
+
total: executeResult.totalCount,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
else if (executeResult.type === 'chart') {
|
|
46
|
+
executionResult = {
|
|
47
|
+
type: 'chart',
|
|
48
|
+
data: executeResult.items[0] || {},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
else if (executeResult.type === 'cards') {
|
|
52
|
+
executionResult = {
|
|
53
|
+
type: 'cards',
|
|
54
|
+
items: executeResult.items,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
executionResult = {
|
|
59
|
+
type: 'custom',
|
|
60
|
+
data: executeResult.items,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
// Return the combined layout configuration and data
|
|
64
|
+
return {
|
|
65
|
+
...layoutDefinition.layout,
|
|
66
|
+
data: executionResult,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
console.error('Error executing report:', error);
|
|
71
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
72
|
+
throw new Error(`Failed to execute report: ${errorMessage}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCReportExecuteCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
76
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCReportExecuteCommand, providedIn: 'root' }); }
|
|
77
|
+
}
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCReportExecuteCommand, decorators: [{
|
|
79
|
+
type: Injectable,
|
|
80
|
+
args: [{
|
|
81
|
+
providedIn: 'root',
|
|
82
|
+
}]
|
|
83
|
+
}] });
|
|
84
|
+
|
|
85
|
+
export { AXCReportExecuteCommand };
|
|
86
|
+
//# sourceMappingURL=acorex-connectivity-api-execute.command-CP4cZ_5M.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-connectivity-api-execute.command-CP4cZ_5M.mjs","sources":["../tmp-esm2022/api/lib/report-management/execute.command.js"],"sourcesContent":["import { AXPReportDefinitionService, } from '@acorex/modules/report-management';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AXCReportExecuteCommand {\n constructor() {\n this.http = inject(HttpClient);\n this.reportDefinitionService = inject(AXPReportDefinitionService);\n this.configs = inject(AXP_ROOT_CONFIG_TOKEN);\n this.baseUrl = this.configs.baseUrl;\n }\n //#region ---- Command Implementation ----\n async execute(context) {\n try {\n const { reportId, layoutId, parameters } = context;\n // Get the report definition to find the layout\n const reportDefinition = await this.reportDefinitionService.getReportById(reportId);\n if (!reportDefinition) {\n throw new Error(`Report with ID ${reportId} not found`);\n }\n // Find the specific layout\n const layoutDefinition = reportDefinition.layouts.find((l) => l.id === layoutId);\n if (!layoutDefinition) {\n throw new Error(`Layout with ID ${layoutId} not found in report ${reportId}`);\n }\n // Call the Execute API endpoint\n const url = `${this.baseUrl}/v1/global/Report-Management/report/Execute`;\n const body = {\n reportId,\n parameters,\n };\n const executeResult = await firstValueFrom(this.http.post(url, body));\n // Convert ExecuteReportDto to AXPExecutionReportResult format\n let executionResult;\n if (executeResult.type === 'table') {\n executionResult = {\n type: 'table',\n items: executeResult.items,\n total: executeResult.totalCount,\n };\n }\n else if (executeResult.type === 'chart') {\n executionResult = {\n type: 'chart',\n data: executeResult.items[0] || {},\n };\n }\n else if (executeResult.type === 'cards') {\n executionResult = {\n type: 'cards',\n items: executeResult.items,\n };\n }\n else {\n executionResult = {\n type: 'custom',\n data: executeResult.items,\n };\n }\n // Return the combined layout configuration and data\n return {\n ...layoutDefinition.layout,\n data: executionResult,\n };\n }\n catch (error) {\n console.error('Error executing report:', error);\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n throw new Error(`Failed to execute report: ${errorMessage}`);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXCReportExecuteCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXCReportExecuteCommand, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXCReportExecuteCommand, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS5jb21tYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb25uZWN0aXZpdHkvYXBpL3NyYy9saWIvcmVwb3J0LW1hbmFnZW1lbnQvZXhlY3V0ZS5jb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFLTCwwQkFBMEIsR0FFM0IsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFNdEMsTUFBTSxPQUFPLHVCQUF1QjtJQUhwQztRQUltQixTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLDRCQUF1QixHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzdELFlBQU8sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN4QyxZQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7S0FvRWpEO0lBbEVDLDhDQUE4QztJQUU5QyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQWtDO1FBQzlDLElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQztZQUVuRCwrQ0FBK0M7WUFDL0MsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLFFBQVEsWUFBWSxDQUFDLENBQUM7WUFDMUQsQ0FBQztZQUVELDJCQUEyQjtZQUMzQixNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUE0QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQzVHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixRQUFRLHdCQUF3QixRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2hGLENBQUM7WUFFRCxnQ0FBZ0M7WUFDaEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyw2Q0FBNkMsQ0FBQztZQUN6RSxNQUFNLElBQUksR0FBRztnQkFDWCxRQUFRO2dCQUNSLFVBQVU7YUFDWCxDQUFDO1lBRUYsTUFBTSxhQUFhLEdBQXdCLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFzQixHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUVoSCw4REFBOEQ7WUFDOUQsSUFBSSxlQUF5QyxDQUFDO1lBRTlDLElBQUksYUFBYSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDbkMsZUFBZSxHQUFHO29CQUNoQixJQUFJLEVBQUUsT0FBTztvQkFDYixLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUs7b0JBQzFCLEtBQUssRUFBRSxhQUFhLENBQUMsVUFBVTtpQkFDaEMsQ0FBQztZQUNKLENBQUM7aUJBQU0sSUFBSSxhQUFhLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUMxQyxlQUFlLEdBQUc7b0JBQ2hCLElBQUksRUFBRSxPQUFPO29CQUNiLElBQUksRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7aUJBQ25DLENBQUM7WUFDSixDQUFDO2lCQUFNLElBQUksYUFBYSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDMUMsZUFBZSxHQUFHO29CQUNoQixJQUFJLEVBQUUsT0FBTztvQkFDYixLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUs7aUJBQzNCLENBQUM7WUFDSixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sZUFBZSxHQUFHO29CQUNoQixJQUFJLEVBQUUsUUFBUTtvQkFDZCxJQUFJLEVBQUUsYUFBYSxDQUFDLEtBQUs7aUJBQzFCLENBQUM7WUFDSixDQUFDO1lBRUQsb0RBQW9EO1lBQ3BELE9BQU87Z0JBQ0wsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNO2dCQUMxQixJQUFJLEVBQUUsZUFBZTthQUN0QixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hELE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztZQUM5RSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDOzhHQXJFVSx1QkFBdUI7a0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhQRXhlY3V0aW9uUmVwb3J0Q29tbWFuZCxcbiAgQVhQRXhlY3V0aW9uUmVwb3J0Q29tbWFuZFJlc3VsdCxcbiAgQVhQRXhlY3V0aW9uUmVwb3J0UmVzdWx0LFxuICBBWFBMYXlvdXRFeGVjdXRpb25Db250ZXh0LFxuICBBWFBSZXBvcnREZWZpbml0aW9uU2VydmljZSxcbiAgQVhQUmVwb3J0TGF5b3V0RGVmaW5pdGlvbixcbn0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYUF9ST09UX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBFeGVjdXRlUmVwb3J0RHRvIH0gZnJvbSAnLi9yZXBvcnQtbWFuYWdlbWVudC1hcGkucHJvdmlkZXJzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYQ1JlcG9ydEV4ZWN1dGVDb21tYW5kIGltcGxlbWVudHMgQVhQRXhlY3V0aW9uUmVwb3J0Q29tbWFuZCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgcHJpdmF0ZSByZWFkb25seSByZXBvcnREZWZpbml0aW9uU2VydmljZSA9IGluamVjdChBWFBSZXBvcnREZWZpbml0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlncyA9IGluamVjdChBWFBfUk9PVF9DT05GSUdfVE9LRU4pO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VVcmwgPSB0aGlzLmNvbmZpZ3MuYmFzZVVybDtcblxuICAvLyNyZWdpb24gLS0tLSAgIENvbW1hbmQgSW1wbGVtZW50YXRpb24gICAtLS0tXG5cbiAgYXN5bmMgZXhlY3V0ZShjb250ZXh0OiBBWFBMYXlvdXRFeGVjdXRpb25Db250ZXh0KTogUHJvbWlzZTxBWFBFeGVjdXRpb25SZXBvcnRDb21tYW5kUmVzdWx0PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgcmVwb3J0SWQsIGxheW91dElkLCBwYXJhbWV0ZXJzIH0gPSBjb250ZXh0O1xuXG4gICAgICAvLyBHZXQgdGhlIHJlcG9ydCBkZWZpbml0aW9uIHRvIGZpbmQgdGhlIGxheW91dFxuICAgICAgY29uc3QgcmVwb3J0RGVmaW5pdGlvbiA9IGF3YWl0IHRoaXMucmVwb3J0RGVmaW5pdGlvblNlcnZpY2UuZ2V0UmVwb3J0QnlJZChyZXBvcnRJZCk7XG4gICAgICBpZiAoIXJlcG9ydERlZmluaXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXBvcnQgd2l0aCBJRCAke3JlcG9ydElkfSBub3QgZm91bmRgKTtcbiAgICAgIH1cblxuICAgICAgLy8gRmluZCB0aGUgc3BlY2lmaWMgbGF5b3V0XG4gICAgICBjb25zdCBsYXlvdXREZWZpbml0aW9uID0gcmVwb3J0RGVmaW5pdGlvbi5sYXlvdXRzLmZpbmQoKGw6IEFYUFJlcG9ydExheW91dERlZmluaXRpb24pID0+IGwuaWQgPT09IGxheW91dElkKTtcbiAgICAgIGlmICghbGF5b3V0RGVmaW5pdGlvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExheW91dCB3aXRoIElEICR7bGF5b3V0SWR9IG5vdCBmb3VuZCBpbiByZXBvcnQgJHtyZXBvcnRJZH1gKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2FsbCB0aGUgRXhlY3V0ZSBBUEkgZW5kcG9pbnRcbiAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVybH0vdjEvZ2xvYmFsL1JlcG9ydC1NYW5hZ2VtZW50L3JlcG9ydC9FeGVjdXRlYDtcbiAgICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICAgIHJlcG9ydElkLFxuICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgZXhlY3V0ZVJlc3VsdDogQVhQRXhlY3V0ZVJlcG9ydER0byA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0PEFYUEV4ZWN1dGVSZXBvcnREdG8+KHVybCwgYm9keSkpO1xuXG4gICAgICAvLyBDb252ZXJ0IEV4ZWN1dGVSZXBvcnREdG8gdG8gQVhQRXhlY3V0aW9uUmVwb3J0UmVzdWx0IGZvcm1hdFxuICAgICAgbGV0IGV4ZWN1dGlvblJlc3VsdDogQVhQRXhlY3V0aW9uUmVwb3J0UmVzdWx0O1xuXG4gICAgICBpZiAoZXhlY3V0ZVJlc3VsdC50eXBlID09PSAndGFibGUnKSB7XG4gICAgICAgIGV4ZWN1dGlvblJlc3VsdCA9IHtcbiAgICAgICAgICB0eXBlOiAndGFibGUnLFxuICAgICAgICAgIGl0ZW1zOiBleGVjdXRlUmVzdWx0Lml0ZW1zLFxuICAgICAgICAgIHRvdGFsOiBleGVjdXRlUmVzdWx0LnRvdGFsQ291bnQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKGV4ZWN1dGVSZXN1bHQudHlwZSA9PT0gJ2NoYXJ0Jykge1xuICAgICAgICBleGVjdXRpb25SZXN1bHQgPSB7XG4gICAgICAgICAgdHlwZTogJ2NoYXJ0JyxcbiAgICAgICAgICBkYXRhOiBleGVjdXRlUmVzdWx0Lml0ZW1zWzBdIHx8IHt9LFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChleGVjdXRlUmVzdWx0LnR5cGUgPT09ICdjYXJkcycpIHtcbiAgICAgICAgZXhlY3V0aW9uUmVzdWx0ID0ge1xuICAgICAgICAgIHR5cGU6ICdjYXJkcycsXG4gICAgICAgICAgaXRlbXM6IGV4ZWN1dGVSZXN1bHQuaXRlbXMsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleGVjdXRpb25SZXN1bHQgPSB7XG4gICAgICAgICAgdHlwZTogJ2N1c3RvbScsXG4gICAgICAgICAgZGF0YTogZXhlY3V0ZVJlc3VsdC5pdGVtcyxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gUmV0dXJuIHRoZSBjb21iaW5lZCBsYXlvdXQgY29uZmlndXJhdGlvbiBhbmQgZGF0YVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubGF5b3V0RGVmaW5pdGlvbi5sYXlvdXQsXG4gICAgICAgIGRhdGE6IGV4ZWN1dGlvblJlc3VsdCxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV4ZWN1dGluZyByZXBvcnQ6JywgZXJyb3IpO1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcic7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBleGVjdXRlIHJlcG9ydDogJHtlcnJvck1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG4iXX0="],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,8 @@ import { OAuthService, OAuthModule } from 'angular-oauth2-oidc';
|
|
|
14
14
|
import { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';
|
|
15
15
|
import { Router } from '@angular/router';
|
|
16
16
|
import { AXCUtilsModule, AXCExternalAuthorizationService } from '@acorex/connectivity/utils';
|
|
17
|
+
import { AXPRuntimeModule, provideCommandSetups } from '@acorex/platform/runtime';
|
|
18
|
+
import { AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER } from '@acorex/modules/report-management';
|
|
17
19
|
|
|
18
20
|
class AXCApiEntityStorageService {
|
|
19
21
|
constructor(http) {
|
|
@@ -22,6 +24,9 @@ class AXCApiEntityStorageService {
|
|
|
22
24
|
this.filterService = inject(AXPFilterOperatorMiddlewareService);
|
|
23
25
|
this.entityResolver = inject(AXPEntityResolver);
|
|
24
26
|
this.mainUrl = this.configs.baseUrl;
|
|
27
|
+
// API routing constants
|
|
28
|
+
this.API_VERSION = 'v1';
|
|
29
|
+
this.DEFAULT_AREA = 'global';
|
|
25
30
|
}
|
|
26
31
|
get dbName() {
|
|
27
32
|
return 'ACoreXPlatform';
|
|
@@ -37,6 +42,7 @@ class AXCApiEntityStorageService {
|
|
|
37
42
|
module: moduleKebab,
|
|
38
43
|
entity: entityKebab,
|
|
39
44
|
area: areaKebab,
|
|
45
|
+
version: this.API_VERSION,
|
|
40
46
|
};
|
|
41
47
|
}
|
|
42
48
|
else {
|
|
@@ -46,7 +52,8 @@ class AXCApiEntityStorageService {
|
|
|
46
52
|
return {
|
|
47
53
|
module: moduleKebab,
|
|
48
54
|
entity: entityKebab,
|
|
49
|
-
area:
|
|
55
|
+
area: this.DEFAULT_AREA,
|
|
56
|
+
version: this.API_VERSION,
|
|
50
57
|
};
|
|
51
58
|
}
|
|
52
59
|
}
|
|
@@ -59,22 +66,22 @@ class AXCApiEntityStorageService {
|
|
|
59
66
|
}
|
|
60
67
|
async getOne(entityName, id) {
|
|
61
68
|
const routeElement = await this.getConfigEntity(entityName);
|
|
62
|
-
const url = `${this.mainUrl}/${routeElement.
|
|
69
|
+
const url = `${this.mainUrl}/${routeElement.version}/${routeElement.area}/${routeElement.module}/${routeElement.entity}${id ? '/' + id : ''}`;
|
|
63
70
|
return firstValueFrom(this.http.get(url));
|
|
64
71
|
}
|
|
65
72
|
async updateOne(entityName, id, keyValue) {
|
|
66
73
|
const routeElement = await this.getConfigEntity(entityName);
|
|
67
|
-
const url = `${this.mainUrl}/${routeElement.
|
|
74
|
+
const url = `${this.mainUrl}/${routeElement.version}/${routeElement.area}/${routeElement.module}/${routeElement.entity}${id ? '/' + id : ''}`;
|
|
68
75
|
return firstValueFrom(this.http.put(url, keyValue));
|
|
69
76
|
}
|
|
70
77
|
async deleteOne(entityName, id) {
|
|
71
78
|
const routeElement = await this.getConfigEntity(entityName);
|
|
72
|
-
const url = `${this.mainUrl}/${routeElement.
|
|
79
|
+
const url = `${this.mainUrl}/${routeElement.version}/${routeElement.area}/${routeElement.module}/${routeElement.entity}/${id}`;
|
|
73
80
|
firstValueFrom(this.http.delete(url));
|
|
74
81
|
}
|
|
75
82
|
async insertOne(entityName, entityItem) {
|
|
76
83
|
const routeElement = await this.getConfigEntity(entityName);
|
|
77
|
-
const url = `${this.mainUrl}/${routeElement.
|
|
84
|
+
const url = `${this.mainUrl}/${routeElement.version}/${routeElement.area}/${routeElement.module}/${routeElement.entity}`;
|
|
78
85
|
return firstValueFrom(this.http.post(url, entityItem));
|
|
79
86
|
}
|
|
80
87
|
async getAll(entityName) {
|
|
@@ -124,7 +131,7 @@ class AXCApiEntityStorageService {
|
|
|
124
131
|
if (queryString) {
|
|
125
132
|
httpParams = httpParams.set('$query', queryString);
|
|
126
133
|
}
|
|
127
|
-
return firstValueFrom(this.http.get(`${this.mainUrl}/${routeElement.
|
|
134
|
+
return firstValueFrom(this.http.get(`${this.mainUrl}/${routeElement.version}/${routeElement.area}/${routeElement.module}/${routeElement.entity}`, { params: httpParams })).then((response) => {
|
|
128
135
|
return {
|
|
129
136
|
total: response.totalCount,
|
|
130
137
|
items: response.items,
|
|
@@ -631,7 +638,8 @@ class AXCAPIOidcStrategy extends AXPAuthStrategy {
|
|
|
631
638
|
localStorage.removeItem('pkce_code_verifier');
|
|
632
639
|
localStorage.removeItem('oauth_provider');
|
|
633
640
|
console.log(this.openidConfigurationInfo?.info?.discoveryDocument);
|
|
634
|
-
|
|
641
|
+
// Use configured logoutUrl or derive from baseUrl
|
|
642
|
+
const logoutUrl = this.aXMAuthConfigs.logoutUrl || `connect/logout`;
|
|
635
643
|
window.location.href = logoutUrl;
|
|
636
644
|
}
|
|
637
645
|
async refreshToken(context) {
|
|
@@ -779,9 +787,321 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
|
|
|
779
787
|
type: Injectable
|
|
780
788
|
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
781
789
|
|
|
790
|
+
//#endregion
|
|
791
|
+
//#region ---- Helper Functions ----
|
|
792
|
+
// /**
|
|
793
|
+
// * Converts a widget string to AXPWidgetsList key
|
|
794
|
+
// */
|
|
795
|
+
// function convertWidgetStringToAXPWidgetsListKey(
|
|
796
|
+
// widgetString: string,
|
|
797
|
+
// )
|
|
798
|
+
// :
|
|
799
|
+
// | keyof typeof AXPWidgetsList.Editors
|
|
800
|
+
// | keyof typeof AXPWidgetsList.Layouts
|
|
801
|
+
// | keyof typeof AXPWidgetsList.Actions
|
|
802
|
+
// | keyof typeof AXPWidgetsList.Advanced
|
|
803
|
+
// | keyof typeof AXPWidgetsList.Templates
|
|
804
|
+
// | keyof typeof AXPWidgetsList.Entity
|
|
805
|
+
// | keyof typeof AXPWidgetsList.Theme
|
|
806
|
+
// {
|
|
807
|
+
// console.log('Converting widget string:', widgetString);
|
|
808
|
+
// // Check if the string is in format "AXPWidgetsList.Category.Key"
|
|
809
|
+
// if (widgetString.startsWith('AXPWidgetsList.')) {
|
|
810
|
+
// // Extract the key from "AXPWidgetsList.Editors.DateTimeBox" -> "DateTimeBox"
|
|
811
|
+
// const parts = widgetString.split('.');
|
|
812
|
+
// if (parts.length >= 3) {
|
|
813
|
+
// const key = parts[parts.length - 1]; // Get the last part (key)
|
|
814
|
+
// console.log('Extracted key from AXPWidgetsList format:', key);
|
|
815
|
+
// return key as any;
|
|
816
|
+
// }
|
|
817
|
+
// }
|
|
818
|
+
// // Search through all AXPWidgetsList categories to find matching widget
|
|
819
|
+
// for (const category of Object.values(AXPWidgetsList)) {
|
|
820
|
+
// if (typeof category === 'object') {
|
|
821
|
+
// for (const [key, value] of Object.entries(category)) {
|
|
822
|
+
// if (value === widgetString) {
|
|
823
|
+
// console.log('Found matching widget:', key, 'for value:', value);
|
|
824
|
+
// return key as any; // Return the AXPWidgetsList key (e.g., "DateTimeBox")
|
|
825
|
+
// }
|
|
826
|
+
// }
|
|
827
|
+
// }
|
|
828
|
+
// }
|
|
829
|
+
// console.log('Widget not found in AXPWidgetsList, returning original string:', widgetString);
|
|
830
|
+
// // If not found in AXPWidgetsList, return the original string as fallback
|
|
831
|
+
// return widgetString as any;
|
|
832
|
+
// }
|
|
833
|
+
//#endregion
|
|
834
|
+
//#region ---- Shared Data Service ----
|
|
835
|
+
class AXCReportManagementDataService {
|
|
836
|
+
constructor() {
|
|
837
|
+
this.http = inject(HttpClient);
|
|
838
|
+
this.configs = inject(AXP_ROOT_CONFIG_TOKEN);
|
|
839
|
+
this.baseUrl = this.configs.baseUrl;
|
|
840
|
+
// Shared cache for all categories data
|
|
841
|
+
this.allCategoriesData = [];
|
|
842
|
+
this.dataLoaded = false;
|
|
843
|
+
}
|
|
844
|
+
async getAllCategoriesData() {
|
|
845
|
+
if (!this.dataLoaded) {
|
|
846
|
+
await this.loadAllCategories();
|
|
847
|
+
}
|
|
848
|
+
return this.allCategoriesData;
|
|
849
|
+
}
|
|
850
|
+
async loadAllCategories() {
|
|
851
|
+
const url = `${this.baseUrl}/v1/global/report-management/category`;
|
|
852
|
+
const params = { Skip: 0, Take: 1000 };
|
|
853
|
+
const response = await firstValueFrom(this.http.get(url, { params }));
|
|
854
|
+
this.allCategoriesData = response.items;
|
|
855
|
+
this.dataLoaded = true;
|
|
856
|
+
}
|
|
857
|
+
clearCache() {
|
|
858
|
+
this.allCategoriesData = [];
|
|
859
|
+
this.dataLoaded = false;
|
|
860
|
+
}
|
|
861
|
+
async executeReport(reportId, parameters = {}) {
|
|
862
|
+
debugger;
|
|
863
|
+
const url = `{this.dataService['baseUrl']}/api/v1/global/Report-Management/report/Execute`;
|
|
864
|
+
const body = {
|
|
865
|
+
reportId,
|
|
866
|
+
parameters,
|
|
867
|
+
};
|
|
868
|
+
const response = await firstValueFrom(this.http.post(url, body));
|
|
869
|
+
return response;
|
|
870
|
+
}
|
|
871
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCReportManagementDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
872
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCReportManagementDataService }); }
|
|
873
|
+
}
|
|
874
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCReportManagementDataService, decorators: [{
|
|
875
|
+
type: Injectable
|
|
876
|
+
}] });
|
|
877
|
+
//#endregion
|
|
878
|
+
//#region ---- API Providers ----
|
|
879
|
+
class AXCReportCategoryApiProvider {
|
|
880
|
+
constructor() {
|
|
881
|
+
this.dataService = inject(AXCReportManagementDataService);
|
|
882
|
+
// Cache to store processed categories
|
|
883
|
+
this.categoriesCache = new Map();
|
|
884
|
+
}
|
|
885
|
+
async getList(parentId) {
|
|
886
|
+
// Check cache first
|
|
887
|
+
if (this.categoriesCache.has(parentId)) {
|
|
888
|
+
return this.categoriesCache.get(parentId);
|
|
889
|
+
}
|
|
890
|
+
try {
|
|
891
|
+
// Get data from shared service
|
|
892
|
+
const allCategoriesData = await this.dataService.getAllCategoriesData();
|
|
893
|
+
// Filter categories based on parentId
|
|
894
|
+
let filteredItems;
|
|
895
|
+
if (!parentId) {
|
|
896
|
+
// Root categories (no parent)
|
|
897
|
+
filteredItems = allCategoriesData.filter((item) => !item.reportCategoryParentId);
|
|
898
|
+
}
|
|
899
|
+
else {
|
|
900
|
+
// Child categories
|
|
901
|
+
filteredItems = allCategoriesData.filter((item) => item.reportCategoryParentId === parentId);
|
|
902
|
+
}
|
|
903
|
+
const categories = filteredItems.map((item) => this.mapApiCategoryToReportCategory(item));
|
|
904
|
+
// Cache the result
|
|
905
|
+
this.categoriesCache.set(parentId, categories);
|
|
906
|
+
return categories;
|
|
907
|
+
}
|
|
908
|
+
catch (error) {
|
|
909
|
+
console.error('Error fetching report categories:', error);
|
|
910
|
+
return [];
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
async getById(id) {
|
|
914
|
+
try {
|
|
915
|
+
// Get data from shared service
|
|
916
|
+
const allCategoriesData = await this.dataService.getAllCategoriesData();
|
|
917
|
+
const apiItem = allCategoriesData.find((item) => item.id === id);
|
|
918
|
+
if (!apiItem) {
|
|
919
|
+
return undefined;
|
|
920
|
+
}
|
|
921
|
+
return this.mapApiCategoryToReportCategory(apiItem);
|
|
922
|
+
}
|
|
923
|
+
catch (error) {
|
|
924
|
+
console.error('Error fetching report category by ID:', error);
|
|
925
|
+
return undefined;
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
mapApiCategoryToReportCategory(apiItem) {
|
|
929
|
+
return {
|
|
930
|
+
id: apiItem.id,
|
|
931
|
+
title: apiItem.title,
|
|
932
|
+
description: apiItem.description || undefined,
|
|
933
|
+
parentId: apiItem.reportCategoryParentId || undefined,
|
|
934
|
+
hasChild: apiItem.folderCount > 0, // folderItems = folders
|
|
935
|
+
hasReport: apiItem.itemCount > 0, // reportDefinitionItems = files
|
|
936
|
+
};
|
|
937
|
+
}
|
|
938
|
+
// Method to clear cache when needed
|
|
939
|
+
clearCache() {
|
|
940
|
+
this.categoriesCache.clear();
|
|
941
|
+
this.dataService.clearCache();
|
|
942
|
+
}
|
|
943
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCReportCategoryApiProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
944
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCReportCategoryApiProvider }); }
|
|
945
|
+
}
|
|
946
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCReportCategoryApiProvider, decorators: [{
|
|
947
|
+
type: Injectable
|
|
948
|
+
}] });
|
|
949
|
+
class AXCReportDefinitionApiProvider {
|
|
950
|
+
constructor() {
|
|
951
|
+
this.dataService = inject(AXCReportManagementDataService);
|
|
952
|
+
this.http = inject(HttpClient);
|
|
953
|
+
// Cache to store report definitions by category to avoid unnecessary API calls
|
|
954
|
+
this.reportDefinitionsCache = new Map();
|
|
955
|
+
}
|
|
956
|
+
async getList(categoryId) {
|
|
957
|
+
// Check cache first
|
|
958
|
+
if (this.reportDefinitionsCache.has(categoryId)) {
|
|
959
|
+
return this.reportDefinitionsCache.get(categoryId);
|
|
960
|
+
}
|
|
961
|
+
try {
|
|
962
|
+
// Get data from shared service
|
|
963
|
+
const allCategoriesData = await this.dataService.getAllCategoriesData();
|
|
964
|
+
// Find the specific category and extract its report definitions
|
|
965
|
+
const categoryItem = allCategoriesData.find((item) => item.id === categoryId);
|
|
966
|
+
if (!categoryItem) {
|
|
967
|
+
// Cache empty result to avoid repeated API calls
|
|
968
|
+
this.reportDefinitionsCache.set(categoryId, []);
|
|
969
|
+
return [];
|
|
970
|
+
}
|
|
971
|
+
const reportDefinitions = categoryItem.reportDefinitionItems.map((item) => this.mapApiReportDefinitionItemToReportDefinition(item));
|
|
972
|
+
// Cache the result
|
|
973
|
+
this.reportDefinitionsCache.set(categoryId, reportDefinitions);
|
|
974
|
+
return reportDefinitions;
|
|
975
|
+
}
|
|
976
|
+
catch (error) {
|
|
977
|
+
console.error('Error fetching report definitions:', error);
|
|
978
|
+
// Cache empty result to avoid repeated failed API calls
|
|
979
|
+
this.reportDefinitionsCache.set(categoryId, []);
|
|
980
|
+
return [];
|
|
981
|
+
}
|
|
982
|
+
}
|
|
983
|
+
async getById(id) {
|
|
984
|
+
try {
|
|
985
|
+
console.log('AXCReportDefinitionApiProvider.getById called with ID:', id);
|
|
986
|
+
// Make API call to get full report definition with layouts
|
|
987
|
+
const url = `${this.dataService['baseUrl']}/v1/global/report-management/report/${id}`;
|
|
988
|
+
console.log('Making API call to:', url);
|
|
989
|
+
const response = await firstValueFrom(this.http.get(url));
|
|
990
|
+
return this.mapApiReportDefinitionToReportDefinition(response);
|
|
991
|
+
}
|
|
992
|
+
catch (error) {
|
|
993
|
+
console.error('Error fetching report definition by ID:', error);
|
|
994
|
+
return undefined;
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
mapApiReportDefinitionItemToReportDefinition(apiItem) {
|
|
998
|
+
return {
|
|
999
|
+
id: apiItem.id,
|
|
1000
|
+
title: apiItem.title,
|
|
1001
|
+
description: apiItem.description || undefined,
|
|
1002
|
+
categoryIds: apiItem.categoryIds,
|
|
1003
|
+
parameterGroups: [], // These would need to be fetched separately if needed
|
|
1004
|
+
layouts: [], // These would need to be fetched separately if needed
|
|
1005
|
+
defaultLayoutId: '', // This would need to be set based on the first layout
|
|
1006
|
+
};
|
|
1007
|
+
}
|
|
1008
|
+
mapApiReportDefinitionToReportDefinition(apiResponse) {
|
|
1009
|
+
let res = {
|
|
1010
|
+
id: apiResponse.id,
|
|
1011
|
+
title: apiResponse.title,
|
|
1012
|
+
description: apiResponse.description || undefined,
|
|
1013
|
+
categoryIds: apiResponse.categoryIds,
|
|
1014
|
+
parameterGroups: apiResponse.parameterGroups.map((group) => ({
|
|
1015
|
+
name: group.name,
|
|
1016
|
+
title: group.title,
|
|
1017
|
+
parameters: group.parameters.map((param) => ({
|
|
1018
|
+
path: param.path,
|
|
1019
|
+
title: param.title,
|
|
1020
|
+
widget: {
|
|
1021
|
+
type: param.widget.type,
|
|
1022
|
+
options: param.widget.options || {},
|
|
1023
|
+
valueTransforms: param.widget.valueTransforms || {},
|
|
1024
|
+
},
|
|
1025
|
+
})),
|
|
1026
|
+
})),
|
|
1027
|
+
layouts: apiResponse.layouts.map((layout) => ({
|
|
1028
|
+
id: layout.id,
|
|
1029
|
+
title: layout.title,
|
|
1030
|
+
layout: layout.layout,
|
|
1031
|
+
dataSource: layout.dataSource,
|
|
1032
|
+
export: layout.export,
|
|
1033
|
+
isDefault: layout.isDefault || false,
|
|
1034
|
+
})),
|
|
1035
|
+
defaultLayoutId: apiResponse.defaultLayoutId,
|
|
1036
|
+
};
|
|
1037
|
+
return res;
|
|
1038
|
+
}
|
|
1039
|
+
async executeReport(reportId, parameters = {}) {
|
|
1040
|
+
return await this.dataService.executeReport(reportId, parameters);
|
|
1041
|
+
}
|
|
1042
|
+
// Method to clear cache when needed
|
|
1043
|
+
clearCache() {
|
|
1044
|
+
this.reportDefinitionsCache.clear();
|
|
1045
|
+
this.dataService.clearCache();
|
|
1046
|
+
}
|
|
1047
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCReportDefinitionApiProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1048
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCReportDefinitionApiProvider }); }
|
|
1049
|
+
}
|
|
1050
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCReportDefinitionApiProvider, decorators: [{
|
|
1051
|
+
type: Injectable
|
|
1052
|
+
}] });
|
|
1053
|
+
//#endregion
|
|
1054
|
+
//#region ---- Provider Exports ----
|
|
1055
|
+
const AXC_REPORT_CATEGORY_API_PROVIDER = {
|
|
1056
|
+
provide: AXP_REPORT_CATEGORY_PROVIDER,
|
|
1057
|
+
useClass: AXCReportCategoryApiProvider,
|
|
1058
|
+
multi: true,
|
|
1059
|
+
};
|
|
1060
|
+
const AXC_REPORT_DEFINITION_API_PROVIDER = {
|
|
1061
|
+
provide: AXP_REPORT_DEFINITION_PROVIDER,
|
|
1062
|
+
useClass: AXCReportDefinitionApiProvider,
|
|
1063
|
+
multi: true,
|
|
1064
|
+
};
|
|
1065
|
+
|
|
1066
|
+
class AXCReportManagementApiModule {
|
|
1067
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCReportManagementApiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1068
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.8", ngImport: i0, type: AXCReportManagementApiModule, imports: [AXPRuntimeModule] }); }
|
|
1069
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCReportManagementApiModule, providers: [
|
|
1070
|
+
AXCReportManagementDataService,
|
|
1071
|
+
AXC_REPORT_CATEGORY_API_PROVIDER,
|
|
1072
|
+
AXC_REPORT_DEFINITION_API_PROVIDER,
|
|
1073
|
+
provideCommandSetups([
|
|
1074
|
+
{
|
|
1075
|
+
key: 'ReportManagement.Report:Execute',
|
|
1076
|
+
command: () => import('./acorex-connectivity-api-execute.command-CP4cZ_5M.mjs').then((c) => c.AXCReportExecuteCommand),
|
|
1077
|
+
},
|
|
1078
|
+
]),
|
|
1079
|
+
], imports: [AXPRuntimeModule] }); }
|
|
1080
|
+
}
|
|
1081
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCReportManagementApiModule, decorators: [{
|
|
1082
|
+
type: NgModule,
|
|
1083
|
+
args: [{
|
|
1084
|
+
imports: [AXPRuntimeModule],
|
|
1085
|
+
exports: [],
|
|
1086
|
+
declarations: [],
|
|
1087
|
+
providers: [
|
|
1088
|
+
AXCReportManagementDataService,
|
|
1089
|
+
AXC_REPORT_CATEGORY_API_PROVIDER,
|
|
1090
|
+
AXC_REPORT_DEFINITION_API_PROVIDER,
|
|
1091
|
+
provideCommandSetups([
|
|
1092
|
+
{
|
|
1093
|
+
key: 'ReportManagement.Report:Execute',
|
|
1094
|
+
command: () => import('./acorex-connectivity-api-execute.command-CP4cZ_5M.mjs').then((c) => c.AXCReportExecuteCommand),
|
|
1095
|
+
},
|
|
1096
|
+
]),
|
|
1097
|
+
],
|
|
1098
|
+
}]
|
|
1099
|
+
}] });
|
|
1100
|
+
|
|
782
1101
|
class AXCApiModule {
|
|
783
1102
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCApiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
784
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.8", ngImport: i0, type: AXCApiModule, imports: [i1$1.OAuthModule, i2.AXPAuthModule, AXCUtilsModule
|
|
1103
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.8", ngImport: i0, type: AXCApiModule, imports: [i1$1.OAuthModule, i2.AXPAuthModule, AXCUtilsModule,
|
|
1104
|
+
AXCReportManagementApiModule] }); }
|
|
785
1105
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCApiModule, providers: [
|
|
786
1106
|
{
|
|
787
1107
|
provide: AXPEntityStorageService,
|
|
@@ -813,12 +1133,13 @@ class AXCApiModule {
|
|
|
813
1133
|
selectValueStrategy: 'valueField',
|
|
814
1134
|
lookupValueStrategy: 'valueField',
|
|
815
1135
|
},
|
|
816
|
-
}
|
|
1136
|
+
}
|
|
817
1137
|
], imports: [OAuthModule.forRoot(),
|
|
818
1138
|
AXPAuthModule.forRoot({
|
|
819
1139
|
strategies: [AXCAPIOidcStrategy],
|
|
820
1140
|
}),
|
|
821
|
-
AXCUtilsModule
|
|
1141
|
+
AXCUtilsModule,
|
|
1142
|
+
AXCReportManagementApiModule] }); }
|
|
822
1143
|
}
|
|
823
1144
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCApiModule, decorators: [{
|
|
824
1145
|
type: NgModule,
|
|
@@ -829,6 +1150,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
|
|
|
829
1150
|
strategies: [AXCAPIOidcStrategy],
|
|
830
1151
|
}),
|
|
831
1152
|
AXCUtilsModule,
|
|
1153
|
+
AXCReportManagementApiModule,
|
|
832
1154
|
],
|
|
833
1155
|
providers: [
|
|
834
1156
|
{
|
|
@@ -861,7 +1183,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
|
|
|
861
1183
|
selectValueStrategy: 'valueField',
|
|
862
1184
|
lookupValueStrategy: 'valueField',
|
|
863
1185
|
},
|
|
864
|
-
}
|
|
1186
|
+
}
|
|
865
1187
|
],
|
|
866
1188
|
}]
|
|
867
1189
|
}] });
|
|
@@ -1141,5 +1463,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
|
|
|
1141
1463
|
* Generated bundle index. Do not edit.
|
|
1142
1464
|
*/
|
|
1143
1465
|
|
|
1144
|
-
export { APIGoogleStrategy, AXCAPIOidcStrategy, AXCApiEntityStorageService, AXCApiModule, AXMConfigurationService, AXMOidcApplicationLoader, AXMOidcFeatureLoader, AXMOidcPermissionLoader, AXMOidcTenantLoader };
|
|
1466
|
+
export { APIGoogleStrategy, AXCAPIOidcStrategy, AXCApiEntityStorageService, AXCApiModule, AXCReportManagementApiModule, AXMConfigurationService, AXMOidcApplicationLoader, AXMOidcFeatureLoader, AXMOidcPermissionLoader, AXMOidcTenantLoader };
|
|
1145
1467
|
//# sourceMappingURL=acorex-connectivity-api.mjs.map
|