@acorex/connectivity 20.3.0-next.2 → 20.3.0-next.3
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/fesm2022/{acorex-connectivity-mock-category-with-items.query-DXt3OWKg.mjs → acorex-connectivity-mock-category-with-items.query-DEY9R9q2.mjs} +35 -5
- package/fesm2022/acorex-connectivity-mock-category-with-items.query-DEY9R9q2.mjs.map +1 -0
- package/fesm2022/acorex-connectivity-mock.mjs +71 -20
- package/fesm2022/acorex-connectivity-mock.mjs.map +1 -1
- package/package.json +1 -1
- package/fesm2022/acorex-connectivity-mock-category-with-items.query-DXt3OWKg.mjs.map +0 -1
|
@@ -28,8 +28,32 @@ class AXCQueryCategoryWithItemsQuery {
|
|
|
28
28
|
],
|
|
29
29
|
},
|
|
30
30
|
});
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
// Build the tree and prune empty categories (no children and no items)
|
|
32
|
+
const builtRoots = await Promise.all(rootCategories.items.map((category) => this.buildCategoryTree(category)));
|
|
33
|
+
const categories = builtRoots.filter((c) => Boolean(c));
|
|
34
|
+
// Aggregate all items across remaining categories
|
|
35
|
+
const allItems = [];
|
|
36
|
+
const collectItems = (nodes) => {
|
|
37
|
+
for (const node of nodes) {
|
|
38
|
+
if (node.items?.length) {
|
|
39
|
+
allItems.push(...node.items);
|
|
40
|
+
}
|
|
41
|
+
if (node.children?.length) {
|
|
42
|
+
collectItems(node.children);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
collectItems(categories);
|
|
47
|
+
// Add synthetic 'All' node at the beginning
|
|
48
|
+
const allNode = {
|
|
49
|
+
id: 'all',
|
|
50
|
+
title: 'All',
|
|
51
|
+
childCount: 0,
|
|
52
|
+
items: allItems,
|
|
53
|
+
children: [],
|
|
54
|
+
categories: []
|
|
55
|
+
};
|
|
56
|
+
return [allNode, ...categories];
|
|
33
57
|
}
|
|
34
58
|
async buildCategoryTree(category) {
|
|
35
59
|
const itemsResult = await this.metaDataService.query({
|
|
@@ -64,13 +88,19 @@ class AXCQueryCategoryWithItemsQuery {
|
|
|
64
88
|
take: 1000,
|
|
65
89
|
skip: 0,
|
|
66
90
|
});
|
|
67
|
-
const
|
|
68
|
-
|
|
91
|
+
const builtChildren = await Promise.all(childCategoriesResult.items.map((child) => this.buildCategoryTree(child)));
|
|
92
|
+
const children = builtChildren.filter((c) => Boolean(c));
|
|
93
|
+
const node = {
|
|
69
94
|
...category,
|
|
70
95
|
items: itemsResult.items,
|
|
71
96
|
categories: children,
|
|
72
97
|
children: children,
|
|
73
98
|
};
|
|
99
|
+
// Prune node if it has no items and no children
|
|
100
|
+
if ((!node.items || node.items.length === 0) && (!node.children || node.children.length === 0)) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
return node;
|
|
74
104
|
}
|
|
75
105
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCQueryCategoryWithItemsQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
76
106
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCQueryCategoryWithItemsQuery, providedIn: 'root' }); }
|
|
@@ -83,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
|
|
|
83
113
|
}] });
|
|
84
114
|
|
|
85
115
|
export { AXCQueryCategoryWithItemsQuery };
|
|
86
|
-
//# sourceMappingURL=acorex-connectivity-mock-category-with-items.query-
|
|
116
|
+
//# sourceMappingURL=acorex-connectivity-mock-category-with-items.query-DEY9R9q2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-connectivity-mock-category-with-items.query-DEY9R9q2.mjs","sources":["../tmp-esm2022/mock/lib/data-management/metadata/category-with-items.query.js"],"sourcesContent":["import { AXMMetaDataDefinitionService, RootConfig } from '@acorex/modules/data-management';\nimport { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { inject, Injectable, Injector, runInInjectionContext } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXCQueryCategoryWithItemsQuery {\n constructor() {\n this.injector = inject(Injector);\n this.categoryEntityService = runInInjectionContext(this.injector, () => new AXMEntityCrudServiceImpl(`${RootConfig.module.name}.${RootConfig.entities.metaDataDefinition.name}Category`));\n this.metaDataService = inject(AXMMetaDataDefinitionService);\n }\n fetch() {\n return this.getAllWithItems();\n }\n async getAllWithItems() {\n const rootCategories = await this.categoryEntityService.query({\n take: 1000,\n skip: 0,\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'parentId',\n operator: {\n type: 'isNull',\n },\n },\n ],\n },\n });\n // Build the tree and prune empty categories (no children and no items)\n const builtRoots = await Promise.all(rootCategories.items.map((category) => this.buildCategoryTree(category)));\n const categories = builtRoots.filter((c) => Boolean(c));\n // Aggregate all items across remaining categories\n const allItems = [];\n const collectItems = (nodes) => {\n for (const node of nodes) {\n if (node.items?.length) {\n allItems.push(...node.items);\n }\n if (node.children?.length) {\n collectItems(node.children);\n }\n }\n };\n collectItems(categories);\n // Add synthetic 'All' node at the beginning\n const allNode = {\n id: 'all',\n title: 'All',\n childCount: 0,\n items: allItems,\n children: [],\n categories: []\n };\n return [allNode, ...categories];\n }\n async buildCategoryTree(category) {\n const itemsResult = await this.metaDataService.query({\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'categoryIds',\n operator: {\n type: 'contains',\n },\n value: category.id,\n },\n ],\n },\n take: 1000,\n skip: 0,\n });\n const childCategoriesResult = await this.categoryEntityService.query({\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'parentId',\n operator: {\n type: 'equal',\n },\n value: category.id,\n },\n ],\n },\n take: 1000,\n skip: 0,\n });\n const builtChildren = await Promise.all(childCategoriesResult.items.map((child) => this.buildCategoryTree(child)));\n const children = builtChildren.filter((c) => Boolean(c));\n const node = {\n ...category,\n items: itemsResult.items,\n categories: children,\n children: children,\n };\n // Prune node if it has no items and no children\n if ((!node.items || node.items.length === 0) && (!node.children || node.children.length === 0)) {\n return null;\n }\n return node;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXCQueryCategoryWithItemsQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXCQueryCategoryWithItemsQuery, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXCQueryCategoryWithItemsQuery, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktd2l0aC1pdGVtcy5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L21vY2svc3JjL2xpYi9kYXRhLW1hbmFnZW1lbnQvbWV0YWRhdGEvY2F0ZWdvcnktd2l0aC1pdGVtcy5xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLDRCQUE0QixFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTdILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLcEYsTUFBTSxPQUFPLDhCQUE4QjtJQUgzQztRQUtZLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsMEJBQXFCLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLHdCQUF3QixDQUFXLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDL0wsb0JBQWUsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztLQThHbEU7SUEzR0csS0FBSztRQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZTtRQUN6QixNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7WUFDMUQsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsQ0FBQztZQUNQLE1BQU0sRUFBRTtnQkFDSixLQUFLLEVBQUUsS0FBSztnQkFDWixP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cUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVILE1BQU0sSUFBSSxHQUEwRjtZQUNoRyxHQUFHLFFBQVE7WUFDWCxLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUs7WUFDeEIsVUFBVSxFQUFFLFFBQVE7WUFDcEIsUUFBUSxFQUFFLFFBQVE7U0FDckIsQ0FBQztRQUVGLGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0YsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7OEdBOUdRLDhCQUE4QjtrSEFBOUIsOEJBQThCLGNBRjNCLE1BQU07OzJGQUVULDhCQUE4QjtrQkFIMUMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1NZXRhRGF0YURlZmluaXRpb25FbnRpdHlNb2RlbCwgQVhNTWV0YURhdGFEZWZpbml0aW9uU2VydmljZSwgUm9vdENvbmZpZyB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9kYXRhLW1hbmFnZW1lbnQnO1xuaW1wb3J0IHsgQVhQQ2F0ZWdvcnlFbnRpdHlXaXRoSXRlbXMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEFYUFF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFYQ1F1ZXJ5Q2F0ZWdvcnlXaXRoSXRlbXNRdWVyeSBpbXBsZW1lbnRzIEFYUFF1ZXJ5PHZvaWQsIEFYUENhdGVnb3J5RW50aXR5V2l0aEl0ZW1zPEFYTU1ldGFEYXRhRGVmaW5pdGlvbkVudGl0eU1vZGVsPltdPiB7XG5cbiAgICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgICBwcml2YXRlIGNhdGVnb3J5RW50aXR5U2VydmljZSA9IHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiBuZXcgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsPGFueSwgYW55PihgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMubWV0YURhdGFEZWZpbml0aW9uLm5hbWV9Q2F0ZWdvcnlgKSk7XG4gICAgcHJpdmF0ZSBtZXRhRGF0YVNlcnZpY2UgPSBpbmplY3QoQVhNTWV0YURhdGFEZWZpbml0aW9uU2VydmljZSk7XG5cblxuICAgIGZldGNoKCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFsbFdpdGhJdGVtcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0QWxsV2l0aEl0ZW1zKCk6IFByb21pc2U8QVhQQ2F0ZWdvcnlFbnRpdHlXaXRoSXRlbXM8QVhNTWV0YURhdGFEZWZpbml0aW9uRW50aXR5TW9kZWw+W10+IHtcbiAgICAgICAgY29uc3Qgcm9vdENhdGVnb3JpZXMgPSBhd2FpdCB0aGlzLmNhdGVnb3J5RW50aXR5U2VydmljZS5xdWVyeSh7XG4gICAgICAgICAgICB0YWtlOiAxMDAwLFxuICAgICAgICAgICAgc2tpcDogMCxcbiAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIGxvZ2ljOiAnYW5kJyxcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAncGFyZW50SWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaXNOdWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEJ1aWxkIHRoZSB0cmVlIGFuZCBwcnVuZSBlbXB0eSBjYXRlZ29yaWVzIChubyBjaGlsZHJlbiBhbmQgbm8gaXRlbXMpXG4gICAgICAgIGNvbnN0IGJ1aWx0Um9vdHMgPSBhd2FpdCBQcm9taXNlLmFsbChyb290Q2F0ZWdvcmllcy5pdGVtcy5tYXAoKGNhdGVnb3J5KSA9PiB0aGlzLmJ1aWxkQ2F0ZWdvcnlUcmVlKGNhdGVnb3J5KSkpO1xuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gYnVpbHRSb290cy5maWx0ZXIoKGMpOiBjIGlzIEFYUENhdGVnb3J5RW50aXR5V2l0aEl0ZW1zPEFYTU1ldGFEYXRhRGVmaW5pdGlvbkVudGl0eU1vZGVsPiA9PiBCb29sZWFuKGMpKTtcblxuICAgICAgICAvLyBBZ2dyZWdhdGUgYWxsIGl0ZW1zIGFjcm9zcyByZW1haW5pbmcgY2F0ZWdvcmllc1xuICAgICAgICBjb25zdCBhbGxJdGVtczogQVhNTWV0YURhdGFEZWZpbml0aW9uRW50aXR5TW9kZWxbXSA9IFtdO1xuICAgICAgICBjb25zdCBjb2xsZWN0SXRlbXMgPSAobm9kZXM6IEFYUENhdGVnb3J5RW50aXR5V2l0aEl0ZW1zPEFYTU1ldGFEYXRhRGVmaW5pdGlvbkVudGl0eU1vZGVsPltdKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGFsbEl0ZW1zLnB1c2goLi4ubm9kZS5pdGVtcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChub2RlLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29sbGVjdEl0ZW1zKG5vZGUuY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29sbGVjdEl0ZW1zKGNhdGVnb3JpZXMpO1xuXG4gICAgICAgIC8vIEFkZCBzeW50aGV0aWMgJ0FsbCcgbm9kZSBhdCB0aGUgYmVnaW5uaW5nXG4gICAgICAgIGNvbnN0IGFsbE5vZGU6IEFYUENhdGVnb3J5RW50aXR5V2l0aEl0ZW1zPEFYTU1ldGFEYXRhRGVmaW5pdGlvbkVudGl0eU1vZGVsPiAmIHsgY2F0ZWdvcmllcz86IGFueVtdIH0gPSB7XG4gICAgICAgICAgICBpZDogJ2FsbCcsXG4gICAgICAgICAgICB0aXRsZTogJ0FsbCcsXG4gICAgICAgICAgICBjaGlsZENvdW50OiAwLFxuICAgICAgICAgICAgaXRlbXM6IGFsbEl0ZW1zLFxuICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogW11cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gW2FsbE5vZGUsIC4uLmNhdGVnb3JpZXNdO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgYnVpbGRDYXRlZ29yeVRyZWUoY2F0ZWdvcnk6IGFueSk6IFByb21pc2U8QVhQQ2F0ZWdvcnlFbnRpdHlXaXRoSXRlbXM8QVhNTWV0YURhdGFEZWZpbml0aW9uRW50aXR5TW9kZWw+IHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBpdGVtc1Jlc3VsdCA9IGF3YWl0IHRoaXMubWV0YURhdGFTZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIGxvZ2ljOiAnYW5kJyxcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnY2F0ZWdvcnlJZHMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY29udGFpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjYXRlZ29yeS5pZCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRha2U6IDEwMDAsXG4gICAgICAgICAgICBza2lwOiAwLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjaGlsZENhdGVnb3JpZXNSZXN1bHQgPSBhd2FpdCB0aGlzLmNhdGVnb3J5RW50aXR5U2VydmljZS5xdWVyeSh7XG4gICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICBsb2dpYzogJ2FuZCcsXG4gICAgICAgICAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3BhcmVudElkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2VxdWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY2F0ZWdvcnkuaWQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWtlOiAxMDAwLFxuICAgICAgICAgICAgc2tpcDogMCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgYnVpbHRDaGlsZHJlbiA9IGF3YWl0IFByb21pc2UuYWxsKGNoaWxkQ2F0ZWdvcmllc1Jlc3VsdC5pdGVtcy5tYXAoKGNoaWxkKSA9PiB0aGlzLmJ1aWxkQ2F0ZWdvcnlUcmVlKGNoaWxkKSkpO1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGJ1aWx0Q2hpbGRyZW4uZmlsdGVyKChjKTogYyBpcyBBWFBDYXRlZ29yeUVudGl0eVdpdGhJdGVtczxBWE1NZXRhRGF0YURlZmluaXRpb25FbnRpdHlNb2RlbD4gPT4gQm9vbGVhbihjKSk7XG5cbiAgICAgICAgY29uc3Qgbm9kZTogQVhQQ2F0ZWdvcnlFbnRpdHlXaXRoSXRlbXM8QVhNTWV0YURhdGFEZWZpbml0aW9uRW50aXR5TW9kZWw+ICYgeyBjYXRlZ29yaWVzPzogYW55W10gfSA9IHtcbiAgICAgICAgICAgIC4uLmNhdGVnb3J5LFxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zUmVzdWx0Lml0ZW1zLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogY2hpbGRyZW4sXG4gICAgICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gUHJ1bmUgbm9kZSBpZiBpdCBoYXMgbm8gaXRlbXMgYW5kIG5vIGNoaWxkcmVuXG4gICAgICAgIGlmICgoIW5vZGUuaXRlbXMgfHwgbm9kZS5pdGVtcy5sZW5ndGggPT09IDApICYmICghbm9kZS5jaGlsZHJlbiB8fCBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuXG5cblxufSJdfQ=="],"names":[],"mappings":"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"}
|
|
@@ -248,7 +248,7 @@ class MockApplicationLoader {
|
|
|
248
248
|
const demo_app = {
|
|
249
249
|
id: '1',
|
|
250
250
|
name: 'demo',
|
|
251
|
-
title: '
|
|
251
|
+
title: 'Safetyminder Application',
|
|
252
252
|
version: '1.0.0',
|
|
253
253
|
editionName: 'Standard',
|
|
254
254
|
};
|
|
@@ -304,21 +304,10 @@ class MockPermissionLoader {
|
|
|
304
304
|
AXMPermissionsKeys$1.Issue.MyReportedIssues.Management,
|
|
305
305
|
];
|
|
306
306
|
this.adminPermissions = [...this.userPermissions, ...['admin', 'demo.admin.settings']];
|
|
307
|
-
this.rootPermissions = [
|
|
308
|
-
...this.adminPermissions,
|
|
309
|
-
...[
|
|
310
|
-
'platform',
|
|
311
|
-
'platform.reports',
|
|
312
|
-
'document-management:manage',
|
|
313
|
-
'document-management:document-type:manage',
|
|
314
|
-
'document-management:driver:manage',
|
|
315
|
-
],
|
|
316
|
-
AXMPermissionsKeys$1.Issue.ReportedIssues.Management,
|
|
317
|
-
];
|
|
318
307
|
}
|
|
319
308
|
getList(context) {
|
|
320
309
|
if (context.user?.name == 'root') {
|
|
321
|
-
return of(
|
|
310
|
+
return of();
|
|
322
311
|
}
|
|
323
312
|
else if (context.user?.name == 'admin') {
|
|
324
313
|
return of(this.adminPermissions);
|
|
@@ -339,12 +328,12 @@ class MockTenantLoader {
|
|
|
339
328
|
const acorex_tenant = {
|
|
340
329
|
id: '99',
|
|
341
330
|
name: 'acorex-tenant',
|
|
342
|
-
title: '
|
|
331
|
+
title: 'Platform Tenant',
|
|
343
332
|
};
|
|
344
333
|
const demo_tenant = {
|
|
345
334
|
id: '1',
|
|
346
335
|
name: 'demo-tenant',
|
|
347
|
-
title: '
|
|
336
|
+
title: 'Safetyminder Company',
|
|
348
337
|
};
|
|
349
338
|
// return of([demo_tenant]).pipe(delay(500));
|
|
350
339
|
// return of([acorex_tenant]).pipe(delay(500));
|
|
@@ -4508,7 +4497,7 @@ class AXCDataManagementMockModule {
|
|
|
4508
4497
|
provideQuerySetups([
|
|
4509
4498
|
{
|
|
4510
4499
|
key: 'category-with-items',
|
|
4511
|
-
loader: () => import('./acorex-connectivity-mock-category-with-items.query-
|
|
4500
|
+
loader: () => import('./acorex-connectivity-mock-category-with-items.query-DEY9R9q2.mjs').then(m => m.AXCQueryCategoryWithItemsQuery),
|
|
4512
4501
|
}
|
|
4513
4502
|
])
|
|
4514
4503
|
] }); }
|
|
@@ -4533,7 +4522,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
|
|
|
4533
4522
|
provideQuerySetups([
|
|
4534
4523
|
{
|
|
4535
4524
|
key: 'category-with-items',
|
|
4536
|
-
loader: () => import('./acorex-connectivity-mock-category-with-items.query-
|
|
4525
|
+
loader: () => import('./acorex-connectivity-mock-category-with-items.query-DEY9R9q2.mjs').then(m => m.AXCQueryCategoryWithItemsQuery),
|
|
4537
4526
|
}
|
|
4538
4527
|
])
|
|
4539
4528
|
],
|
|
@@ -32950,6 +32939,14 @@ const createFileCastMiddleware = {
|
|
|
32950
32939
|
return undefined;
|
|
32951
32940
|
}
|
|
32952
32941
|
})();
|
|
32942
|
+
const folderService = (() => {
|
|
32943
|
+
try {
|
|
32944
|
+
return inject(AXMFolderService);
|
|
32945
|
+
}
|
|
32946
|
+
catch {
|
|
32947
|
+
return undefined;
|
|
32948
|
+
}
|
|
32949
|
+
})();
|
|
32953
32950
|
// Helper Functions
|
|
32954
32951
|
const isFileListItem = (obj) => {
|
|
32955
32952
|
// Must have name as string
|
|
@@ -33067,11 +33064,9 @@ const createFileCastMiddleware = {
|
|
|
33067
33064
|
return { id: docId, kind: 'document' };
|
|
33068
33065
|
}
|
|
33069
33066
|
catch (error) {
|
|
33070
|
-
console.warn(`[file-cast] ⚠️ Failed to create document for existing file, falling back to file`, { cleanFileId, error });
|
|
33071
33067
|
}
|
|
33072
33068
|
}
|
|
33073
33069
|
else {
|
|
33074
|
-
console.warn(`[file-cast] ⚠️ Document service unavailable; returning file reference`, { cleanFileId });
|
|
33075
33070
|
}
|
|
33076
33071
|
}
|
|
33077
33072
|
return { id: cleanFileId, kind: 'file' };
|
|
@@ -33166,13 +33161,69 @@ const createFileCastMiddleware = {
|
|
|
33166
33161
|
typeof m.name === 'string' && typeof m.title === 'string' && typeof m.value === 'string');
|
|
33167
33162
|
};
|
|
33168
33163
|
const ensureDocumentRecord = async (svc, payload) => {
|
|
33169
|
-
//
|
|
33164
|
+
// Resolve or create folder hierarchy: <Entity>/<Record Title|Name>
|
|
33165
|
+
let parentId;
|
|
33166
|
+
try {
|
|
33167
|
+
if (folderService) {
|
|
33168
|
+
const findFolderByName = async (name, parent) => {
|
|
33169
|
+
const filters = [
|
|
33170
|
+
{ field: 'name', operator: { type: 'equal' }, value: name },
|
|
33171
|
+
];
|
|
33172
|
+
if (parent) {
|
|
33173
|
+
filters.push({ field: 'parentId', operator: { type: 'equal' }, value: parent });
|
|
33174
|
+
}
|
|
33175
|
+
else {
|
|
33176
|
+
filters.push({ field: 'parentId', operator: { type: 'isnull' } });
|
|
33177
|
+
}
|
|
33178
|
+
const result = await folderService.query({
|
|
33179
|
+
skip: 0,
|
|
33180
|
+
take: 1,
|
|
33181
|
+
filter: { logic: 'and', filters },
|
|
33182
|
+
});
|
|
33183
|
+
return result?.items?.[0] ?? null;
|
|
33184
|
+
};
|
|
33185
|
+
const ensureFolder = async (name, parent) => {
|
|
33186
|
+
const exists = await findFolderByName(name, parent);
|
|
33187
|
+
if (exists?.id)
|
|
33188
|
+
return exists.id;
|
|
33189
|
+
const createPayload = {
|
|
33190
|
+
name,
|
|
33191
|
+
color: '#FFFFFF',
|
|
33192
|
+
size: 0,
|
|
33193
|
+
parentId: parent,
|
|
33194
|
+
inherit: 'Extends',
|
|
33195
|
+
};
|
|
33196
|
+
const newId = await folderService.insertOne(createPayload);
|
|
33197
|
+
return newId;
|
|
33198
|
+
};
|
|
33199
|
+
// Find a root (folder with no parent)
|
|
33200
|
+
const rootQuery = await folderService.query({
|
|
33201
|
+
skip: 0,
|
|
33202
|
+
take: 1,
|
|
33203
|
+
filter: { logic: 'and', filters: [{ field: 'parentId', operator: { type: 'isnull' } }] },
|
|
33204
|
+
});
|
|
33205
|
+
const root = rootQuery?.items?.[0];
|
|
33206
|
+
if (root?.id) {
|
|
33207
|
+
const entityFullName = ctx.entityName || 'Entity';
|
|
33208
|
+
const entityNameOnly = entityFullName.split('.').pop() || entityFullName;
|
|
33209
|
+
const recordFolderName = (ctx?.data?.title || ctx?.data?.name || payload.name || 'Record').toString();
|
|
33210
|
+
const entityFolderId = await ensureFolder(entityNameOnly, root.id);
|
|
33211
|
+
parentId = await ensureFolder(recordFolderName, entityFolderId);
|
|
33212
|
+
}
|
|
33213
|
+
}
|
|
33214
|
+
}
|
|
33215
|
+
catch (e) {
|
|
33216
|
+
// Fallback: if anything fails, we will try to insert without parentId; mock may reject
|
|
33217
|
+
console.warn('[file-cast] ⚠️ Failed to ensure folder path for document, inserting without parentId');
|
|
33218
|
+
}
|
|
33219
|
+
// Insert document record with resolved parent folder if available
|
|
33170
33220
|
const id = await svc.insertOne({
|
|
33171
33221
|
fileId: addFilePrefix(payload.fileId),
|
|
33172
33222
|
name: payload.name,
|
|
33173
33223
|
title: payload.title,
|
|
33174
33224
|
size: payload.size,
|
|
33175
33225
|
meta: payload.meta,
|
|
33226
|
+
parentId,
|
|
33176
33227
|
});
|
|
33177
33228
|
return id;
|
|
33178
33229
|
};
|