@netgrif/components-core 6.4.0-beta.1 → 6.4.0-beta.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/esm2020/assets/i18n/de.json +5 -1
- package/esm2020/assets/i18n/en.json +5 -1
- package/esm2020/assets/i18n/sk.json +5 -1
- package/esm2020/lib/header/abstract-header.component.mjs +22 -7
- package/esm2020/lib/navigation/group-navigation-component-resolver/group-navigation-component-resolver.service.mjs +1 -10
- package/esm2020/lib/navigation/model/group-navigation-constants.mjs +116 -35
- package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +118 -117
- package/esm2020/lib/navigation/navigation-tree/abstract-navigation-tree.component.mjs +3 -126
- package/esm2020/lib/navigation/service/uri.service.mjs +3 -3
- package/esm2020/lib/navigation/utility/filter-extraction.service.mjs +33 -9
- package/esm2020/lib/navigation/utility/navigation-item-task-utility-methods.mjs +38 -4
- package/esm2020/lib/panel/task-panel/abstract-task-panel.component.mjs +5 -2
- package/esm2020/lib/panel/task-panel-list/default-task-panel-list/abstract-default-task-list.component.mjs +5 -2
- package/esm2020/lib/routing/routing-builder/routing-builder.service.mjs +7 -5
- package/esm2020/lib/side-menu/content-components/import-net/abstract-import-net.component.mjs +10 -7
- package/esm2020/lib/side-menu/content-components/new-case/model/new-case-injection-data.mjs +1 -1
- package/esm2020/lib/utility/navigation-item-default-headers-factory.mjs +22 -0
- package/esm2020/lib/utility/public-api.mjs +2 -1
- package/esm2020/lib/view/case-view/service/case-view-service.mjs +10 -7
- package/fesm2015/netgrif-components-core.mjs +1552 -1475
- package/fesm2015/netgrif-components-core.mjs.map +1 -1
- package/fesm2020/netgrif-components-core.mjs +1538 -1468
- package/fesm2020/netgrif-components-core.mjs.map +1 -1
- package/lib/header/abstract-header.component.d.ts +7 -2
- package/lib/navigation/group-navigation-component-resolver/group-navigation-component-resolver.service.d.ts +0 -1
- package/lib/navigation/model/group-navigation-constants.d.ts +115 -34
- package/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.d.ts +30 -32
- package/lib/navigation/navigation-tree/abstract-navigation-tree.component.d.ts +2 -27
- package/lib/navigation/utility/filter-extraction.service.d.ts +9 -2
- package/lib/navigation/utility/navigation-item-task-utility-methods.d.ts +16 -1
- package/lib/panel/task-panel/abstract-task-panel.component.d.ts +2 -1
- package/lib/panel/task-panel-list/default-task-panel-list/abstract-default-task-list.component.d.ts +2 -1
- package/lib/routing/routing-builder/routing-builder.service.d.ts +2 -0
- package/lib/side-menu/content-components/import-net/abstract-import-net.component.d.ts +3 -1
- package/lib/side-menu/content-components/new-case/model/new-case-injection-data.d.ts +2 -1
- package/lib/utility/navigation-item-default-headers-factory.d.ts +3 -0
- package/lib/utility/public-api.d.ts +1 -0
- package/lib/view/case-view/service/case-view-service.d.ts +2 -2
- package/package.json +1 -1
- package/src/assets/i18n/de.json +5 -1
- package/src/assets/i18n/en.json +5 -1
- package/src/assets/i18n/sk.json +5 -1
|
@@ -1209,7 +1209,11 @@ var publicView$2 = {
|
|
|
1209
1209
|
errorCreate: "Error while creating case "
|
|
1210
1210
|
};
|
|
1211
1211
|
var dynamicNavigation$2 = {
|
|
1212
|
-
couldNotResolveView: "An error has occurred during the view resolution process. The view could not be displayed"
|
|
1212
|
+
couldNotResolveView: "An error has occurred during the view resolution process. The view could not be displayed",
|
|
1213
|
+
filterNotFound: "This view has no filter",
|
|
1214
|
+
loadMoreItems: "More",
|
|
1215
|
+
ascending: "Ascending",
|
|
1216
|
+
descending: "Descending"
|
|
1213
1217
|
};
|
|
1214
1218
|
var impersonation$2 = {
|
|
1215
1219
|
user: {
|
|
@@ -1726,7 +1730,11 @@ var publicView$1 = {
|
|
|
1726
1730
|
errorCreate: "Chyba pri vytváraní prípadu "
|
|
1727
1731
|
};
|
|
1728
1732
|
var dynamicNavigation$1 = {
|
|
1729
|
-
couldNotResolveView: "Počas načítania zobrazenia sa vyskytla chyba. Zobrazenie nie je možné zobraziť"
|
|
1733
|
+
couldNotResolveView: "Počas načítania zobrazenia sa vyskytla chyba. Zobrazenie nie je možné zobraziť",
|
|
1734
|
+
filterNotFound: "Toto zobrazenie neobsahuje filter",
|
|
1735
|
+
loadMoreItems: "Viac",
|
|
1736
|
+
ascending: "Vzostupne",
|
|
1737
|
+
descending: "Zostupne"
|
|
1730
1738
|
};
|
|
1731
1739
|
var impersonation$1 = {
|
|
1732
1740
|
user: {
|
|
@@ -2243,7 +2251,11 @@ var publicView = {
|
|
|
2243
2251
|
errorCreate: "Fehler beim Erstellen des Falles "
|
|
2244
2252
|
};
|
|
2245
2253
|
var dynamicNavigation = {
|
|
2246
|
-
couldNotResolveView: "Ein Fehler ist aufgetreten während des Ansichtauflösungsprocess. Der Ansicht kann nicht angezeigt werden"
|
|
2254
|
+
couldNotResolveView: "Ein Fehler ist aufgetreten während des Ansichtauflösungsprocess. Der Ansicht kann nicht angezeigt werden",
|
|
2255
|
+
filterNotFound: "Diese Ansicht hat keinen Filter",
|
|
2256
|
+
loadMoreItems: "Mehr",
|
|
2257
|
+
ascending: "Aufsteigend",
|
|
2258
|
+
descending: "Absteigend"
|
|
2247
2259
|
};
|
|
2248
2260
|
var impersonation = {
|
|
2249
2261
|
user: {
|
|
@@ -18373,7 +18385,7 @@ class CaseViewService extends AbstractSortableViewComponent {
|
|
|
18373
18385
|
minWidth: '300px',
|
|
18374
18386
|
panelClass: "dialog-responsive",
|
|
18375
18387
|
data: {
|
|
18376
|
-
allowedNets$: this.getNewCaseAllowedNets(),
|
|
18388
|
+
allowedNets$: this.getNewCaseAllowedNets(newCaseCreationConfiguration.blockNets),
|
|
18377
18389
|
newCaseCreationConfiguration
|
|
18378
18390
|
},
|
|
18379
18391
|
});
|
|
@@ -18387,9 +18399,12 @@ class CaseViewService extends AbstractSortableViewComponent {
|
|
|
18387
18399
|
});
|
|
18388
18400
|
return myCase.asObservable();
|
|
18389
18401
|
}
|
|
18390
|
-
createDefaultNewCase(
|
|
18402
|
+
createDefaultNewCase(newCaseCreationConfiguration = {
|
|
18403
|
+
enableCaseTitle: true,
|
|
18404
|
+
isCaseTitleRequired: true
|
|
18405
|
+
}) {
|
|
18391
18406
|
const myCase = new Subject();
|
|
18392
|
-
this.getNewCaseAllowedNets().subscribe((nets) => {
|
|
18407
|
+
this.getNewCaseAllowedNets(newCaseCreationConfiguration.blockNets).subscribe((nets) => {
|
|
18393
18408
|
this._caseResourceService.createCase({
|
|
18394
18409
|
title: null,
|
|
18395
18410
|
color: 'panel-primary-icon',
|
|
@@ -18404,13 +18419,13 @@ class CaseViewService extends AbstractSortableViewComponent {
|
|
|
18404
18419
|
});
|
|
18405
18420
|
return myCase;
|
|
18406
18421
|
}
|
|
18407
|
-
getNewCaseAllowedNets() {
|
|
18422
|
+
getNewCaseAllowedNets(blockNets = []) {
|
|
18408
18423
|
if (this._newCaseConfiguration.useCachedProcesses) {
|
|
18409
|
-
return this._allowedNetsService.allowedNets$.pipe(map(net => net.filter(n => this._permissionService.hasNetPermission(PermissionType.CREATE, n))));
|
|
18424
|
+
return this._allowedNetsService.allowedNets$.pipe(map(net => net.filter(n => blockNets.indexOf(n.identifier) == -1)), map(net => net.filter(n => this._permissionService.hasNetPermission(PermissionType.CREATE, n))));
|
|
18410
18425
|
}
|
|
18411
18426
|
else {
|
|
18412
18427
|
return this._allowedNetsService.allowedNets$.pipe(switchMap(allowedNets => {
|
|
18413
|
-
return this._processService.getNetReferences(allowedNets.map(net => net.identifier)).pipe(map(net => net.filter(n => this._permissionService.hasNetPermission(PermissionType.CREATE, n))));
|
|
18428
|
+
return this._processService.getNetReferences(allowedNets.map(net => net.identifier)).pipe(map(net => net.filter(n => blockNets.indexOf(n.identifier) == -1)), map(net => net.filter(n => this._permissionService.hasNetPermission(PermissionType.CREATE, n))));
|
|
18414
18429
|
}));
|
|
18415
18430
|
}
|
|
18416
18431
|
}
|
|
@@ -20028,6 +20043,7 @@ class AbstractTaskPanelComponent extends AbstractPanelWithImmediateDataComponent
|
|
|
20028
20043
|
this.responsiveBody = true;
|
|
20029
20044
|
this.preventCollapse = false;
|
|
20030
20045
|
this.hidePanelHeader = false;
|
|
20046
|
+
this.showMoreMenu = true;
|
|
20031
20047
|
this.thisContext = {
|
|
20032
20048
|
canAssign: () => this.canAssign(),
|
|
20033
20049
|
assign: () => this.assign(),
|
|
@@ -20296,7 +20312,7 @@ class AbstractTaskPanelComponent extends AbstractPanelWithImmediateDataComponent
|
|
|
20296
20312
|
}
|
|
20297
20313
|
}
|
|
20298
20314
|
AbstractTaskPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskPanelComponent, deps: [{ token: TaskContentService }, { token: LoggerService }, { token: TaskViewService }, { token: PaperViewService }, { token: TaskEventService }, { token: AssignTaskService }, { token: DelegateTaskService }, { token: CancelTaskService }, { token: FinishTaskService }, { token: TaskRequestStateService }, { token: TaskDataService }, { token: AssignPolicyService }, { token: FinishPolicyService }, { token: CallChainService }, { token: SubjectTaskOperations }, { token: NAE_TASK_PANEL_DISABLE_BUTTON_FUNCTIONS, optional: true }, { token: i1$2.TranslateService }, { token: i5.CurrencyPipe }, { token: ChangedFieldsService }, { token: PermissionService }, { token: OverflowService, optional: true }, { token: NAE_TASK_FORCE_OPEN, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
20299
|
-
AbstractTaskPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractTaskPanelComponent, selector: "ncc-abstract-legal-notice", inputs: { taskListVirtualScroll: "taskListVirtualScroll", panelContentComponent: "panelContentComponent", selectedHeaders$: "selectedHeaders$", first: "first", last: "last", responsiveBody: "responsiveBody", preventCollapse: "preventCollapse", hidePanelHeader: "hidePanelHeader", actionButtonTemplates: "actionButtonTemplates", actionRowJustifyContent: "actionRowJustifyContent", forceLoadDataOnOpen: "forceLoadDataOnOpen", textEllipsis: "textEllipsis", taskPanelData: "taskPanelData" }, outputs: { taskEvent: "taskEvent", panelRefOutput: "panelRefOutput" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
20315
|
+
AbstractTaskPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractTaskPanelComponent, selector: "ncc-abstract-legal-notice", inputs: { taskListVirtualScroll: "taskListVirtualScroll", panelContentComponent: "panelContentComponent", selectedHeaders$: "selectedHeaders$", first: "first", last: "last", responsiveBody: "responsiveBody", preventCollapse: "preventCollapse", hidePanelHeader: "hidePanelHeader", actionButtonTemplates: "actionButtonTemplates", actionRowJustifyContent: "actionRowJustifyContent", showMoreMenu: "showMoreMenu", forceLoadDataOnOpen: "forceLoadDataOnOpen", textEllipsis: "textEllipsis", taskPanelData: "taskPanelData" }, outputs: { taskEvent: "taskEvent", panelRefOutput: "panelRefOutput" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
20300
20316
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskPanelComponent, decorators: [{
|
|
20301
20317
|
type: Component,
|
|
20302
20318
|
args: [{
|
|
@@ -20337,6 +20353,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
20337
20353
|
type: Input
|
|
20338
20354
|
}], actionRowJustifyContent: [{
|
|
20339
20355
|
type: Input
|
|
20356
|
+
}], showMoreMenu: [{
|
|
20357
|
+
type: Input
|
|
20340
20358
|
}], forceLoadDataOnOpen: [{
|
|
20341
20359
|
type: Input
|
|
20342
20360
|
}], textEllipsis: [{
|
|
@@ -20404,6 +20422,7 @@ class AbstractDefaultTaskListComponent extends TabbedVirtualScrollComponent {
|
|
|
20404
20422
|
this.responsiveBody = true;
|
|
20405
20423
|
this.forceLoadDataOnOpen = false;
|
|
20406
20424
|
this.textEllipsis = false;
|
|
20425
|
+
this.showMoreMenu = true;
|
|
20407
20426
|
this.taskEvent = new EventEmitter();
|
|
20408
20427
|
this._taskPanelRefs = new Map();
|
|
20409
20428
|
this._unsubscribe$ = new Subject();
|
|
@@ -20451,7 +20470,7 @@ class AbstractDefaultTaskListComponent extends TabbedVirtualScrollComponent {
|
|
|
20451
20470
|
}
|
|
20452
20471
|
}
|
|
20453
20472
|
AbstractDefaultTaskListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractDefaultTaskListComponent, deps: [{ token: TaskViewService }, { token: LoggerService }, { token: NAE_TAB_DATA, optional: true }, { token: i2$3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
20454
|
-
AbstractDefaultTaskListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractDefaultTaskListComponent, selector: "ncc-abstract-default-task-list", inputs: { loading$: "loading$", selectedHeaders$: "selectedHeaders$", responsiveBody: "responsiveBody", forceLoadDataOnOpen: "forceLoadDataOnOpen", textEllipsis: "textEllipsis", allowMultiOpen: "allowMultiOpen" }, outputs: { taskEvent: "taskEvent" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
20473
|
+
AbstractDefaultTaskListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractDefaultTaskListComponent, selector: "ncc-abstract-default-task-list", inputs: { loading$: "loading$", selectedHeaders$: "selectedHeaders$", responsiveBody: "responsiveBody", forceLoadDataOnOpen: "forceLoadDataOnOpen", textEllipsis: "textEllipsis", showMoreMenu: "showMoreMenu", allowMultiOpen: "allowMultiOpen" }, outputs: { taskEvent: "taskEvent" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
20455
20474
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractDefaultTaskListComponent, decorators: [{
|
|
20456
20475
|
type: Component,
|
|
20457
20476
|
args: [{
|
|
@@ -20475,6 +20494,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
20475
20494
|
type: Input
|
|
20476
20495
|
}], textEllipsis: [{
|
|
20477
20496
|
type: Input
|
|
20497
|
+
}], showMoreMenu: [{
|
|
20498
|
+
type: Input
|
|
20478
20499
|
}], allowMultiOpen: [{
|
|
20479
20500
|
type: Input
|
|
20480
20501
|
}], taskEvent: [{
|
|
@@ -22022,12 +22043,420 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
22022
22043
|
type: Input
|
|
22023
22044
|
}] } });
|
|
22024
22045
|
|
|
22046
|
+
/**
|
|
22047
|
+
* Case search request page size
|
|
22048
|
+
*/
|
|
22049
|
+
const NAE_URI_NODE_CASES_PAGE_SIZE = new InjectionToken('NaeUriNodeCasesPageSize');
|
|
22050
|
+
|
|
22051
|
+
/**
|
|
22052
|
+
* Service for accessing backend resource to resolve URI objects
|
|
22053
|
+
* */
|
|
22054
|
+
class UriResourceService extends AbstractResourceService {
|
|
22055
|
+
constructor(provider, configService) {
|
|
22056
|
+
super('petrinet', provider, configService);
|
|
22057
|
+
}
|
|
22058
|
+
getRoot() {
|
|
22059
|
+
return this._resourceProvider.get$('uri/root', this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNode')));
|
|
22060
|
+
}
|
|
22061
|
+
getByLevel(level) {
|
|
22062
|
+
return this._resourceProvider.get$('uri/level/' + level, this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNodes')));
|
|
22063
|
+
}
|
|
22064
|
+
getNodesByParent(parentId) {
|
|
22065
|
+
return this._resourceProvider.get$('uri/parent/' + parentId, this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNodes')));
|
|
22066
|
+
}
|
|
22067
|
+
getNodeByUri(uriPath) {
|
|
22068
|
+
return this._resourceProvider.get$('uri/' + btoa(uriPath), this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNode')));
|
|
22069
|
+
}
|
|
22070
|
+
}
|
|
22071
|
+
UriResourceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UriResourceService, deps: [{ token: ResourceProvider }, { token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22072
|
+
UriResourceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UriResourceService, providedIn: 'root' });
|
|
22073
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UriResourceService, decorators: [{
|
|
22074
|
+
type: Injectable,
|
|
22075
|
+
args: [{
|
|
22076
|
+
providedIn: 'root'
|
|
22077
|
+
}]
|
|
22078
|
+
}], ctorParameters: function () { return [{ type: ResourceProvider }, { type: ConfigurationService }]; } });
|
|
22079
|
+
|
|
22080
|
+
/**
|
|
22081
|
+
* This service allows access to information about the groups of the currently logged user.
|
|
22082
|
+
*
|
|
22083
|
+
* If no user is logged an empty array is provided.
|
|
22084
|
+
*
|
|
22085
|
+
* If a user can be owner of at most one group, this service provides utility methods to access this group directly.
|
|
22086
|
+
*
|
|
22087
|
+
* The groups are assumed to be instances of the engine group process, this is never checked nor enforced.
|
|
22088
|
+
*/
|
|
22089
|
+
class NextGroupService {
|
|
22090
|
+
constructor(_userService, _caseResourceService) {
|
|
22091
|
+
this._userService = _userService;
|
|
22092
|
+
this._caseResourceService = _caseResourceService;
|
|
22093
|
+
this._ownerGroups$ = new BehaviorSubject([]);
|
|
22094
|
+
this._memberGroups$ = new BehaviorSubject([]);
|
|
22095
|
+
this._userSub = this._userService.user$.pipe(switchMap(user => {
|
|
22096
|
+
if (!user || user.id === '') {
|
|
22097
|
+
return of([]);
|
|
22098
|
+
}
|
|
22099
|
+
const params = new HttpParams();
|
|
22100
|
+
params.set(PaginationParams.PAGE_SIZE, `${user.nextGroups.length}`);
|
|
22101
|
+
return this._caseResourceService.searchCases(SimpleFilter.fromCaseQuery({ stringId: user.nextGroups }), params)
|
|
22102
|
+
.pipe(map(page => page.content ? page.content : []), map(groups => groups.filter(group => group.author.fullName !== 'application engine')));
|
|
22103
|
+
})).subscribe(groups => {
|
|
22104
|
+
const ownerGroups = groups.filter(g => g.author.email === this._userService.user.email);
|
|
22105
|
+
this._ownerGroups$.next(ownerGroups);
|
|
22106
|
+
this._memberGroups$.next(groups);
|
|
22107
|
+
});
|
|
22108
|
+
}
|
|
22109
|
+
ngOnDestroy() {
|
|
22110
|
+
this._userSub.unsubscribe();
|
|
22111
|
+
this._memberGroups$.complete();
|
|
22112
|
+
this._ownerGroups$.complete();
|
|
22113
|
+
}
|
|
22114
|
+
/**
|
|
22115
|
+
* @returns an Observable of all the groups the currently logged user is a member of
|
|
22116
|
+
*/
|
|
22117
|
+
get memberGroups$() {
|
|
22118
|
+
return this._memberGroups$.asObservable();
|
|
22119
|
+
}
|
|
22120
|
+
/**
|
|
22121
|
+
* @returns an Observable of all the groups the currently logged user is an owner of
|
|
22122
|
+
*/
|
|
22123
|
+
get ownerGroups$() {
|
|
22124
|
+
return this._ownerGroups$.asObservable();
|
|
22125
|
+
}
|
|
22126
|
+
/**
|
|
22127
|
+
* @returns an Array of all the groups the currently logged user is a member of
|
|
22128
|
+
*/
|
|
22129
|
+
get memberGroups() {
|
|
22130
|
+
return this._memberGroups$.getValue();
|
|
22131
|
+
}
|
|
22132
|
+
/**
|
|
22133
|
+
* @returns an Array of all the groups the currently logged user is an owner of
|
|
22134
|
+
*/
|
|
22135
|
+
get ownerGroups() {
|
|
22136
|
+
return this._ownerGroups$.getValue();
|
|
22137
|
+
}
|
|
22138
|
+
/**
|
|
22139
|
+
* @returns an Observable containing the first element of the [ownerGroups$]{@link NextGroupService#ownerGroups$} observable,
|
|
22140
|
+
* or `undefined` if the contained array is empty
|
|
22141
|
+
*/
|
|
22142
|
+
get firstOwnerGroup$() {
|
|
22143
|
+
return this._ownerGroups$.pipe(map(array => array.length > 0 ? array[0] : undefined));
|
|
22144
|
+
}
|
|
22145
|
+
/**
|
|
22146
|
+
* @returns the first element of the [ownerGroups]{@link NextGroupService#ownerGroups} array, or `undefined` if the array is empty
|
|
22147
|
+
*/
|
|
22148
|
+
get firstOwnerGroup() {
|
|
22149
|
+
const ownerGroups = this.ownerGroups;
|
|
22150
|
+
return ownerGroups.length > 0 ? ownerGroups[0] : undefined;
|
|
22151
|
+
}
|
|
22152
|
+
/**
|
|
22153
|
+
* @deprecated in NAE 5.6.0 - use [ownerGroups]{@link NextGroupService#ownerGroups} instead
|
|
22154
|
+
*/
|
|
22155
|
+
get groupOfUser() {
|
|
22156
|
+
return this.ownerGroups;
|
|
22157
|
+
}
|
|
22158
|
+
}
|
|
22159
|
+
NextGroupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NextGroupService, deps: [{ token: UserService }, { token: CaseResourceService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22160
|
+
NextGroupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NextGroupService, providedIn: 'root' });
|
|
22161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NextGroupService, decorators: [{
|
|
22162
|
+
type: Injectable,
|
|
22163
|
+
args: [{
|
|
22164
|
+
providedIn: 'root'
|
|
22165
|
+
}]
|
|
22166
|
+
}], ctorParameters: function () { return [{ type: UserService }, { type: CaseResourceService }]; } });
|
|
22167
|
+
|
|
22168
|
+
/**
|
|
22169
|
+
* This service to the groups that are "active" for the logged user.
|
|
22170
|
+
*
|
|
22171
|
+
* The meaning of "active" can wary from application to application. And this service provides the utility to track this state.
|
|
22172
|
+
*
|
|
22173
|
+
* The active groups are assumed to be a subset of the groups the logged user is a member of,
|
|
22174
|
+
* but this assumption is not enforced nor checked.
|
|
22175
|
+
*
|
|
22176
|
+
* If at most one group can be active at a time, this service provides utility methods to access this group directly.
|
|
22177
|
+
*
|
|
22178
|
+
* The groups are assumed to be instances of the engine group process, this is never checked nor enforced.
|
|
22179
|
+
*
|
|
22180
|
+
* In the default implementation the initially active groups are all the groups the logged user is a member of.
|
|
22181
|
+
*/
|
|
22182
|
+
class ActiveGroupService {
|
|
22183
|
+
constructor(_groupService) {
|
|
22184
|
+
this._groupService = _groupService;
|
|
22185
|
+
this._activeGroups$ = new BehaviorSubject([]);
|
|
22186
|
+
this._groupSub = this._groupService.memberGroups$.subscribe(groups => {
|
|
22187
|
+
this._activeGroups$.next(groups);
|
|
22188
|
+
});
|
|
22189
|
+
}
|
|
22190
|
+
ngOnDestroy() {
|
|
22191
|
+
this._groupSub.unsubscribe();
|
|
22192
|
+
this._activeGroups$.complete();
|
|
22193
|
+
}
|
|
22194
|
+
/**
|
|
22195
|
+
* In the default implementation this stream copies the values of the [memberGroups$]{@link NextGroupService#memberGroups$} stream
|
|
22196
|
+
* of the {@link NextGroupService}. Whenever the copies stream emits, the underlying stream in this class emits the same value.
|
|
22197
|
+
*
|
|
22198
|
+
* @returns an Observable of all the groups that are currently active
|
|
22199
|
+
*/
|
|
22200
|
+
get activeGroups$() {
|
|
22201
|
+
return this._activeGroups$.asObservable();
|
|
22202
|
+
}
|
|
22203
|
+
get activeGroups() {
|
|
22204
|
+
return this._activeGroups$.getValue();
|
|
22205
|
+
}
|
|
22206
|
+
set activeGroups(activeGroups) {
|
|
22207
|
+
this._activeGroups$.next(activeGroups);
|
|
22208
|
+
}
|
|
22209
|
+
/**
|
|
22210
|
+
* @returns an Observable containing the first element of the [activeGroups$]{@link ActiveGroupService#activeGroups$} observable,
|
|
22211
|
+
* or `undefined` if the contained array is empty
|
|
22212
|
+
*/
|
|
22213
|
+
get activeGroup$() {
|
|
22214
|
+
return this.activeGroups$.pipe(map(array => array.length > 0 ? array[0] : undefined));
|
|
22215
|
+
}
|
|
22216
|
+
/**
|
|
22217
|
+
* @returns the first element of the [activeGroups]{@link ActiveGroupService#activeGroups} array, or `undefined` if the array is empty
|
|
22218
|
+
*/
|
|
22219
|
+
get activeGroup() {
|
|
22220
|
+
const activeGroups = this.activeGroups;
|
|
22221
|
+
return activeGroups.length > 0 ? activeGroups[0] : undefined;
|
|
22222
|
+
}
|
|
22223
|
+
/**
|
|
22224
|
+
* Emits a new array into the [activeGroups$]{@link ActiveGroupService#activeGroups$} observable, that contains only
|
|
22225
|
+
* the provided {@link Case} object. If `undefined` is passed as argument, an empty array will be pushed into the observable.
|
|
22226
|
+
* @param activeGroup the new active group case reference
|
|
22227
|
+
*/
|
|
22228
|
+
set activeGroup(activeGroup) {
|
|
22229
|
+
if (activeGroup === undefined) {
|
|
22230
|
+
this._activeGroups$.next([]);
|
|
22231
|
+
}
|
|
22232
|
+
else {
|
|
22233
|
+
this._activeGroups$.next([activeGroup]);
|
|
22234
|
+
}
|
|
22235
|
+
}
|
|
22236
|
+
}
|
|
22237
|
+
ActiveGroupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ActiveGroupService, deps: [{ token: NextGroupService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22238
|
+
ActiveGroupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ActiveGroupService, providedIn: 'root' });
|
|
22239
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ActiveGroupService, decorators: [{
|
|
22240
|
+
type: Injectable,
|
|
22241
|
+
args: [{
|
|
22242
|
+
providedIn: 'root'
|
|
22243
|
+
}]
|
|
22244
|
+
}], ctorParameters: function () { return [{ type: NextGroupService }]; } });
|
|
22245
|
+
|
|
22246
|
+
/**
|
|
22247
|
+
* Service for managing URIs
|
|
22248
|
+
* */
|
|
22249
|
+
class UriService {
|
|
22250
|
+
constructor(_logger, _resourceService, _caseResourceService, _activeGroupService, pageSize) {
|
|
22251
|
+
this._logger = _logger;
|
|
22252
|
+
this._resourceService = _resourceService;
|
|
22253
|
+
this._caseResourceService = _caseResourceService;
|
|
22254
|
+
this._activeGroupService = _activeGroupService;
|
|
22255
|
+
this.pageSize = pageSize;
|
|
22256
|
+
if (!pageSize) {
|
|
22257
|
+
this.pageSize = 20;
|
|
22258
|
+
}
|
|
22259
|
+
if (typeof this.pageSize === 'string') {
|
|
22260
|
+
this.pageSize = parseInt(this.pageSize);
|
|
22261
|
+
}
|
|
22262
|
+
this._rootLoading$ = new LoadingEmitter();
|
|
22263
|
+
this._parentLoading$ = new LoadingEmitter();
|
|
22264
|
+
this._activeNode$ = new BehaviorSubject(undefined);
|
|
22265
|
+
this.loadRoot();
|
|
22266
|
+
}
|
|
22267
|
+
ngOnDestroy() {
|
|
22268
|
+
this._rootLoading$.complete();
|
|
22269
|
+
this._parentLoading$.complete();
|
|
22270
|
+
this._activeNode$.complete();
|
|
22271
|
+
}
|
|
22272
|
+
get root() {
|
|
22273
|
+
return this._rootNode;
|
|
22274
|
+
}
|
|
22275
|
+
get rootLoaded$() {
|
|
22276
|
+
return this._rootLoading$;
|
|
22277
|
+
}
|
|
22278
|
+
isRoot(node) {
|
|
22279
|
+
return node.id === this._rootNode.id && node.uriPath === this._rootNode.uriPath;
|
|
22280
|
+
}
|
|
22281
|
+
get activeNode() {
|
|
22282
|
+
return this._activeNode$.getValue();
|
|
22283
|
+
}
|
|
22284
|
+
set activeNode(node) {
|
|
22285
|
+
if (node.parentId && !node.parent) {
|
|
22286
|
+
if (node.parentId === this._rootNode.id) {
|
|
22287
|
+
node.parent = this._rootNode;
|
|
22288
|
+
}
|
|
22289
|
+
else {
|
|
22290
|
+
this._parentLoading$.on();
|
|
22291
|
+
this.getNodeByPath(this.resolveParentPath(node)).subscribe(n => {
|
|
22292
|
+
node.parent = !n ? this._rootNode : n;
|
|
22293
|
+
this._parentLoading$.off();
|
|
22294
|
+
}, error => {
|
|
22295
|
+
this._logger.error(error);
|
|
22296
|
+
this._parentLoading$.off();
|
|
22297
|
+
});
|
|
22298
|
+
}
|
|
22299
|
+
}
|
|
22300
|
+
this._activeNode$.next(node);
|
|
22301
|
+
}
|
|
22302
|
+
get activeNode$() {
|
|
22303
|
+
return this._activeNode$;
|
|
22304
|
+
}
|
|
22305
|
+
get parentNodeLoading$() {
|
|
22306
|
+
return this._parentLoading$;
|
|
22307
|
+
}
|
|
22308
|
+
/**
|
|
22309
|
+
* Loads root ID into variable.
|
|
22310
|
+
* When root node is loaded and active node is not set yet the root node is set as active node
|
|
22311
|
+
* */
|
|
22312
|
+
loadRoot() {
|
|
22313
|
+
this._rootLoading$.on();
|
|
22314
|
+
this._resourceService.getRoot().subscribe(node => {
|
|
22315
|
+
if (!!node) {
|
|
22316
|
+
this._rootNode = node;
|
|
22317
|
+
if (!this.activeNode) {
|
|
22318
|
+
this.activeNode = this._rootNode;
|
|
22319
|
+
}
|
|
22320
|
+
}
|
|
22321
|
+
this._rootLoading$.off();
|
|
22322
|
+
}, error => {
|
|
22323
|
+
this._logger.error(error);
|
|
22324
|
+
this._rootLoading$.off();
|
|
22325
|
+
});
|
|
22326
|
+
}
|
|
22327
|
+
reset() {
|
|
22328
|
+
this.activeNode = this._rootNode;
|
|
22329
|
+
return this._rootNode;
|
|
22330
|
+
}
|
|
22331
|
+
/**
|
|
22332
|
+
* Get uri node by uri path.
|
|
22333
|
+
* @param path
|
|
22334
|
+
*/
|
|
22335
|
+
getNodeByPath(path) {
|
|
22336
|
+
return this._resourceService.getNodeByUri(path).pipe(map(n => this.capitalizeName(n)));
|
|
22337
|
+
}
|
|
22338
|
+
/**
|
|
22339
|
+
* Get child nodes of provides node.
|
|
22340
|
+
* @param node parent node
|
|
22341
|
+
*/
|
|
22342
|
+
getChildNodes(node) {
|
|
22343
|
+
if (!node)
|
|
22344
|
+
node = this.activeNode;
|
|
22345
|
+
return this._resourceService.getNodesByParent(node.id).pipe(map(nodes => {
|
|
22346
|
+
this.capitalizeNames(nodes);
|
|
22347
|
+
return nodes;
|
|
22348
|
+
}));
|
|
22349
|
+
}
|
|
22350
|
+
/**
|
|
22351
|
+
* Get cases under uri node
|
|
22352
|
+
* @param node parent node of cases
|
|
22353
|
+
* @param processIdentifiers optional search filter for process identifier to get only cases from the process
|
|
22354
|
+
* @param pageNumber optional parameter for load page on the index. Default value is 0 (the first page).
|
|
22355
|
+
* @param pageSize optional parameter for loaded page size. Defaults to value of injection token URI_NODE_CASES_PAGE_SIZE or to value "20".
|
|
22356
|
+
*/
|
|
22357
|
+
getCasesOfNode(node, processIdentifiers, pageNumber = 0, pageSize = this.pageSize) {
|
|
22358
|
+
if (!node)
|
|
22359
|
+
node = this.activeNode;
|
|
22360
|
+
const searchBody = {
|
|
22361
|
+
uriNodeId: node.id,
|
|
22362
|
+
};
|
|
22363
|
+
if (!!processIdentifiers) {
|
|
22364
|
+
searchBody.process = processIdentifiers.map(id => ({ identifier: id }));
|
|
22365
|
+
}
|
|
22366
|
+
// TODO active group is broken a given the wrong id
|
|
22367
|
+
// if (!!this._activeGroupService.activeGroup) {
|
|
22368
|
+
// searchBody.data = {};
|
|
22369
|
+
// searchBody.data['parentId'] = this._activeGroupService.activeGroup.stringId;
|
|
22370
|
+
// }
|
|
22371
|
+
let httpParams = new HttpParams()
|
|
22372
|
+
.set(PaginationParams.PAGE_SIZE, pageSize)
|
|
22373
|
+
.set(PaginationParams.PAGE_NUMBER, pageNumber);
|
|
22374
|
+
return this._caseResourceService.searchCases(SimpleFilter.fromCaseQuery(searchBody), httpParams);
|
|
22375
|
+
}
|
|
22376
|
+
/**
|
|
22377
|
+
* Get siblings node of the provided node
|
|
22378
|
+
* @param node siblings node
|
|
22379
|
+
*/
|
|
22380
|
+
getSiblingsOfNode(node) {
|
|
22381
|
+
if (!node)
|
|
22382
|
+
node = this.activeNode;
|
|
22383
|
+
return this._resourceService.getNodesByParent(node.parentId).pipe(map(nodes => {
|
|
22384
|
+
this.capitalizeNames(nodes);
|
|
22385
|
+
return nodes;
|
|
22386
|
+
}));
|
|
22387
|
+
}
|
|
22388
|
+
/**
|
|
22389
|
+
* Get nodes on the same uri level starting from 0. Root node is no 0 level.
|
|
22390
|
+
* @param level
|
|
22391
|
+
* @param parent optional parameter to filter nodes with common parent
|
|
22392
|
+
*/
|
|
22393
|
+
getNodesOnLevel(level, parent) {
|
|
22394
|
+
if (level === 0)
|
|
22395
|
+
return of([this.root]);
|
|
22396
|
+
return this._resourceService.getByLevel(level).pipe(map(nodes => {
|
|
22397
|
+
const ns = !!(parent === null || parent === void 0 ? void 0 : parent.id) ? nodes.filter(n => n.parentId === parent.id) : nodes;
|
|
22398
|
+
this.capitalizeNames(ns);
|
|
22399
|
+
return ns;
|
|
22400
|
+
}));
|
|
22401
|
+
}
|
|
22402
|
+
resolveParentPath(node) {
|
|
22403
|
+
if (!node)
|
|
22404
|
+
node = this.activeNode;
|
|
22405
|
+
const lastDelimiter = node.uriPath.lastIndexOf('/');
|
|
22406
|
+
if (lastDelimiter === 0)
|
|
22407
|
+
return '/';
|
|
22408
|
+
return node.uriPath.substring(0, lastDelimiter);
|
|
22409
|
+
}
|
|
22410
|
+
splitNodePath(node) {
|
|
22411
|
+
return node === null || node === void 0 ? void 0 : node.uriPath.split('/').filter(s => s !== UriService.ROOT);
|
|
22412
|
+
}
|
|
22413
|
+
capitalizeNames(nodes) {
|
|
22414
|
+
if (!(nodes instanceof Array))
|
|
22415
|
+
return;
|
|
22416
|
+
nodes.forEach(n => this.capitalizeName(n));
|
|
22417
|
+
}
|
|
22418
|
+
/**
|
|
22419
|
+
* /netgrif/nae_system/processes/... => Netgrif -> Nae Systems -> Processes
|
|
22420
|
+
* @param node
|
|
22421
|
+
* @private
|
|
22422
|
+
*/
|
|
22423
|
+
capitalizeName(node) {
|
|
22424
|
+
let parts = node.name.split('_');
|
|
22425
|
+
parts = parts.map(p => {
|
|
22426
|
+
if (p === undefined || p.length === 0)
|
|
22427
|
+
return;
|
|
22428
|
+
if (p.length === 1)
|
|
22429
|
+
return p.toUpperCase();
|
|
22430
|
+
return p.charAt(0).toUpperCase() + p.substring(1);
|
|
22431
|
+
});
|
|
22432
|
+
node.name = parts.join(' ');
|
|
22433
|
+
return node;
|
|
22434
|
+
}
|
|
22435
|
+
}
|
|
22436
|
+
UriService.ROOT = 'root';
|
|
22437
|
+
UriService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UriService, deps: [{ token: LoggerService }, { token: UriResourceService }, { token: CaseResourceService }, { token: ActiveGroupService }, { token: NAE_URI_NODE_CASES_PAGE_SIZE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22438
|
+
UriService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UriService, providedIn: 'root' });
|
|
22439
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UriService, decorators: [{
|
|
22440
|
+
type: Injectable,
|
|
22441
|
+
args: [{
|
|
22442
|
+
providedIn: 'root',
|
|
22443
|
+
}]
|
|
22444
|
+
}], ctorParameters: function () {
|
|
22445
|
+
return [{ type: LoggerService }, { type: UriResourceService }, { type: CaseResourceService }, { type: ActiveGroupService }, { type: undefined, decorators: [{
|
|
22446
|
+
type: Optional
|
|
22447
|
+
}, {
|
|
22448
|
+
type: Inject,
|
|
22449
|
+
args: [NAE_URI_NODE_CASES_PAGE_SIZE]
|
|
22450
|
+
}] }];
|
|
22451
|
+
} });
|
|
22452
|
+
|
|
22025
22453
|
class FileUploadModel {
|
|
22026
22454
|
}
|
|
22027
22455
|
class AbstractImportNetComponent {
|
|
22028
|
-
constructor(_sideMenuControl, _petriNetResource, _log, _snackbar, _translate) {
|
|
22456
|
+
constructor(_sideMenuControl, _petriNetResource, _uriService, _log, _snackbar, _translate) {
|
|
22029
22457
|
this._sideMenuControl = _sideMenuControl;
|
|
22030
22458
|
this._petriNetResource = _petriNetResource;
|
|
22459
|
+
this._uriService = _uriService;
|
|
22031
22460
|
this._log = _log;
|
|
22032
22461
|
this._snackbar = _snackbar;
|
|
22033
22462
|
this._translate = _translate;
|
|
@@ -22103,6 +22532,7 @@ class AbstractImportNetComponent {
|
|
|
22103
22532
|
uploadFile(file) {
|
|
22104
22533
|
const fileFormData = new FormData();
|
|
22105
22534
|
fileFormData.append('file', file.data);
|
|
22535
|
+
fileFormData.append('uriNodeId', this._uriService.activeNode.id);
|
|
22106
22536
|
fileFormData.append('meta', this.releaseTypeControl.value.toString().toUpperCase());
|
|
22107
22537
|
file.inProgress = true;
|
|
22108
22538
|
file.completed = false;
|
|
@@ -22140,7 +22570,7 @@ class AbstractImportNetComponent {
|
|
|
22140
22570
|
});
|
|
22141
22571
|
}
|
|
22142
22572
|
}
|
|
22143
|
-
AbstractImportNetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractImportNetComponent, deps: [{ token: SideMenuControl }, { token: PetriNetResourceService }, { token: LoggerService }, { token: SnackBarService }, { token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
22573
|
+
AbstractImportNetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractImportNetComponent, deps: [{ token: SideMenuControl }, { token: PetriNetResourceService }, { token: UriService }, { token: LoggerService }, { token: SnackBarService }, { token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
22144
22574
|
AbstractImportNetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractImportNetComponent, selector: "ncc-abstract-import-net", ngImport: i0, template: '', isInline: true });
|
|
22145
22575
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractImportNetComponent, decorators: [{
|
|
22146
22576
|
type: Component,
|
|
@@ -22148,7 +22578,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
22148
22578
|
selector: 'ncc-abstract-import-net',
|
|
22149
22579
|
template: ''
|
|
22150
22580
|
}]
|
|
22151
|
-
}], ctorParameters: function () { return [{ type: SideMenuControl }, { type: PetriNetResourceService }, { type: LoggerService }, { type: SnackBarService }, { type: i1$2.TranslateService }]; } });
|
|
22581
|
+
}], ctorParameters: function () { return [{ type: SideMenuControl }, { type: PetriNetResourceService }, { type: UriService }, { type: LoggerService }, { type: SnackBarService }, { type: i1$2.TranslateService }]; } });
|
|
22152
22582
|
|
|
22153
22583
|
class AbstractNewCaseComponent {
|
|
22154
22584
|
constructor(_sideMenuControl, _formBuilder, _snackBarService, _caseResourceService, _hotkeysService, _translate) {
|
|
@@ -24813,14 +25243,16 @@ class AbstractHeaderComponent {
|
|
|
24813
25243
|
this.DEFAULT_COLUMN_WIDTH = 220;
|
|
24814
25244
|
this.INPUT_DEBOUNCE_TIME = 600;
|
|
24815
25245
|
this.type = HeaderType.CASE;
|
|
24816
|
-
this.
|
|
25246
|
+
this.hideHeaderMenu = false;
|
|
25247
|
+
this.showEditButton = true;
|
|
25248
|
+
this.showSortButton = true;
|
|
25249
|
+
this.showSearchButton = true;
|
|
25250
|
+
this.showTableSection = true;
|
|
24817
25251
|
this.headerModeEnum = HeaderMode;
|
|
24818
25252
|
this.headerTypeEnum = HeaderType;
|
|
24819
25253
|
this._initHeaderCount = undefined;
|
|
24820
25254
|
this._initResponsiveHeaders = undefined;
|
|
24821
|
-
(this._overflowService !== null)
|
|
24822
|
-
this.initializeFormControls(true) :
|
|
24823
|
-
this.initializeFormControls(false);
|
|
25255
|
+
this.initializeFormControls(this._overflowService !== null);
|
|
24824
25256
|
}
|
|
24825
25257
|
set maxHeaderColumns(count) {
|
|
24826
25258
|
if (this.headerService) {
|
|
@@ -24841,6 +25273,11 @@ class AbstractHeaderComponent {
|
|
|
24841
25273
|
this._initResponsiveHeaders = responsive;
|
|
24842
25274
|
}
|
|
24843
25275
|
}
|
|
25276
|
+
changeHeadersMode(mode, saveLastMode = true) {
|
|
25277
|
+
if (this.headerService) {
|
|
25278
|
+
this.headerService.changeMode(mode, saveLastMode);
|
|
25279
|
+
}
|
|
25280
|
+
}
|
|
24844
25281
|
ngOnInit() {
|
|
24845
25282
|
this.resolveHeaderService();
|
|
24846
25283
|
this.initializedHeaderSearch();
|
|
@@ -24949,7 +25386,7 @@ class AbstractHeaderComponent {
|
|
|
24949
25386
|
}
|
|
24950
25387
|
}
|
|
24951
25388
|
AbstractHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractHeaderComponent, deps: [{ token: i0.Injector }, { token: i1$2.TranslateService }, { token: OverflowService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
24952
|
-
AbstractHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractHeaderComponent, selector: "ncc-abstract-header", inputs: { type: "type",
|
|
25389
|
+
AbstractHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractHeaderComponent, selector: "ncc-abstract-header", inputs: { type: "type", hideHeaderMenu: "hideHeaderMenu", showEditButton: "showEditButton", showSortButton: "showSortButton", showSearchButton: "showSearchButton", showTableSection: "showTableSection", maxHeaderColumns: "maxHeaderColumns", responsiveHeaders: "responsiveHeaders" }, ngImport: i0, template: '', isInline: true });
|
|
24953
25390
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractHeaderComponent, decorators: [{
|
|
24954
25391
|
type: Component,
|
|
24955
25392
|
args: [{
|
|
@@ -24962,7 +25399,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
24962
25399
|
}] }];
|
|
24963
25400
|
}, propDecorators: { type: [{
|
|
24964
25401
|
type: Input
|
|
24965
|
-
}],
|
|
25402
|
+
}], hideHeaderMenu: [{
|
|
25403
|
+
type: Input
|
|
25404
|
+
}], showEditButton: [{
|
|
25405
|
+
type: Input
|
|
25406
|
+
}], showSortButton: [{
|
|
25407
|
+
type: Input
|
|
25408
|
+
}], showSearchButton: [{
|
|
25409
|
+
type: Input
|
|
25410
|
+
}], showTableSection: [{
|
|
24966
25411
|
type: Input
|
|
24967
25412
|
}], maxHeaderColumns: [{
|
|
24968
25413
|
type: Input
|
|
@@ -25706,147 +26151,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
25706
26151
|
|
|
25707
26152
|
/* COMPONENTS */
|
|
25708
26153
|
|
|
25709
|
-
var GroupNavigationConstants;
|
|
25710
|
-
(function (GroupNavigationConstants) {
|
|
25711
|
-
/**
|
|
25712
|
-
* Name of the component that indicates the position of the group specific navigation elements.
|
|
25713
|
-
*/
|
|
25714
|
-
GroupNavigationConstants["GROUP_NAVIGATION_OUTLET"] = "groupNavigation";
|
|
25715
|
-
/**
|
|
25716
|
-
* Name of the router param that is used to provide information about the selected filter to the group navigation view component
|
|
25717
|
-
*/
|
|
25718
|
-
GroupNavigationConstants["GROUP_NAVIGATION_ROUTER_PARAM"] = "filterCaseId";
|
|
25719
|
-
/**
|
|
25720
|
-
* Id of the transition that stores the group navigation menu data
|
|
25721
|
-
*/
|
|
25722
|
-
GroupNavigationConstants["NAVIGATION_CONFIG_TRANSITION_ID"] = "navigationMenuConfig";
|
|
25723
|
-
/**
|
|
25724
|
-
* Id of the task ref field that holds the ids of the individual navigation item tasks
|
|
25725
|
-
*/
|
|
25726
|
-
GroupNavigationConstants["NAVIGATION_ENTRIES_TASK_REF_FIELD_ID"] = "filter_tasks";
|
|
25727
|
-
/**
|
|
25728
|
-
* Suffix of the field id that contains the name of the navigation entry.
|
|
25729
|
-
* Since the field itself is inserted via task ref the actual id is prefixed by the task id.
|
|
25730
|
-
*/
|
|
25731
|
-
GroupNavigationConstants["NAVIGATION_ENTRY_TITLE_FIELD_ID_SUFFIX"] = "entry_name";
|
|
25732
|
-
/**
|
|
25733
|
-
* Suffix of the field id that contains the filter case id.
|
|
25734
|
-
* Since the field itself is inserted via task ref the actual id is prefixed by the task id.
|
|
25735
|
-
*/
|
|
25736
|
-
GroupNavigationConstants["NAVIGATION_FILTER_CASE_ID_FIELD_ID_SUFFIX"] = "filter_case_id";
|
|
25737
|
-
/**
|
|
25738
|
-
* Suffix of the field id that is the navigation entry marker.
|
|
25739
|
-
* Since the field itself is inserted via task ref the actual id is prefixed by the task id.
|
|
25740
|
-
*/
|
|
25741
|
-
GroupNavigationConstants["NAVIGATION_ENTRY_MARKER_FIELD_ID_SUFFIX"] = "entry_marker";
|
|
25742
|
-
/**
|
|
25743
|
-
* Suffix of the boolean field id that determines if the navigation entry defines an icon.
|
|
25744
|
-
* Since the field itself is inserted via task ref the actual id is prefixed by the task id.
|
|
25745
|
-
*/
|
|
25746
|
-
GroupNavigationConstants["NAVIGATION_ENTRY_ICON_ENABLED_FIELD_ID_SUFFIX"] = "use_icon";
|
|
25747
|
-
/**
|
|
25748
|
-
* Suffix of the text field id that contains the id of the used material icon.
|
|
25749
|
-
* Since the field itself is inserted via task ref the actual id is prefixed by the task id.
|
|
25750
|
-
*/
|
|
25751
|
-
GroupNavigationConstants["NAVIGATION_ENTRY_ICON_FIELD_ID_SUFFIX"] = "icon_name";
|
|
25752
|
-
/**
|
|
25753
|
-
* Suffix of the text field id that contains the IDs of roles that are able to view the navigation entry.
|
|
25754
|
-
* Since the field itself is inserted via task ref the actual id is prefixed by the task id.
|
|
25755
|
-
*/
|
|
25756
|
-
GroupNavigationConstants["NAVIGATION_ENTRY_ALLOWED_ROLES_FIELD_ID_SUFFIX"] = "allowed_roles";
|
|
25757
|
-
/**
|
|
25758
|
-
* Suffix of the text field id that contains the IDs of roles that are banned from viewing the navigation entry.
|
|
25759
|
-
* Since the field itself is inserted via task ref the actual id is prefixed by the task id.
|
|
25760
|
-
*/
|
|
25761
|
-
GroupNavigationConstants["NAVIGATION_ENTRY_BANNED_ROLES_FIELD_ID_SUFFIX"] = "banned_roles";
|
|
25762
|
-
/**
|
|
25763
|
-
* The number of datagroups in the navigation configuration task that correspond to a single navigation entry.
|
|
25764
|
-
*/
|
|
25765
|
-
GroupNavigationConstants[GroupNavigationConstants["DATAGROUPS_PER_NAVIGATION_ENTRY"] = 2] = "DATAGROUPS_PER_NAVIGATION_ENTRY";
|
|
25766
|
-
})(GroupNavigationConstants || (GroupNavigationConstants = {}));
|
|
25767
|
-
|
|
25768
|
-
/**
|
|
25769
|
-
* Forces a re-render of the tree backed by the datasource
|
|
25770
|
-
*/
|
|
25771
|
-
function refreshTree(tree) {
|
|
25772
|
-
const d = tree.data;
|
|
25773
|
-
tree.data = null;
|
|
25774
|
-
tree.data = d;
|
|
25775
|
-
}
|
|
25776
|
-
|
|
25777
|
-
/**
|
|
25778
|
-
* Extracts the item name and item icon (if any) rom a section of the navigation item task data.
|
|
25779
|
-
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
25780
|
-
*/
|
|
25781
|
-
function extractIconAndTitle(dataSection) {
|
|
25782
|
-
const result = { name: '' };
|
|
25783
|
-
if (dataSection.length === 0) {
|
|
25784
|
-
throw new Error('The provided task data does not belong to a Navigation menu item task. Icon and title cannot be extracted');
|
|
25785
|
-
}
|
|
25786
|
-
const nameField = getFieldFromDataGroups(dataSection, GroupNavigationConstants.NAVIGATION_ENTRY_TITLE_FIELD_ID_SUFFIX);
|
|
25787
|
-
if (nameField === undefined) {
|
|
25788
|
-
throw new Error('Navigation entry name could not be resolved');
|
|
25789
|
-
}
|
|
25790
|
-
result.name = nameField.value;
|
|
25791
|
-
const useIcon = getFieldFromDataGroups(dataSection, GroupNavigationConstants.NAVIGATION_ENTRY_ICON_ENABLED_FIELD_ID_SUFFIX);
|
|
25792
|
-
if (useIcon !== undefined && useIcon.value) {
|
|
25793
|
-
const icon = getFieldFromDataGroups(dataSection, GroupNavigationConstants.NAVIGATION_ENTRY_ICON_FIELD_ID_SUFFIX);
|
|
25794
|
-
if (icon === undefined) {
|
|
25795
|
-
this._log.error('Navigation entry icon could not be resolved, but is enabled. Icon was ignored');
|
|
25796
|
-
}
|
|
25797
|
-
else {
|
|
25798
|
-
result.icon = icon.value;
|
|
25799
|
-
}
|
|
25800
|
-
}
|
|
25801
|
-
return result;
|
|
25802
|
-
}
|
|
25803
|
-
/**
|
|
25804
|
-
* Based on provided parameter extracts allowed or banned roles into an Array of strings from a section of the navigation item task data.
|
|
25805
|
-
* Each item has format ROLE_IMPORT_ID:NET_IMPORT_ID
|
|
25806
|
-
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
25807
|
-
* @param roleFieldId ID of field containing banned or allowed role IDs
|
|
25808
|
-
* @returns an Array of string values representing role IDs
|
|
25809
|
-
*/
|
|
25810
|
-
function extractRoles(dataSection, roleFieldId) {
|
|
25811
|
-
if (dataSection.length === 0) {
|
|
25812
|
-
throw new Error('The provided task data does not belong to a Navigation menu item task. Role entries cannot be extracted');
|
|
25813
|
-
}
|
|
25814
|
-
const roleIds = getFieldFromDataGroups(dataSection, roleFieldId);
|
|
25815
|
-
if (roleIds === undefined) {
|
|
25816
|
-
throw new Error('Navigation entry role authorization field could not be resolved');
|
|
25817
|
-
}
|
|
25818
|
-
return roleIds.choices.map(choice => choice.key);
|
|
25819
|
-
}
|
|
25820
|
-
/**
|
|
25821
|
-
* Extracts the data and creates a filter object from the navigation item task data.
|
|
25822
|
-
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
25823
|
-
*/
|
|
25824
|
-
function extractFilterFromData(dataSection) {
|
|
25825
|
-
return extractFilterFromFilterField(extractFilterFieldFromData(dataSection));
|
|
25826
|
-
}
|
|
25827
|
-
/**
|
|
25828
|
-
* Extracts the filter field from the navigation item task data.
|
|
25829
|
-
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
25830
|
-
* @returns The extracted {@link FilterField} or `undefined` if it could not be extracted.
|
|
25831
|
-
*/
|
|
25832
|
-
function extractFilterFieldFromData(dataSection) {
|
|
25833
|
-
const filterField = getFieldFromDataGroups(dataSection, UserFilterConstants.FILTER_FIELD_ID);
|
|
25834
|
-
if (filterField === undefined || !(filterField instanceof FilterField)) {
|
|
25835
|
-
throw new Error(`Filter could not be extracted. The provided datagroups do not contain a filter field with ID '${UserFilterConstants.FILTER_FIELD_ID}'`);
|
|
25836
|
-
}
|
|
25837
|
-
return filterField;
|
|
25838
|
-
}
|
|
25839
|
-
/**
|
|
25840
|
-
* @returns a {@link SimpleFilter} containing the filter stored in the provided {@link FilterField}.
|
|
25841
|
-
* Throws an error if this is not possible.
|
|
25842
|
-
*/
|
|
25843
|
-
function extractFilterFromFilterField(filterField) {
|
|
25844
|
-
if (filterField === undefined || !(filterField instanceof FilterField)) {
|
|
25845
|
-
throw new Error('Filter could not be resolved');
|
|
25846
|
-
}
|
|
25847
|
-
return SimpleFilter.fromQuery({ query: filterField.value }, filterField.filterMetadata.filterType);
|
|
25848
|
-
}
|
|
25849
|
-
|
|
25850
26154
|
class RoleGuardService {
|
|
25851
26155
|
constructor(_redirectService, _userService, _configService, _log) {
|
|
25852
26156
|
this._redirectService = _redirectService;
|
|
@@ -25983,94 +26287,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
25983
26287
|
}]
|
|
25984
26288
|
}], ctorParameters: function () { return [{ type: RedirectService }, { type: UserService }, { type: ConfigurationService }, { type: i2$3.Router }]; } });
|
|
25985
26289
|
|
|
25986
|
-
/**
|
|
25987
|
-
* This service allows access to information about the groups of the currently logged user.
|
|
25988
|
-
*
|
|
25989
|
-
* If no user is logged an empty array is provided.
|
|
25990
|
-
*
|
|
25991
|
-
* If a user can be owner of at most one group, this service provides utility methods to access this group directly.
|
|
25992
|
-
*
|
|
25993
|
-
* The groups are assumed to be instances of the engine group process, this is never checked nor enforced.
|
|
25994
|
-
*/
|
|
25995
|
-
class NextGroupService {
|
|
25996
|
-
constructor(_userService, _caseResourceService) {
|
|
25997
|
-
this._userService = _userService;
|
|
25998
|
-
this._caseResourceService = _caseResourceService;
|
|
25999
|
-
this._ownerGroups$ = new BehaviorSubject([]);
|
|
26000
|
-
this._memberGroups$ = new BehaviorSubject([]);
|
|
26001
|
-
this._userSub = this._userService.user$.pipe(switchMap(user => {
|
|
26002
|
-
if (!user || user.id === '') {
|
|
26003
|
-
return of([]);
|
|
26004
|
-
}
|
|
26005
|
-
const params = new HttpParams();
|
|
26006
|
-
params.set(PaginationParams.PAGE_SIZE, `${user.nextGroups.length}`);
|
|
26007
|
-
return this._caseResourceService.searchCases(SimpleFilter.fromCaseQuery({ stringId: user.nextGroups }), params)
|
|
26008
|
-
.pipe(map(page => page.content ? page.content : []), map(groups => groups.filter(group => group.author.fullName !== 'application engine')));
|
|
26009
|
-
})).subscribe(groups => {
|
|
26010
|
-
const ownerGroups = groups.filter(g => g.author.email === this._userService.user.email);
|
|
26011
|
-
this._ownerGroups$.next(ownerGroups);
|
|
26012
|
-
this._memberGroups$.next(groups);
|
|
26013
|
-
});
|
|
26014
|
-
}
|
|
26015
|
-
ngOnDestroy() {
|
|
26016
|
-
this._userSub.unsubscribe();
|
|
26017
|
-
this._memberGroups$.complete();
|
|
26018
|
-
this._ownerGroups$.complete();
|
|
26019
|
-
}
|
|
26020
|
-
/**
|
|
26021
|
-
* @returns an Observable of all the groups the currently logged user is a member of
|
|
26022
|
-
*/
|
|
26023
|
-
get memberGroups$() {
|
|
26024
|
-
return this._memberGroups$.asObservable();
|
|
26025
|
-
}
|
|
26026
|
-
/**
|
|
26027
|
-
* @returns an Observable of all the groups the currently logged user is an owner of
|
|
26028
|
-
*/
|
|
26029
|
-
get ownerGroups$() {
|
|
26030
|
-
return this._ownerGroups$.asObservable();
|
|
26031
|
-
}
|
|
26032
|
-
/**
|
|
26033
|
-
* @returns an Array of all the groups the currently logged user is a member of
|
|
26034
|
-
*/
|
|
26035
|
-
get memberGroups() {
|
|
26036
|
-
return this._memberGroups$.getValue();
|
|
26037
|
-
}
|
|
26038
|
-
/**
|
|
26039
|
-
* @returns an Array of all the groups the currently logged user is an owner of
|
|
26040
|
-
*/
|
|
26041
|
-
get ownerGroups() {
|
|
26042
|
-
return this._ownerGroups$.getValue();
|
|
26043
|
-
}
|
|
26044
|
-
/**
|
|
26045
|
-
* @returns an Observable containing the first element of the [ownerGroups$]{@link NextGroupService#ownerGroups$} observable,
|
|
26046
|
-
* or `undefined` if the contained array is empty
|
|
26047
|
-
*/
|
|
26048
|
-
get firstOwnerGroup$() {
|
|
26049
|
-
return this._ownerGroups$.pipe(map(array => array.length > 0 ? array[0] : undefined));
|
|
26050
|
-
}
|
|
26051
|
-
/**
|
|
26052
|
-
* @returns the first element of the [ownerGroups]{@link NextGroupService#ownerGroups} array, or `undefined` if the array is empty
|
|
26053
|
-
*/
|
|
26054
|
-
get firstOwnerGroup() {
|
|
26055
|
-
const ownerGroups = this.ownerGroups;
|
|
26056
|
-
return ownerGroups.length > 0 ? ownerGroups[0] : undefined;
|
|
26057
|
-
}
|
|
26058
|
-
/**
|
|
26059
|
-
* @deprecated in NAE 5.6.0 - use [ownerGroups]{@link NextGroupService#ownerGroups} instead
|
|
26060
|
-
*/
|
|
26061
|
-
get groupOfUser() {
|
|
26062
|
-
return this.ownerGroups;
|
|
26063
|
-
}
|
|
26064
|
-
}
|
|
26065
|
-
NextGroupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NextGroupService, deps: [{ token: UserService }, { token: CaseResourceService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
26066
|
-
NextGroupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NextGroupService, providedIn: 'root' });
|
|
26067
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NextGroupService, decorators: [{
|
|
26068
|
-
type: Injectable,
|
|
26069
|
-
args: [{
|
|
26070
|
-
providedIn: 'root'
|
|
26071
|
-
}]
|
|
26072
|
-
}], ctorParameters: function () { return [{ type: UserService }, { type: CaseResourceService }]; } });
|
|
26073
|
-
|
|
26074
26290
|
class GroupGuardService {
|
|
26075
26291
|
constructor(_redirectService, _userService, _nextGroupService, _configService, _log) {
|
|
26076
26292
|
this._redirectService = _redirectService;
|
|
@@ -26180,84 +26396,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
26180
26396
|
}]
|
|
26181
26397
|
}], ctorParameters: function () { return [{ type: ConfigurationService }, { type: UserService }, { type: RoleGuardService }, { type: AuthorityGuardService }, { type: GroupGuardService }]; } });
|
|
26182
26398
|
|
|
26183
|
-
/**
|
|
26184
|
-
* This service to the groups that are "active" for the logged user.
|
|
26185
|
-
*
|
|
26186
|
-
* The meaning of "active" can wary from application to application. And this service provides the utility to track this state.
|
|
26187
|
-
*
|
|
26188
|
-
* The active groups are assumed to be a subset of the groups the logged user is a member of,
|
|
26189
|
-
* but this assumption is not enforced nor checked.
|
|
26190
|
-
*
|
|
26191
|
-
* If at most one group can be active at a time, this service provides utility methods to access this group directly.
|
|
26192
|
-
*
|
|
26193
|
-
* The groups are assumed to be instances of the engine group process, this is never checked nor enforced.
|
|
26194
|
-
*
|
|
26195
|
-
* In the default implementation the initially active groups are all the groups the logged user is a member of.
|
|
26196
|
-
*/
|
|
26197
|
-
class ActiveGroupService {
|
|
26198
|
-
constructor(_groupService) {
|
|
26199
|
-
this._groupService = _groupService;
|
|
26200
|
-
this._activeGroups$ = new BehaviorSubject([]);
|
|
26201
|
-
this._groupSub = this._groupService.memberGroups$.subscribe(groups => {
|
|
26202
|
-
this._activeGroups$.next(groups);
|
|
26203
|
-
});
|
|
26204
|
-
}
|
|
26205
|
-
ngOnDestroy() {
|
|
26206
|
-
this._groupSub.unsubscribe();
|
|
26207
|
-
this._activeGroups$.complete();
|
|
26208
|
-
}
|
|
26209
|
-
/**
|
|
26210
|
-
* In the default implementation this stream copies the values of the [memberGroups$]{@link NextGroupService#memberGroups$} stream
|
|
26211
|
-
* of the {@link NextGroupService}. Whenever the copies stream emits, the underlying stream in this class emits the same value.
|
|
26212
|
-
*
|
|
26213
|
-
* @returns an Observable of all the groups that are currently active
|
|
26214
|
-
*/
|
|
26215
|
-
get activeGroups$() {
|
|
26216
|
-
return this._activeGroups$.asObservable();
|
|
26217
|
-
}
|
|
26218
|
-
get activeGroups() {
|
|
26219
|
-
return this._activeGroups$.getValue();
|
|
26220
|
-
}
|
|
26221
|
-
set activeGroups(activeGroups) {
|
|
26222
|
-
this._activeGroups$.next(activeGroups);
|
|
26223
|
-
}
|
|
26224
|
-
/**
|
|
26225
|
-
* @returns an Observable containing the first element of the [activeGroups$]{@link ActiveGroupService#activeGroups$} observable,
|
|
26226
|
-
* or `undefined` if the contained array is empty
|
|
26227
|
-
*/
|
|
26228
|
-
get activeGroup$() {
|
|
26229
|
-
return this.activeGroups$.pipe(map(array => array.length > 0 ? array[0] : undefined));
|
|
26230
|
-
}
|
|
26231
|
-
/**
|
|
26232
|
-
* @returns the first element of the [activeGroups]{@link ActiveGroupService#activeGroups} array, or `undefined` if the array is empty
|
|
26233
|
-
*/
|
|
26234
|
-
get activeGroup() {
|
|
26235
|
-
const activeGroups = this.activeGroups;
|
|
26236
|
-
return activeGroups.length > 0 ? activeGroups[0] : undefined;
|
|
26237
|
-
}
|
|
26238
|
-
/**
|
|
26239
|
-
* Emits a new array into the [activeGroups$]{@link ActiveGroupService#activeGroups$} observable, that contains only
|
|
26240
|
-
* the provided {@link Case} object. If `undefined` is passed as argument, an empty array will be pushed into the observable.
|
|
26241
|
-
* @param activeGroup the new active group case reference
|
|
26242
|
-
*/
|
|
26243
|
-
set activeGroup(activeGroup) {
|
|
26244
|
-
if (activeGroup === undefined) {
|
|
26245
|
-
this._activeGroups$.next([]);
|
|
26246
|
-
}
|
|
26247
|
-
else {
|
|
26248
|
-
this._activeGroups$.next([activeGroup]);
|
|
26249
|
-
}
|
|
26250
|
-
}
|
|
26251
|
-
}
|
|
26252
|
-
ActiveGroupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ActiveGroupService, deps: [{ token: NextGroupService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
26253
|
-
ActiveGroupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ActiveGroupService, providedIn: 'root' });
|
|
26254
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ActiveGroupService, decorators: [{
|
|
26255
|
-
type: Injectable,
|
|
26256
|
-
args: [{
|
|
26257
|
-
providedIn: 'root'
|
|
26258
|
-
}]
|
|
26259
|
-
}], ctorParameters: function () { return [{ type: NextGroupService }]; } });
|
|
26260
|
-
|
|
26261
26399
|
class DynamicNavigationRouteProviderService {
|
|
26262
26400
|
constructor(_config) {
|
|
26263
26401
|
this._config = _config;
|
|
@@ -26298,10 +26436,8 @@ class AbstractNavigationTreeComponent extends AbstractNavigationResizableDrawerC
|
|
|
26298
26436
|
this._taskResourceService = _taskResourceService;
|
|
26299
26437
|
this._languageService = _languageService;
|
|
26300
26438
|
this._navigationRouteProvider = _navigationRouteProvider;
|
|
26301
|
-
this._groupNavNodesCount = 0;
|
|
26302
26439
|
this.treeControl = new NestedTreeControl(node => node.children);
|
|
26303
26440
|
this.dataSource = new MatTreeNestedDataSource();
|
|
26304
|
-
this._groupNavigationConfig = this._config.getConfigurationSubtree(['services', 'groupNavigation']);
|
|
26305
26441
|
this.dataSource.data = this.resolveNavigationNodes(_config.getConfigurationSubtree(['views']), '');
|
|
26306
26442
|
this.resolveLevels(this.dataSource.data);
|
|
26307
26443
|
this._reloadNavigation = new ReplaySubject(1);
|
|
@@ -26368,19 +26504,9 @@ class AbstractNavigationTreeComponent extends AbstractNavigationResizableDrawerC
|
|
|
26368
26504
|
if (!views || Object.keys(views).length === 0) {
|
|
26369
26505
|
return null;
|
|
26370
26506
|
}
|
|
26371
|
-
let groupNavigationGenerated = false;
|
|
26372
26507
|
const nodes = [];
|
|
26373
26508
|
Object.keys(views).forEach((viewKey) => {
|
|
26374
26509
|
const view = views[viewKey];
|
|
26375
|
-
if (!groupNavigationGenerated && this.isGroupNavigationNode(view)) {
|
|
26376
|
-
groupNavigationGenerated = true;
|
|
26377
|
-
const insertPosition = (ancestorNodeContainer !== null && ancestorNodeContainer !== void 0 ? ancestorNodeContainer : nodes).length;
|
|
26378
|
-
this._subLangChange = this._languageService.getLangChange$().subscribe(() => {
|
|
26379
|
-
this.loadGroupNavigationNodes(insertPosition, ancestorNodeContainer !== null && ancestorNodeContainer !== void 0 ? ancestorNodeContainer : nodes);
|
|
26380
|
-
});
|
|
26381
|
-
this.loadGroupNavigationNodes(insertPosition, ancestorNodeContainer !== null && ancestorNodeContainer !== void 0 ? ancestorNodeContainer : nodes);
|
|
26382
|
-
return; // continue
|
|
26383
|
-
}
|
|
26384
26510
|
if (!this.hasNavigation(view) && !this.hasSubRoutes(view)) {
|
|
26385
26511
|
return; // continue
|
|
26386
26512
|
}
|
|
@@ -26486,112 +26612,6 @@ class AbstractNavigationTreeComponent extends AbstractNavigationResizableDrawerC
|
|
|
26486
26612
|
}
|
|
26487
26613
|
this.resolveLevels(this.dataSource.data);
|
|
26488
26614
|
}
|
|
26489
|
-
/**
|
|
26490
|
-
* @returns `true` if the layout of the provided {@link View} node's name indicates it is a
|
|
26491
|
-
* [group navigation outlet]{@link GroupNavigationConstants#GROUP_NAVIGATION_OUTLET}. Returns `false` otherwise.
|
|
26492
|
-
*/
|
|
26493
|
-
isGroupNavigationNode(view) {
|
|
26494
|
-
var _a;
|
|
26495
|
-
return ((_a = view === null || view === void 0 ? void 0 : view.layout) === null || _a === void 0 ? void 0 : _a.name) === GroupNavigationConstants.GROUP_NAVIGATION_OUTLET;
|
|
26496
|
-
}
|
|
26497
|
-
/**
|
|
26498
|
-
* Forces a reload of the group navigation nodes.
|
|
26499
|
-
* @param insertPosition the position in the container where group navigation nodes reside
|
|
26500
|
-
* @param nodeContainer the node container that contains the group navigation nodes
|
|
26501
|
-
* (can be an inner node of the navigation tree or its root)
|
|
26502
|
-
*/
|
|
26503
|
-
loadGroupNavigationNodes(insertPosition, nodeContainer) {
|
|
26504
|
-
if (this._subGroupResolution !== undefined && !this._subGroupResolution.closed) {
|
|
26505
|
-
this._subGroupResolution.unsubscribe();
|
|
26506
|
-
}
|
|
26507
|
-
this._subGroupResolution = this.generateGroupNavigationNodes().pipe(take(1)).subscribe(groupNavNodes => {
|
|
26508
|
-
nodeContainer.splice(insertPosition, this._groupNavNodesCount, ...groupNavNodes);
|
|
26509
|
-
this._groupNavNodesCount = groupNavNodes.length;
|
|
26510
|
-
refreshTree(this.dataSource);
|
|
26511
|
-
});
|
|
26512
|
-
}
|
|
26513
|
-
generateGroupNavigationNodes() {
|
|
26514
|
-
return forkJoin(this._activeGroupService.activeGroups.map(groupCase => {
|
|
26515
|
-
return this._taskResourceService.searchTask(SimpleFilter.fromTaskQuery({
|
|
26516
|
-
case: { id: groupCase.stringId },
|
|
26517
|
-
transitionId: GroupNavigationConstants.NAVIGATION_CONFIG_TRANSITION_ID
|
|
26518
|
-
})).pipe(map(taskPage => {
|
|
26519
|
-
if (hasContent(taskPage)) {
|
|
26520
|
-
return this._taskResourceService.getData(taskPage.content[0].stringId);
|
|
26521
|
-
}
|
|
26522
|
-
else {
|
|
26523
|
-
this._log.error('Group navigation configuration task was not found.'
|
|
26524
|
-
+ ' Navigation for this group cannot be constructed.');
|
|
26525
|
-
return of([]);
|
|
26526
|
-
}
|
|
26527
|
-
}), concatMap(o => o));
|
|
26528
|
-
})).pipe(map((navigationConfigurations) => {
|
|
26529
|
-
const result = [];
|
|
26530
|
-
for (const navConfig of navigationConfigurations) {
|
|
26531
|
-
result.push(...this.convertDatagroupsToNavEntries(navConfig));
|
|
26532
|
-
}
|
|
26533
|
-
return result;
|
|
26534
|
-
}));
|
|
26535
|
-
}
|
|
26536
|
-
convertDatagroupsToNavEntries(navConfigDatagroups) {
|
|
26537
|
-
const result = [];
|
|
26538
|
-
const entryDataGroupIndices = [];
|
|
26539
|
-
navConfigDatagroups.forEach((group, index) => {
|
|
26540
|
-
if (group.fields.some(field => field.stringId === GroupNavigationConstants.NAVIGATION_ENTRY_MARKER_FIELD_ID_SUFFIX)) {
|
|
26541
|
-
entryDataGroupIndices.push(index);
|
|
26542
|
-
}
|
|
26543
|
-
});
|
|
26544
|
-
let navEntriesTaskRef;
|
|
26545
|
-
navConfigDatagroups.some(group => {
|
|
26546
|
-
const taskRef = getField(group.fields, GroupNavigationConstants.NAVIGATION_ENTRIES_TASK_REF_FIELD_ID);
|
|
26547
|
-
if (taskRef !== undefined) {
|
|
26548
|
-
navEntriesTaskRef = taskRef;
|
|
26549
|
-
}
|
|
26550
|
-
return !!taskRef;
|
|
26551
|
-
});
|
|
26552
|
-
if (!navEntriesTaskRef) {
|
|
26553
|
-
throw new Error('The navigation configuration task contains no task ref with entries. Navigation cannot be constructed');
|
|
26554
|
-
}
|
|
26555
|
-
for (let order = 0; order < navEntriesTaskRef.value.length; order++) {
|
|
26556
|
-
const index = entryDataGroupIndices[order];
|
|
26557
|
-
const label = extractIconAndTitle(navConfigDatagroups.slice(index, index + GroupNavigationConstants.DATAGROUPS_PER_NAVIGATION_ENTRY));
|
|
26558
|
-
const newNode = Object.assign({ url: '' }, label);
|
|
26559
|
-
const url = this._navigationRouteProvider.route;
|
|
26560
|
-
if (url === undefined) {
|
|
26561
|
-
this._log.error(`No URL is configured in nae.json for configurable group navigation. Dynamic navigation entry was ignored`);
|
|
26562
|
-
continue;
|
|
26563
|
-
}
|
|
26564
|
-
newNode.url = `/${url}/${navEntriesTaskRef.value[order]}`;
|
|
26565
|
-
const allowedRoles = extractRoles(navConfigDatagroups.slice(index, index + GroupNavigationConstants.DATAGROUPS_PER_NAVIGATION_ENTRY), GroupNavigationConstants.NAVIGATION_ENTRY_ALLOWED_ROLES_FIELD_ID_SUFFIX);
|
|
26566
|
-
const bannedRoles = extractRoles(navConfigDatagroups.slice(index, index + GroupNavigationConstants.DATAGROUPS_PER_NAVIGATION_ENTRY), GroupNavigationConstants.NAVIGATION_ENTRY_BANNED_ROLES_FIELD_ID_SUFFIX);
|
|
26567
|
-
const splitAllowedRoles = this.extractRoleAndNetId(allowedRoles);
|
|
26568
|
-
const splitBannedRoles = this.extractRoleAndNetId(bannedRoles);
|
|
26569
|
-
if ((splitAllowedRoles.length === 0
|
|
26570
|
-
|| splitAllowedRoles.some(idPair => this._userService.hasRoleByIdentifier(idPair[0], idPair[1])))
|
|
26571
|
-
&& !splitBannedRoles.some(idPair => this._userService.hasRoleByIdentifier(idPair[0], idPair[1]))) {
|
|
26572
|
-
result.push(newNode);
|
|
26573
|
-
}
|
|
26574
|
-
}
|
|
26575
|
-
return result;
|
|
26576
|
-
}
|
|
26577
|
-
/**
|
|
26578
|
-
* Splits the provided strings on the ':' character and returns an array of the resulting splits.
|
|
26579
|
-
*
|
|
26580
|
-
* If any of the input strings split into fewer or more than 2 strings an error is thrown.
|
|
26581
|
-
*
|
|
26582
|
-
* @param joined a list of strings in the form `<role identifier>:<net identifier>`
|
|
26583
|
-
*/
|
|
26584
|
-
extractRoleAndNetId(joined) {
|
|
26585
|
-
const split = [];
|
|
26586
|
-
for (const pair of joined) {
|
|
26587
|
-
const splitPair = pair.split(':');
|
|
26588
|
-
if (splitPair.length !== 2) {
|
|
26589
|
-
throw new Error(`The role-net pair '${pair}' has invalid format! Cannot extract role and net identifiers.`);
|
|
26590
|
-
}
|
|
26591
|
-
split.push(splitPair);
|
|
26592
|
-
}
|
|
26593
|
-
return split;
|
|
26594
|
-
}
|
|
26595
26615
|
}
|
|
26596
26616
|
AbstractNavigationTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationTreeComponent, deps: [{ token: ConfigurationService }, { token: i2$3.Router }, { token: LoggerService }, { token: UserService }, { token: AccessService }, { token: ActiveGroupService }, { token: TaskResourceService }, { token: LanguageService }, { token: DynamicNavigationRouteProviderService }], target: i0.ɵɵFactoryTarget.Component });
|
|
26597
26617
|
AbstractNavigationTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractNavigationTreeComponent, selector: "ncc-abstract-navigation-tree", inputs: { viewPath: "viewPath", parentUrl: "parentUrl", routerChange: "routerChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
@@ -26752,640 +26772,145 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
26752
26772
|
type: Input
|
|
26753
26773
|
}] } });
|
|
26754
26774
|
|
|
26755
|
-
|
|
26756
|
-
|
|
26757
|
-
this.className = className;
|
|
26758
|
-
this.fileImportPath = fileImportPath;
|
|
26759
|
-
}
|
|
26760
|
-
}
|
|
26761
|
-
|
|
26762
|
-
/**
|
|
26763
|
-
* @license
|
|
26764
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
26765
|
-
*
|
|
26766
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
26767
|
-
* found in the LICENSE file at https://angular.io/license
|
|
26768
|
-
*
|
|
26769
|
-
* File copied from: angular_devkit/core/src/utils/strings.ts
|
|
26770
|
-
*/
|
|
26771
|
-
const STRING_DASHERIZE_REGEXP = (/[ _]/g);
|
|
26772
|
-
const STRING_DECAMELIZE_REGEXP = (/([a-z\d])([A-Z])/g);
|
|
26773
|
-
const STRING_CAMELIZE_REGEXP = (/(-|_|\.|\s)+(.)?/g);
|
|
26774
|
-
const STRING_UNDERSCORE_REGEXP_1 = (/([a-z\d])([A-Z]+)/g);
|
|
26775
|
-
const STRING_UNDERSCORE_REGEXP_2 = (/-|\s+/g);
|
|
26776
|
-
/**
|
|
26777
|
-
* Converts a camelized string into all lower case separated by underscores.
|
|
26778
|
-
*
|
|
26779
|
-
* ```javascript
|
|
26780
|
-
* decamelize('innerHTML'); // 'inner_html'
|
|
26781
|
-
* decamelize('action_name'); // 'action_name'
|
|
26782
|
-
* decamelize('css-class-name'); // 'css-class-name'
|
|
26783
|
-
* decamelize('my favorite items'); // 'my favorite items'
|
|
26784
|
-
* ```
|
|
26785
|
-
* @method decamelize
|
|
26786
|
-
* @param str The string to decamelize.
|
|
26787
|
-
* @return the decamelized string.
|
|
26788
|
-
*/
|
|
26789
|
-
function decamelize(str) {
|
|
26790
|
-
return str.replace(STRING_DECAMELIZE_REGEXP, '$1_$2').toLowerCase();
|
|
26791
|
-
}
|
|
26792
|
-
/**
|
|
26793
|
-
* Replaces underscores, spaces, or camelCase with dashes.
|
|
26794
|
-
* ```javascript
|
|
26795
|
-
* dasherize('innerHTML'); // 'inner-html'
|
|
26796
|
-
* dasherize('action_name'); // 'action-name'
|
|
26797
|
-
* dasherize('css-class-name'); // 'css-class-name'
|
|
26798
|
-
* dasherize('my favorite items'); // 'my-favorite-items'
|
|
26799
|
-
* ```
|
|
26800
|
-
* @method dasherize
|
|
26801
|
-
* @param str The string to dasherize.
|
|
26802
|
-
* @return the dasherized string.
|
|
26803
|
-
*/
|
|
26804
|
-
function dasherize(str) {
|
|
26805
|
-
return decamelize(str).replace(STRING_DASHERIZE_REGEXP, '-');
|
|
26806
|
-
}
|
|
26807
|
-
/**
|
|
26808
|
-
* Returns the lowerCamelCase form of a string.
|
|
26809
|
-
* ```javascript
|
|
26810
|
-
* camelize('innerHTML'); // 'innerHTML'
|
|
26811
|
-
* camelize('action_name'); // 'actionName'
|
|
26812
|
-
* camelize('css-class-name'); // 'cssClassName'
|
|
26813
|
-
* camelize('my favorite items'); // 'myFavoriteItems'
|
|
26814
|
-
* camelize('My Favorite Items'); // 'myFavoriteItems'
|
|
26815
|
-
* ```
|
|
26816
|
-
* @method camelize
|
|
26817
|
-
* @param str The string to camelize.
|
|
26818
|
-
* @return the camelized string.
|
|
26819
|
-
*/
|
|
26820
|
-
function camelize(str) {
|
|
26821
|
-
return str
|
|
26822
|
-
.replace(STRING_CAMELIZE_REGEXP, (_match, _separator, chr) => {
|
|
26823
|
-
return chr ? chr.toUpperCase() : '';
|
|
26824
|
-
})
|
|
26825
|
-
.replace(/^([A-Z])/, (match) => match.toLowerCase());
|
|
26826
|
-
}
|
|
26827
|
-
/**
|
|
26828
|
-
* Returns the UpperCamelCase form of a string.
|
|
26829
|
-
* ```javascript
|
|
26830
|
-
* 'innerHTML'.classify(); // 'InnerHTML'
|
|
26831
|
-
* 'action_name'.classify(); // 'ActionName'
|
|
26832
|
-
* 'css-class-name'.classify(); // 'CssClassName'
|
|
26833
|
-
* 'my favorite items'.classify(); // 'MyFavoriteItems'
|
|
26834
|
-
* ```
|
|
26835
|
-
* @method classify
|
|
26836
|
-
* @param str the string to classify
|
|
26837
|
-
* @return the classified string
|
|
26838
|
-
*/
|
|
26839
|
-
function classify(str) {
|
|
26840
|
-
return str.split('.').map(part => capitalize(camelize(part))).join('.');
|
|
26841
|
-
}
|
|
26842
|
-
/**
|
|
26843
|
-
* More general than decamelize. Returns the lower\_case\_and\_underscored
|
|
26844
|
-
* form of a string.
|
|
26845
|
-
* ```javascript
|
|
26846
|
-
* 'innerHTML'.underscore(); // 'inner_html'
|
|
26847
|
-
* 'action_name'.underscore(); // 'action_name'
|
|
26848
|
-
* 'css-class-name'.underscore(); // 'css_class_name'
|
|
26849
|
-
* 'my favorite items'.underscore(); // 'my_favorite_items'
|
|
26850
|
-
* ```
|
|
26851
|
-
* @method underscore
|
|
26852
|
-
* @param str The string to underscore.
|
|
26853
|
-
* @return the underscored string.
|
|
26854
|
-
*/
|
|
26855
|
-
function underscore(str) {
|
|
26856
|
-
return str
|
|
26857
|
-
.replace(STRING_UNDERSCORE_REGEXP_1, '$1_$2')
|
|
26858
|
-
.replace(STRING_UNDERSCORE_REGEXP_2, '_')
|
|
26859
|
-
.toLowerCase();
|
|
26860
|
-
}
|
|
26861
|
-
/**
|
|
26862
|
-
* Returns the Capitalized form of a string
|
|
26863
|
-
* ```javascript
|
|
26864
|
-
* 'innerHTML'.capitalize() // 'InnerHTML'
|
|
26865
|
-
* 'action_name'.capitalize() // 'Action_name'
|
|
26866
|
-
* 'css-class-name'.capitalize() // 'Css-class-name'
|
|
26867
|
-
* 'my favorite items'.capitalize() // 'My favorite items'
|
|
26868
|
-
* ```
|
|
26869
|
-
* @method capitalize
|
|
26870
|
-
* @param str The string to capitalize.
|
|
26871
|
-
* @return The capitalized string.
|
|
26872
|
-
*/
|
|
26873
|
-
function capitalize(str) {
|
|
26874
|
-
return str.charAt(0).toUpperCase() + str.substr(1);
|
|
26875
|
-
}
|
|
26876
|
-
/**
|
|
26877
|
-
* Calculate the levenshtein distance of two strings.
|
|
26878
|
-
* See https://en.wikipedia.org/wiki/Levenshtein_distance.
|
|
26879
|
-
* Based off https://gist.github.com/andrei-m/982927 (for using the faster dynamic programming
|
|
26880
|
-
* version).
|
|
26881
|
-
*
|
|
26882
|
-
* @param a String a.
|
|
26883
|
-
* @param b String b.
|
|
26884
|
-
* @returns A number that represents the distance between the two strings. The greater the number
|
|
26885
|
-
* the more distant the strings are from each others.
|
|
26886
|
-
*/
|
|
26887
|
-
function levenshtein(a, b) {
|
|
26888
|
-
if (a.length === 0) {
|
|
26889
|
-
return b.length;
|
|
26890
|
-
}
|
|
26891
|
-
if (b.length === 0) {
|
|
26892
|
-
return a.length;
|
|
26893
|
-
}
|
|
26894
|
-
const matrix = [];
|
|
26895
|
-
// increment along the first column of each row
|
|
26896
|
-
for (let i = 0; i <= b.length; i++) {
|
|
26897
|
-
matrix[i] = [i];
|
|
26898
|
-
}
|
|
26899
|
-
// increment each column in the first row
|
|
26900
|
-
for (let j = 0; j <= a.length; j++) {
|
|
26901
|
-
matrix[0][j] = j;
|
|
26902
|
-
}
|
|
26903
|
-
// Fill in the rest of the matrix
|
|
26904
|
-
for (let i = 1; i <= b.length; i++) {
|
|
26905
|
-
for (let j = 1; j <= a.length; j++) {
|
|
26906
|
-
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
|
26907
|
-
matrix[i][j] = matrix[i - 1][j - 1];
|
|
26908
|
-
}
|
|
26909
|
-
else {
|
|
26910
|
-
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
|
|
26911
|
-
matrix[i][j - 1] + 1, // insertion
|
|
26912
|
-
matrix[i - 1][j] + 1);
|
|
26913
|
-
}
|
|
26914
|
-
}
|
|
26915
|
-
}
|
|
26916
|
-
return matrix[b.length][a.length];
|
|
26917
|
-
}
|
|
26918
|
-
|
|
26919
|
-
class ViewClassInfo extends ImportToAdd {
|
|
26920
|
-
constructor(path, viewType, customComponentName) {
|
|
26921
|
-
super('', '');
|
|
26922
|
-
if (!customComponentName) {
|
|
26923
|
-
this.prefix = ViewClassInfo.convertPathToClassNamePrefix(path);
|
|
26924
|
-
const classSuffix = ViewClassInfo.resolveClassSuffixForView(viewType);
|
|
26925
|
-
this.nameWithoutComponent = `${classify(this.prefix)}${classSuffix}`;
|
|
26926
|
-
this.fileImportPath = `./views/${path}/${this.prefix}-${dasherize(classSuffix)}.component`;
|
|
26927
|
-
}
|
|
26928
|
-
else {
|
|
26929
|
-
this.prefix = '';
|
|
26930
|
-
this.nameWithoutComponent = classify(customComponentName);
|
|
26931
|
-
this.fileImportPath = `./views/${path}/${dasherize(customComponentName)}.component`;
|
|
26932
|
-
}
|
|
26933
|
-
this.className = `${this.nameWithoutComponent}Component`;
|
|
26934
|
-
}
|
|
26935
|
-
static convertPathToClassNamePrefix(path) {
|
|
26936
|
-
const regexDash = /-/g;
|
|
26937
|
-
return path.replace(regexDash, '_').replace(/\//g, '-').toLocaleLowerCase();
|
|
26938
|
-
}
|
|
26939
|
-
static resolveClassSuffixForView(view) {
|
|
26940
|
-
switch (view) {
|
|
26941
|
-
case 'login':
|
|
26942
|
-
return 'Login';
|
|
26943
|
-
case 'tabView':
|
|
26944
|
-
return 'TabView';
|
|
26945
|
-
case 'taskView':
|
|
26946
|
-
return 'TaskView';
|
|
26947
|
-
case 'caseView':
|
|
26948
|
-
return 'CaseView';
|
|
26949
|
-
case 'emptyView':
|
|
26950
|
-
return 'EmptyView';
|
|
26951
|
-
case 'sidenavView':
|
|
26952
|
-
return 'SidenavView';
|
|
26953
|
-
case 'doubleDrawerView':
|
|
26954
|
-
return 'DoubleDrawerView';
|
|
26955
|
-
case 'toolbarView':
|
|
26956
|
-
return 'ToolbarView';
|
|
26957
|
-
case 'sidenavAndToolbarView':
|
|
26958
|
-
return 'SidenavAndToolbarView';
|
|
26959
|
-
case 'groupView':
|
|
26960
|
-
return 'GroupView';
|
|
26961
|
-
case 'dashboard':
|
|
26962
|
-
return 'Dashboard';
|
|
26963
|
-
case 'treeCaseView':
|
|
26964
|
-
return 'TreeCaseView';
|
|
26965
|
-
case 'workflowView':
|
|
26966
|
-
return 'WorkflowView';
|
|
26967
|
-
case 'roleAssignmentView':
|
|
26968
|
-
return 'RoleAssignmentView';
|
|
26969
|
-
case 'ldapRoleAssignmentView':
|
|
26970
|
-
return 'LdapRoleAssignmentView';
|
|
26971
|
-
default:
|
|
26972
|
-
throw new Error(`Unknown view type '${view}'`);
|
|
26973
|
-
}
|
|
26974
|
-
}
|
|
26975
|
-
}
|
|
26976
|
-
|
|
26977
|
-
/**
|
|
26978
|
-
* Holds component for dynamic routing resolution of group navigation component resolver component by the {@link RoutingBuilderService}.
|
|
26979
|
-
*/
|
|
26980
|
-
const NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT = new InjectionToken('NaeGroupNavigationComponentResolverComponent');
|
|
26981
|
-
|
|
26982
|
-
const NAE_ROUTING_CONFIGURATION_PATH = "configPath";
|
|
26983
|
-
/**
|
|
26984
|
-
* Uses the information from nae.json to construct the application's routing
|
|
26985
|
-
*/
|
|
26986
|
-
class RoutingBuilderService {
|
|
26987
|
-
constructor(router, _configService, _viewService, _logger, _dynamicNavigationRouteService, _groupNavigationComponentResolverComponent) {
|
|
26988
|
-
this._configService = _configService;
|
|
26989
|
-
this._viewService = _viewService;
|
|
26990
|
-
this._logger = _logger;
|
|
26991
|
-
this._dynamicNavigationRouteService = _dynamicNavigationRouteService;
|
|
26992
|
-
this._groupNavigationComponentResolverComponent = _groupNavigationComponentResolverComponent;
|
|
26993
|
-
this._groupNavigationRouteGenerated = false;
|
|
26994
|
-
router.relativeLinkResolution = 'legacy';
|
|
26995
|
-
router.config.splice(0, router.config.length);
|
|
26996
|
-
for (const [pathSegment, view] of Object.entries(_configService.get().views)) {
|
|
26997
|
-
const route = this.constructRouteObject(view, pathSegment);
|
|
26998
|
-
if (route !== undefined) {
|
|
26999
|
-
router.config.push(route);
|
|
27000
|
-
}
|
|
27001
|
-
}
|
|
27002
|
-
router.config.push(...this.defaultRoutesRedirects());
|
|
27003
|
-
}
|
|
27004
|
-
constructRouteObject(view, configPath, ancestors = []) {
|
|
27005
|
-
var _a, _b;
|
|
27006
|
-
const component = this.resolveComponentClass(view, configPath);
|
|
27007
|
-
if (component === undefined) {
|
|
27008
|
-
return undefined;
|
|
27009
|
-
}
|
|
27010
|
-
if (!view.routing) {
|
|
27011
|
-
this._logger.warn(`nae.json configuration is invalid. View at path '${configPath}'` +
|
|
27012
|
-
` must define a 'routing' attribute. Skipping this view for routing generation.`);
|
|
27013
|
-
return undefined;
|
|
27014
|
-
}
|
|
27015
|
-
const route = {
|
|
27016
|
-
path: view.routing.path,
|
|
27017
|
-
data: {
|
|
27018
|
-
[NAE_ROUTING_CONFIGURATION_PATH]: configPath
|
|
27019
|
-
},
|
|
27020
|
-
component
|
|
27021
|
-
};
|
|
27022
|
-
if (((_a = view === null || view === void 0 ? void 0 : view.layout) === null || _a === void 0 ? void 0 : _a.name) === GroupNavigationConstants.GROUP_NAVIGATION_OUTLET) {
|
|
27023
|
-
if (this._groupNavigationRouteGenerated) {
|
|
27024
|
-
this._logger.warn(`Multiple groupNavigationOutlets are present in nae.json. Duplicate entry found at path ${configPath}`);
|
|
27025
|
-
}
|
|
27026
|
-
else {
|
|
27027
|
-
this._logger.debug(`GroupNavigationOutlet found in nae.json at path '${configPath}'`);
|
|
27028
|
-
}
|
|
27029
|
-
const pathNoParams = route.path;
|
|
27030
|
-
route.path = `${pathNoParams}/:${GroupNavigationConstants.GROUP_NAVIGATION_ROUTER_PARAM}`;
|
|
27031
|
-
route.canActivate = [AuthenticationGuardService];
|
|
27032
|
-
const parentPathSegments = ancestors.map(a => a.path);
|
|
27033
|
-
parentPathSegments.push(pathNoParams);
|
|
27034
|
-
this._dynamicNavigationRouteService.route = parentPathSegments.join('/');
|
|
27035
|
-
this._groupNavigationRouteGenerated = true;
|
|
27036
|
-
return route;
|
|
27037
|
-
}
|
|
27038
|
-
if (view.routing.match !== undefined && view.routing.match) {
|
|
27039
|
-
route['pathMatch'] = 'full';
|
|
27040
|
-
}
|
|
27041
|
-
route['canActivate'] = [];
|
|
27042
|
-
if (view.access === 'private'
|
|
27043
|
-
|| view.access.hasOwnProperty('role')
|
|
27044
|
-
|| view.access.hasOwnProperty('group')
|
|
27045
|
-
|| view.access.hasOwnProperty('authority')) {
|
|
27046
|
-
route['canActivate'].push(AuthenticationGuardService);
|
|
27047
|
-
}
|
|
27048
|
-
if (view.access.hasOwnProperty('role')) {
|
|
27049
|
-
route['canActivate'].push(RoleGuardService);
|
|
27050
|
-
}
|
|
27051
|
-
if (view.access.hasOwnProperty('authority')) {
|
|
27052
|
-
route['canActivate'].push(AuthorityGuardService);
|
|
27053
|
-
}
|
|
27054
|
-
if (view.access.hasOwnProperty('group')) {
|
|
27055
|
-
route['canActivate'].push(GroupGuardService);
|
|
27056
|
-
}
|
|
27057
|
-
if (!!view.children) {
|
|
27058
|
-
route['children'] = [];
|
|
27059
|
-
Object.entries(view.children).forEach(([configPathSegment, childView]) => {
|
|
27060
|
-
// TODO check if routes are constructed correctly regarding empty route segments
|
|
27061
|
-
const childRoute = this.constructRouteObject(childView, `${configPath}/${configPathSegment}`, [...ancestors, route]);
|
|
27062
|
-
if (childRoute !== undefined) {
|
|
27063
|
-
route['children'].push(childRoute);
|
|
27064
|
-
}
|
|
27065
|
-
});
|
|
27066
|
-
}
|
|
27067
|
-
if (((_b = view === null || view === void 0 ? void 0 : view.layout) === null || _b === void 0 ? void 0 : _b.name) === 'tabView') {
|
|
27068
|
-
if (!view.children) {
|
|
27069
|
-
route['children'] = [];
|
|
27070
|
-
}
|
|
27071
|
-
route['children'].push({
|
|
27072
|
-
path: '**',
|
|
27073
|
-
component
|
|
27074
|
-
});
|
|
27075
|
-
}
|
|
27076
|
-
return route;
|
|
27077
|
-
}
|
|
27078
|
-
resolveComponentClass(view, configPath) {
|
|
27079
|
-
let result;
|
|
27080
|
-
if (!!view.component) {
|
|
27081
|
-
result = this._viewService.resolveNameToClass(view.component.class);
|
|
27082
|
-
}
|
|
27083
|
-
else if (!!view.layout) {
|
|
27084
|
-
result = this.resolveComponentClassFromLayout(view, configPath);
|
|
27085
|
-
}
|
|
27086
|
-
else {
|
|
27087
|
-
this._logger.warn(`nae.json configuration is invalid. View at path '${configPath}'` +
|
|
27088
|
-
` must define either a 'layout' or a 'component' attribute. Skipping this view for routing generation.`);
|
|
27089
|
-
return undefined;
|
|
27090
|
-
}
|
|
27091
|
-
if (result === undefined) {
|
|
27092
|
-
this._logger.warn(`Some views from nae.json configuration have not been created in the project.` +
|
|
27093
|
-
` Run create-view schematic to rectify this. Skipping this view for routing generation.`);
|
|
27094
|
-
return undefined;
|
|
27095
|
-
}
|
|
27096
|
-
return result;
|
|
27097
|
-
}
|
|
27098
|
-
resolveComponentClassFromLayout(view, configPath) {
|
|
27099
|
-
if (view.layout.name === GroupNavigationConstants.GROUP_NAVIGATION_OUTLET) {
|
|
27100
|
-
return this._groupNavigationComponentResolverComponent;
|
|
27101
|
-
}
|
|
27102
|
-
let className;
|
|
27103
|
-
if (!!view.layout.componentName) {
|
|
27104
|
-
className = `${classify(view.layout.componentName)}Component`;
|
|
27105
|
-
}
|
|
27106
|
-
else {
|
|
27107
|
-
const classInfo = new ViewClassInfo(configPath, view.layout.name, view.layout.componentName);
|
|
27108
|
-
className = classInfo.className;
|
|
27109
|
-
}
|
|
27110
|
-
return this._viewService.resolveNameToClass(className);
|
|
27111
|
-
}
|
|
27112
|
-
defaultRoutesRedirects() {
|
|
27113
|
-
const result = [];
|
|
27114
|
-
const servicesConfig = this._configService.getServicesConfiguration();
|
|
27115
|
-
if (!!servicesConfig && !!servicesConfig.routing) {
|
|
27116
|
-
if (!!servicesConfig.routing.defaultRedirect) {
|
|
27117
|
-
result.push({
|
|
27118
|
-
path: '',
|
|
27119
|
-
redirectTo: servicesConfig.routing.defaultRedirect,
|
|
27120
|
-
pathMatch: 'full'
|
|
27121
|
-
});
|
|
27122
|
-
}
|
|
27123
|
-
if (!!servicesConfig.routing.wildcardRedirect) {
|
|
27124
|
-
result.push({
|
|
27125
|
-
path: '**',
|
|
27126
|
-
redirectTo: servicesConfig.routing.wildcardRedirect
|
|
27127
|
-
});
|
|
27128
|
-
}
|
|
27129
|
-
}
|
|
27130
|
-
return result;
|
|
27131
|
-
}
|
|
27132
|
-
}
|
|
27133
|
-
RoutingBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, deps: [{ token: i2$3.Router }, { token: ConfigurationService }, { token: ViewService }, { token: LoggerService }, { token: DynamicNavigationRouteProviderService }, { token: NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
27134
|
-
RoutingBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, providedIn: 'root' });
|
|
27135
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, decorators: [{
|
|
27136
|
-
type: Injectable,
|
|
27137
|
-
args: [{
|
|
27138
|
-
providedIn: 'root'
|
|
27139
|
-
}]
|
|
27140
|
-
}], ctorParameters: function () {
|
|
27141
|
-
return [{ type: i2$3.Router }, { type: ConfigurationService }, { type: ViewService }, { type: LoggerService }, { type: DynamicNavigationRouteProviderService }, { type: i0.Type, decorators: [{
|
|
27142
|
-
type: Optional
|
|
27143
|
-
}, {
|
|
27144
|
-
type: Inject,
|
|
27145
|
-
args: [NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT]
|
|
27146
|
-
}] }];
|
|
27147
|
-
} });
|
|
27148
|
-
|
|
27149
|
-
/**
|
|
27150
|
-
* Case search request page size
|
|
27151
|
-
*/
|
|
27152
|
-
const NAE_URI_NODE_CASES_PAGE_SIZE = new InjectionToken('NaeUriNodeCasesPageSize');
|
|
27153
|
-
|
|
27154
|
-
/**
|
|
27155
|
-
* Service for accessing backend resource to resolve URI objects
|
|
27156
|
-
* */
|
|
27157
|
-
class UriResourceService extends AbstractResourceService {
|
|
27158
|
-
constructor(provider, configService) {
|
|
27159
|
-
super('petrinet', provider, configService);
|
|
27160
|
-
}
|
|
27161
|
-
getRoot() {
|
|
27162
|
-
return this._resourceProvider.get$('uri/root', this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNode')));
|
|
27163
|
-
}
|
|
27164
|
-
getByLevel(level) {
|
|
27165
|
-
return this._resourceProvider.get$('uri/level/' + level, this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNodes')));
|
|
27166
|
-
}
|
|
27167
|
-
getNodesByParent(parentId) {
|
|
27168
|
-
return this._resourceProvider.get$('uri/parent/' + parentId, this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNodes')));
|
|
27169
|
-
}
|
|
27170
|
-
getNodeByUri(uriPath) {
|
|
27171
|
-
return this._resourceProvider.get$('uri/' + btoa(uriPath), this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNode')));
|
|
27172
|
-
}
|
|
27173
|
-
}
|
|
27174
|
-
UriResourceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UriResourceService, deps: [{ token: ResourceProvider }, { token: ConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
27175
|
-
UriResourceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UriResourceService, providedIn: 'root' });
|
|
27176
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UriResourceService, decorators: [{
|
|
27177
|
-
type: Injectable,
|
|
27178
|
-
args: [{
|
|
27179
|
-
providedIn: 'root'
|
|
27180
|
-
}]
|
|
27181
|
-
}], ctorParameters: function () { return [{ type: ResourceProvider }, { type: ConfigurationService }]; } });
|
|
27182
|
-
|
|
27183
|
-
/**
|
|
27184
|
-
* Service for managing URIs
|
|
27185
|
-
* */
|
|
27186
|
-
class UriService {
|
|
27187
|
-
constructor(_logger, _resourceService, _caseResourceService, _activeGroupService, pageSize) {
|
|
27188
|
-
this._logger = _logger;
|
|
27189
|
-
this._resourceService = _resourceService;
|
|
27190
|
-
this._caseResourceService = _caseResourceService;
|
|
27191
|
-
this._activeGroupService = _activeGroupService;
|
|
27192
|
-
this.pageSize = pageSize;
|
|
27193
|
-
if (!pageSize) {
|
|
27194
|
-
this.pageSize = 20;
|
|
27195
|
-
}
|
|
27196
|
-
if (typeof this.pageSize === 'string') {
|
|
27197
|
-
this.pageSize = parseInt(this.pageSize);
|
|
27198
|
-
}
|
|
27199
|
-
this._rootLoading$ = new LoadingEmitter();
|
|
27200
|
-
this._parentLoading$ = new LoadingEmitter();
|
|
27201
|
-
this._activeNode$ = new BehaviorSubject(undefined);
|
|
27202
|
-
this.loadRoot();
|
|
27203
|
-
}
|
|
27204
|
-
ngOnDestroy() {
|
|
27205
|
-
this._rootLoading$.complete();
|
|
27206
|
-
this._parentLoading$.complete();
|
|
27207
|
-
this._activeNode$.complete();
|
|
27208
|
-
}
|
|
27209
|
-
get root() {
|
|
27210
|
-
return this._rootNode;
|
|
27211
|
-
}
|
|
27212
|
-
get rootLoaded$() {
|
|
27213
|
-
return this._rootLoading$;
|
|
27214
|
-
}
|
|
27215
|
-
isRoot(node) {
|
|
27216
|
-
return node.id === this._rootNode.id && node.uriPath === this._rootNode.uriPath;
|
|
27217
|
-
}
|
|
27218
|
-
get activeNode() {
|
|
27219
|
-
return this._activeNode$.getValue();
|
|
27220
|
-
}
|
|
27221
|
-
set activeNode(node) {
|
|
27222
|
-
if (node.parentId && !node.parent) {
|
|
27223
|
-
if (node.parentId === this._rootNode.id) {
|
|
27224
|
-
node.parent = this._rootNode;
|
|
27225
|
-
}
|
|
27226
|
-
else {
|
|
27227
|
-
this._parentLoading$.on();
|
|
27228
|
-
this.getNodeByPath(this.resolveParentPath(node)).subscribe(n => {
|
|
27229
|
-
node.parent = !n ? this._rootNode : n;
|
|
27230
|
-
this._parentLoading$.off();
|
|
27231
|
-
}, error => {
|
|
27232
|
-
this._logger.error(error);
|
|
27233
|
-
this._parentLoading$.off();
|
|
27234
|
-
});
|
|
27235
|
-
}
|
|
27236
|
-
}
|
|
27237
|
-
this._activeNode$.next(node);
|
|
27238
|
-
}
|
|
27239
|
-
get activeNode$() {
|
|
27240
|
-
return this._activeNode$;
|
|
27241
|
-
}
|
|
27242
|
-
get parentNodeLoading$() {
|
|
27243
|
-
return this._parentLoading$;
|
|
27244
|
-
}
|
|
27245
|
-
/**
|
|
27246
|
-
* Loads root ID into variable.
|
|
27247
|
-
* When root node is loaded and active node is not set yet the root node is set as active node
|
|
27248
|
-
* */
|
|
27249
|
-
loadRoot() {
|
|
27250
|
-
this._rootLoading$.on();
|
|
27251
|
-
this._resourceService.getRoot().subscribe(node => {
|
|
27252
|
-
if (!!node) {
|
|
27253
|
-
this._rootNode = node;
|
|
27254
|
-
if (!this.activeNode) {
|
|
27255
|
-
this.activeNode = this._rootNode;
|
|
27256
|
-
}
|
|
27257
|
-
}
|
|
27258
|
-
this._rootLoading$.off();
|
|
27259
|
-
}, error => {
|
|
27260
|
-
this._logger.error(error);
|
|
27261
|
-
this._rootLoading$.off();
|
|
27262
|
-
});
|
|
27263
|
-
}
|
|
27264
|
-
reset() {
|
|
27265
|
-
this.activeNode = this._rootNode;
|
|
27266
|
-
return this._rootNode;
|
|
27267
|
-
}
|
|
26775
|
+
var GroupNavigationConstants;
|
|
26776
|
+
(function (GroupNavigationConstants) {
|
|
27268
26777
|
/**
|
|
27269
|
-
*
|
|
27270
|
-
* @param path
|
|
26778
|
+
* Name of the component that indicates the position of the group specific navigation elements.
|
|
27271
26779
|
*/
|
|
27272
|
-
|
|
27273
|
-
return this._resourceService.getNodeByUri(path).pipe(map(n => this.capitalizeName(n)));
|
|
27274
|
-
}
|
|
26780
|
+
GroupNavigationConstants["GROUP_NAVIGATION_OUTLET"] = "groupNavigation";
|
|
27275
26781
|
/**
|
|
27276
|
-
*
|
|
27277
|
-
* @param node parent node
|
|
26782
|
+
* Name of the router param that is used to provide information about the selected filter to the group navigation view component
|
|
27278
26783
|
*/
|
|
27279
|
-
|
|
27280
|
-
if (!node)
|
|
27281
|
-
node = this.activeNode;
|
|
27282
|
-
return this._resourceService.getNodesByParent(node.id).pipe(map(nodes => {
|
|
27283
|
-
this.capitalizeNames(nodes);
|
|
27284
|
-
return nodes;
|
|
27285
|
-
}));
|
|
27286
|
-
}
|
|
26784
|
+
GroupNavigationConstants["GROUP_NAVIGATION_ROUTER_PARAM"] = "filterCaseId";
|
|
27287
26785
|
/**
|
|
27288
|
-
*
|
|
27289
|
-
* @param node parent node of cases
|
|
27290
|
-
* @param processIdentifiers optional search filter for process identifier to get only cases from the process
|
|
27291
|
-
* @param pageNumber optional parameter for load page on the index. Default value is 0 (the first page).
|
|
27292
|
-
* @param pageSize optional parameter for loaded page size. Defaults to value of injection token URI_NODE_CASES_PAGE_SIZE or to value "20".
|
|
26786
|
+
* Field id, that contains the tab name of the navigation item.
|
|
27293
26787
|
*/
|
|
27294
|
-
|
|
27295
|
-
if (!node)
|
|
27296
|
-
node = this.activeNode;
|
|
27297
|
-
const searchBody = {
|
|
27298
|
-
uriNodeId: node.id,
|
|
27299
|
-
};
|
|
27300
|
-
if (!!processIdentifiers) {
|
|
27301
|
-
searchBody.process = processIdentifiers.map(id => ({ identifier: id }));
|
|
27302
|
-
}
|
|
27303
|
-
// TODO active group is broken a given the wrong id
|
|
27304
|
-
// if (!!this._activeGroupService.activeGroup) {
|
|
27305
|
-
// searchBody.data = {};
|
|
27306
|
-
// searchBody.data['parentId'] = this._activeGroupService.activeGroup.stringId;
|
|
27307
|
-
// }
|
|
27308
|
-
let httpParams = new HttpParams()
|
|
27309
|
-
.set(PaginationParams.PAGE_SIZE, pageSize)
|
|
27310
|
-
.set(PaginationParams.PAGE_NUMBER, pageNumber);
|
|
27311
|
-
return this._caseResourceService.searchCases(SimpleFilter.fromCaseQuery(searchBody), httpParams);
|
|
27312
|
-
}
|
|
26788
|
+
GroupNavigationConstants["NAVIGATION_ENTRY_TITLE_FIELD_ID_SUFFIX"] = "tab_name";
|
|
27313
26789
|
/**
|
|
27314
|
-
*
|
|
27315
|
-
* @param node siblings node
|
|
26790
|
+
* Boolean field id, that determines if the navigation defines a tab icon.
|
|
27316
26791
|
*/
|
|
27317
|
-
|
|
27318
|
-
if (!node)
|
|
27319
|
-
node = this.activeNode;
|
|
27320
|
-
return this._resourceService.getNodesByParent(node.parentId).pipe(map(nodes => {
|
|
27321
|
-
this.capitalizeNames(nodes);
|
|
27322
|
-
return nodes;
|
|
27323
|
-
}));
|
|
27324
|
-
}
|
|
26792
|
+
GroupNavigationConstants["NAVIGATION_ENTRY_ICON_ENABLED_FIELD_ID_SUFFIX"] = "use_tab_icon";
|
|
27325
26793
|
/**
|
|
27326
|
-
*
|
|
27327
|
-
* @param level
|
|
27328
|
-
* @param parent optional parameter to filter nodes with common parent
|
|
26794
|
+
* Text field id, that contains the id of the used material icon.
|
|
27329
26795
|
*/
|
|
27330
|
-
|
|
27331
|
-
if (level === 0)
|
|
27332
|
-
return of([this.root]);
|
|
27333
|
-
return this._resourceService.getByLevel(level).pipe(map(nodes => {
|
|
27334
|
-
const ns = !!(parent === null || parent === void 0 ? void 0 : parent.id) ? nodes.filter(n => n.parentId === parent.id) : nodes;
|
|
27335
|
-
this.capitalizeNames(ns);
|
|
27336
|
-
return ns;
|
|
27337
|
-
}));
|
|
27338
|
-
}
|
|
27339
|
-
resolveParentPath(node) {
|
|
27340
|
-
if (!node)
|
|
27341
|
-
node = this.activeNode;
|
|
27342
|
-
const lastDelimiter = node.uriPath.lastIndexOf('/');
|
|
27343
|
-
if (lastDelimiter === -1)
|
|
27344
|
-
return 'root';
|
|
27345
|
-
return node.uriPath.substring(0, lastDelimiter);
|
|
27346
|
-
}
|
|
27347
|
-
splitNodePath(node) {
|
|
27348
|
-
return node === null || node === void 0 ? void 0 : node.uriPath.split('/').filter(s => s !== UriService.ROOT);
|
|
27349
|
-
}
|
|
27350
|
-
capitalizeNames(nodes) {
|
|
27351
|
-
if (!(nodes instanceof Array))
|
|
27352
|
-
return;
|
|
27353
|
-
nodes.forEach(n => this.capitalizeName(n));
|
|
27354
|
-
}
|
|
26796
|
+
GroupNavigationConstants["NAVIGATION_ENTRY_ICON_FIELD_ID_SUFFIX"] = "tab_icon";
|
|
27355
26797
|
/**
|
|
27356
|
-
*
|
|
27357
|
-
*
|
|
27358
|
-
|
|
27359
|
-
|
|
27360
|
-
|
|
27361
|
-
|
|
27362
|
-
|
|
27363
|
-
|
|
27364
|
-
|
|
27365
|
-
|
|
27366
|
-
|
|
27367
|
-
|
|
27368
|
-
|
|
27369
|
-
|
|
27370
|
-
|
|
27371
|
-
|
|
27372
|
-
|
|
27373
|
-
|
|
27374
|
-
|
|
27375
|
-
|
|
27376
|
-
|
|
27377
|
-
|
|
27378
|
-
|
|
27379
|
-
|
|
27380
|
-
|
|
27381
|
-
|
|
27382
|
-
|
|
27383
|
-
|
|
27384
|
-
|
|
27385
|
-
|
|
27386
|
-
|
|
27387
|
-
|
|
27388
|
-
|
|
26798
|
+
* TaskRef field, that contains taskId of filter task
|
|
26799
|
+
* */
|
|
26800
|
+
GroupNavigationConstants["ITEM_FIELD_ID_FILTER_TASKREF"] = "current_filter_preview";
|
|
26801
|
+
/**
|
|
26802
|
+
* Text field id, that contains title of create case button
|
|
26803
|
+
* */
|
|
26804
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CREATE_CASE_BUTTON_TITLE"] = "create_case_button_title";
|
|
26805
|
+
/**
|
|
26806
|
+
* Text field id, that contains icon name of create case button
|
|
26807
|
+
* */
|
|
26808
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CREATE_CASE_BUTTON_ICON"] = "create_case_button_icon";
|
|
26809
|
+
/**
|
|
26810
|
+
* EnumerationMap field, that contains selected search type for case view
|
|
26811
|
+
* */
|
|
26812
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_VIEW_SEARCH_TYPE"] = "case_view_search_type";
|
|
26813
|
+
/**
|
|
26814
|
+
* EnumerationMap field, that contains selected search type for task view
|
|
26815
|
+
* */
|
|
26816
|
+
GroupNavigationConstants["ITEM_FIELD_ID_TASK_VIEW_SEARCH_TYPE"] = "task_view_search_type";
|
|
26817
|
+
/**
|
|
26818
|
+
* Boolean field, that is true if user wants to merge base filter and custom filter
|
|
26819
|
+
* */
|
|
26820
|
+
GroupNavigationConstants["ITEM_FIELD_ID_MERGE_FILTERS"] = "merge_filters";
|
|
26821
|
+
/**
|
|
26822
|
+
* TaskRef field, that contains taskId of custom filter for task view
|
|
26823
|
+
* */
|
|
26824
|
+
GroupNavigationConstants["ITEM_FIELD_ID_ADDITIONAL_FILTER_TASKREF"] = "current_additional_filter_preview";
|
|
26825
|
+
/**
|
|
26826
|
+
* Boolean field, that is true if the user wants to see more menu for case item in case view
|
|
26827
|
+
* */
|
|
26828
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_SHOW_MORE_MENU"] = "case_show_more_menu";
|
|
26829
|
+
/**
|
|
26830
|
+
* Boolean field, that is true if no input for title in case creation is shown
|
|
26831
|
+
* */
|
|
26832
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_TITLE_IN_CREATION"] = "case_require_title_in_creation";
|
|
26833
|
+
/**
|
|
26834
|
+
* Text field, that contains banned processes in case creation as a value
|
|
26835
|
+
* */
|
|
26836
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_BANNED_PROCESS_CREATION"] = "case_banned_nets_in_creation";
|
|
26837
|
+
/**
|
|
26838
|
+
* Boolean field, that is true if the user wants to see more menu for task item in task view
|
|
26839
|
+
* */
|
|
26840
|
+
GroupNavigationConstants["ITEM_FIELD_ID_TASK_SHOW_MORE_MENU"] = "task_show_more_menu";
|
|
26841
|
+
/**
|
|
26842
|
+
* MultichoiceMap field, that contains selected header modes for case view as a value
|
|
26843
|
+
* */
|
|
26844
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_MODE"] = "case_headers_mode";
|
|
26845
|
+
/**
|
|
26846
|
+
* Boolean field, that is true if table mode can be applied in case view
|
|
26847
|
+
* */
|
|
26848
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_ALLOW_TABLE_MODE"] = "case_allow_header_table_mode";
|
|
26849
|
+
/**
|
|
26850
|
+
* EnumerationMap field, that contains selected default header mode for case view as a value
|
|
26851
|
+
* */
|
|
26852
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS_MODE"] = "case_headers_default_mode";
|
|
26853
|
+
/**
|
|
26854
|
+
* Boolean field, that is true to make mode menu in case view visible
|
|
26855
|
+
* */
|
|
26856
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_CHANGEABLE"] = "case_is_header_mode_changeable";
|
|
26857
|
+
/**
|
|
26858
|
+
* MultichoiceMap field, that contains selected header modes for task view as a value
|
|
26859
|
+
* */
|
|
26860
|
+
GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_MODE"] = "task_headers_mode";
|
|
26861
|
+
/**
|
|
26862
|
+
* Boolean field, that is true if table mode can be applied in task view
|
|
26863
|
+
* */
|
|
26864
|
+
GroupNavigationConstants["ITEM_FIELD_ID_TASK_ALLOW_TABLE_MODE"] = "task_allow_header_table_mode";
|
|
26865
|
+
/**
|
|
26866
|
+
* EnumerationMap field, that contains selected default header mode for task view as a value
|
|
26867
|
+
* */
|
|
26868
|
+
GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS_MODE"] = "task_headers_default_mode";
|
|
26869
|
+
/**
|
|
26870
|
+
* Boolean field, that is true to make mode menu in task view visible
|
|
26871
|
+
* */
|
|
26872
|
+
GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_CHANGEABLE"] = "task_is_header_mode_changeable";
|
|
26873
|
+
/**
|
|
26874
|
+
* Boolean field, that is true to use default headers configuration for case view
|
|
26875
|
+
* */
|
|
26876
|
+
GroupNavigationConstants["ITEM_FIELD_ID_USE_CASE_DEFAULT_HEADERS"] = "use_case_default_headers";
|
|
26877
|
+
/**
|
|
26878
|
+
* Text field, that contains default header metadata separated by comma for case view as a value
|
|
26879
|
+
* */
|
|
26880
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS"] = "case_default_headers";
|
|
26881
|
+
/**
|
|
26882
|
+
* Boolean field, that is true to use default headers configuration for task view
|
|
26883
|
+
* */
|
|
26884
|
+
GroupNavigationConstants["ITEM_FIELD_ID_USE_TASK_DEFAULT_HEADERS"] = "use_task_default_headers";
|
|
26885
|
+
/**
|
|
26886
|
+
* Text field, that contains default header metadata separated by comma for task view as a value
|
|
26887
|
+
* */
|
|
26888
|
+
GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS"] = "task_default_headers";
|
|
26889
|
+
/**
|
|
26890
|
+
* MultichoiceMap field, that contains allowed roles as value
|
|
26891
|
+
* */
|
|
26892
|
+
GroupNavigationConstants["ITEM_FIELD_ID_ALLOWED_ROLES"] = "allowed_roles";
|
|
26893
|
+
/**
|
|
26894
|
+
* MultichoiceMap field, that contains banned roles as value
|
|
26895
|
+
* */
|
|
26896
|
+
GroupNavigationConstants["ITEM_FIELD_ID_BANNED_ROLES"] = "banned_roles";
|
|
26897
|
+
/**
|
|
26898
|
+
* Text field, that contains icon identifier
|
|
26899
|
+
* */
|
|
26900
|
+
GroupNavigationConstants["ITEM_FIELD_ID_MENU_ICON"] = "menu_icon";
|
|
26901
|
+
/**
|
|
26902
|
+
* I18n field, that contains labels of menu item
|
|
26903
|
+
* */
|
|
26904
|
+
GroupNavigationConstants["ITEM_FIELD_ID_MENU_NAME"] = "menu_name";
|
|
26905
|
+
/**
|
|
26906
|
+
* Text field, that contains URI
|
|
26907
|
+
* */
|
|
26908
|
+
GroupNavigationConstants["ITEM_FIELD_ID_NODE_PATH"] = "nodePath";
|
|
26909
|
+
/**
|
|
26910
|
+
* Boolean field, that is true if item contains child items
|
|
26911
|
+
* */
|
|
26912
|
+
GroupNavigationConstants["ITEM_FIELD_ID_HAS_CHILDREN"] = "hasChildren";
|
|
26913
|
+
})(GroupNavigationConstants || (GroupNavigationConstants = {}));
|
|
27389
26914
|
|
|
27390
26915
|
/**
|
|
27391
26916
|
* Holds all identifiers of the Impersonation config process in an accessible manner
|
|
@@ -27559,21 +27084,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
27559
27084
|
}] }];
|
|
27560
27085
|
} });
|
|
27561
27086
|
|
|
27562
|
-
const
|
|
27563
|
-
'
|
|
27087
|
+
const MENU_IDENTIFIERS = [
|
|
27088
|
+
'preference_item',
|
|
27564
27089
|
];
|
|
27565
|
-
const
|
|
27566
|
-
const FILTER_DEFAULT_HEADERS_ID = 'default_headers';
|
|
27090
|
+
const SETTINGS_TRANSITION_ID = 'item_settings';
|
|
27567
27091
|
const LEFT_DRAWER_DEFAULT_WIDTH = 60;
|
|
27568
27092
|
const RIGHT_DRAWER_DEFAULT_WIDTH = 240;
|
|
27569
27093
|
const RIGHT_DRAWER_DEFAULT_MIN_WIDTH = 180;
|
|
27570
27094
|
const RIGHT_DRAWER_MAX_WIDTH = 460;
|
|
27095
|
+
const RIGHT_SIDE_NEW_PAGE_SIZE = 10;
|
|
27096
|
+
const RIGHT_SIDE_INIT_PAGE_SIZE = 20;
|
|
27097
|
+
var MenuOrder;
|
|
27098
|
+
(function (MenuOrder) {
|
|
27099
|
+
MenuOrder[MenuOrder["Ascending"] = 0] = "Ascending";
|
|
27100
|
+
MenuOrder[MenuOrder["Descending"] = 1] = "Descending";
|
|
27101
|
+
})(MenuOrder || (MenuOrder = {}));
|
|
27571
27102
|
class AbstractNavigationDoubleDrawerComponent {
|
|
27572
|
-
constructor(_router, _activatedRoute, _breakpoint, _languageService, _userService, _accessService, _log, _config, _uriService, _impersonationUserSelect, _impersonation, _dynamicRoutingService) {
|
|
27103
|
+
constructor(_router, _activatedRoute, _breakpoint, _languageService, _translateService, _userService, _accessService, _log, _config, _uriService, _impersonationUserSelect, _impersonation, _dynamicRoutingService) {
|
|
27573
27104
|
this._router = _router;
|
|
27574
27105
|
this._activatedRoute = _activatedRoute;
|
|
27575
27106
|
this._breakpoint = _breakpoint;
|
|
27576
27107
|
this._languageService = _languageService;
|
|
27108
|
+
this._translateService = _translateService;
|
|
27577
27109
|
this._userService = _userService;
|
|
27578
27110
|
this._accessService = _accessService;
|
|
27579
27111
|
this._log = _log;
|
|
@@ -27607,14 +27139,12 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27607
27139
|
disableClose: false,
|
|
27608
27140
|
width: RIGHT_DRAWER_DEFAULT_WIDTH,
|
|
27609
27141
|
};
|
|
27610
|
-
this.
|
|
27611
|
-
this.
|
|
27612
|
-
this.views = new Array();
|
|
27142
|
+
this.leftItems = new Array();
|
|
27143
|
+
this.rightItems = new Array();
|
|
27613
27144
|
this.leftLoading$ = new LoadingEmitter();
|
|
27614
27145
|
this.rightLoading$ = new LoadingEmitter();
|
|
27615
27146
|
this.nodeLoading$ = new LoadingEmitter();
|
|
27616
|
-
this.
|
|
27617
|
-
this.moreMenuItems = new Array();
|
|
27147
|
+
this.itemsOrder = MenuOrder.Ascending;
|
|
27618
27148
|
}
|
|
27619
27149
|
ngOnInit() {
|
|
27620
27150
|
this._breakpointSubscription = this._breakpoint.observe([Breakpoints.HandsetLandscape]).subscribe(() => {
|
|
@@ -27632,14 +27162,6 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27632
27162
|
this._currentNodeSubscription = this._uriService.activeNode$.subscribe(node => {
|
|
27633
27163
|
this.currentNode = node;
|
|
27634
27164
|
});
|
|
27635
|
-
const viewConfigurationPath = this._activatedRoute.snapshot.data[NAE_ROUTING_CONFIGURATION_PATH];
|
|
27636
|
-
if (!!viewConfigurationPath) {
|
|
27637
|
-
const viewConfiguration = this._config.getViewByPath(viewConfigurationPath);
|
|
27638
|
-
Object.entries(viewConfiguration.children).forEach(([key, childView]) => {
|
|
27639
|
-
this.resolveUriForChildViews(viewConfigurationPath + '/' + key, childView);
|
|
27640
|
-
this.resolveHiddenMenuItemFromChildViews(viewConfigurationPath + '/' + key, childView);
|
|
27641
|
-
});
|
|
27642
|
-
}
|
|
27643
27165
|
}
|
|
27644
27166
|
get currentNode() {
|
|
27645
27167
|
return this._currentNode;
|
|
@@ -27670,44 +27192,19 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27670
27192
|
this.rightLoading$.off();
|
|
27671
27193
|
}
|
|
27672
27194
|
if (this._uriService.isRoot(node)) {
|
|
27673
|
-
this.
|
|
27195
|
+
this.leftItems = [];
|
|
27674
27196
|
this.loadRightSide();
|
|
27675
27197
|
return;
|
|
27676
27198
|
}
|
|
27677
|
-
if (!this.
|
|
27199
|
+
if (!this.leftItems.find(item => { var _a; return ((_a = item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)) === null || _a === void 0 ? void 0 : _a.value) === node.uriPath; })) {
|
|
27678
27200
|
this.loadLeftSide();
|
|
27679
27201
|
}
|
|
27680
27202
|
this.loadRightSide();
|
|
27681
27203
|
}
|
|
27682
|
-
resolveUriForChildViews(configPath, childView) {
|
|
27683
|
-
if (!childView.processUri)
|
|
27684
|
-
return;
|
|
27685
|
-
if (!this._accessService.canAccessView(childView, configPath))
|
|
27686
|
-
return;
|
|
27687
|
-
if (!this._childCustomViews[childView.processUri]) {
|
|
27688
|
-
this._childCustomViews[childView.processUri] = {};
|
|
27689
|
-
}
|
|
27690
|
-
this._childCustomViews[childView.processUri][configPath] = Object.assign({ id: configPath }, childView);
|
|
27691
|
-
}
|
|
27692
|
-
resolveHiddenMenuItemFromChildViews(configPath, childView) {
|
|
27693
|
-
var _a;
|
|
27694
|
-
if (!childView.navigation)
|
|
27695
|
-
return;
|
|
27696
|
-
if (!this._accessService.canAccessView(childView, configPath))
|
|
27697
|
-
return;
|
|
27698
|
-
// @ts-ignore
|
|
27699
|
-
if (!!((_a = childView === null || childView === void 0 ? void 0 : childView.navigation) === null || _a === void 0 ? void 0 : _a.hidden)) {
|
|
27700
|
-
this.moreMenuItems.push(Object.assign({ id: configPath }, childView));
|
|
27701
|
-
}
|
|
27702
|
-
}
|
|
27703
27204
|
ngOnDestroy() {
|
|
27704
|
-
var _a, _b
|
|
27205
|
+
var _a, _b;
|
|
27705
27206
|
(_a = this._breakpointSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
27706
|
-
(_b = this.
|
|
27707
|
-
(_c = this._rightNodesSubscription) === null || _c === void 0 ? void 0 : _c.unsubscribe();
|
|
27708
|
-
(_d = this._filtersSubscription) === null || _d === void 0 ? void 0 : _d.unsubscribe();
|
|
27709
|
-
(_e = this._rootSubscription) === null || _e === void 0 ? void 0 : _e.unsubscribe();
|
|
27710
|
-
(_f = this._currentNodeSubscription) === null || _f === void 0 ? void 0 : _f.unsubscribe();
|
|
27207
|
+
(_b = this._currentNodeSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
|
|
27711
27208
|
this.leftLoading$.complete();
|
|
27712
27209
|
this.rightLoading$.complete();
|
|
27713
27210
|
this.nodeLoading$.complete();
|
|
@@ -27797,75 +27294,117 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27797
27294
|
return;
|
|
27798
27295
|
this.currentNode = this._currentNode.parent;
|
|
27799
27296
|
}
|
|
27800
|
-
|
|
27801
|
-
|
|
27802
|
-
}
|
|
27803
|
-
onViewClick(view) {
|
|
27297
|
+
onItemClick(item) {
|
|
27298
|
+
var _a;
|
|
27804
27299
|
this._uriService.activeNode = this._currentNode;
|
|
27300
|
+
if (this.hasItemChildren(item)) {
|
|
27301
|
+
const path = (_a = item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)) === null || _a === void 0 ? void 0 : _a.value;
|
|
27302
|
+
this._uriService.getNodeByPath(path).subscribe(node => {
|
|
27303
|
+
this.currentNode = node;
|
|
27304
|
+
}, error => {
|
|
27305
|
+
this._log.error(error);
|
|
27306
|
+
});
|
|
27307
|
+
}
|
|
27308
|
+
}
|
|
27309
|
+
hasItemChildren(item) {
|
|
27310
|
+
var _a;
|
|
27311
|
+
return (_a = item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_HAS_CHILDREN)) === null || _a === void 0 ? void 0 : _a.value;
|
|
27312
|
+
}
|
|
27313
|
+
isItemAndNodeEqual(item, node) {
|
|
27314
|
+
var _a;
|
|
27315
|
+
return ((_a = item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)) === null || _a === void 0 ? void 0 : _a.value) === node.uriPath;
|
|
27805
27316
|
}
|
|
27806
27317
|
loadLeftSide() {
|
|
27807
27318
|
if (this._uriService.isRoot(this._currentNode)) {
|
|
27808
|
-
this.
|
|
27319
|
+
this.leftItems = [];
|
|
27809
27320
|
return;
|
|
27810
27321
|
}
|
|
27811
27322
|
this.leftLoading$.on();
|
|
27812
|
-
this.
|
|
27813
|
-
|
|
27814
|
-
|
|
27815
|
-
|
|
27323
|
+
this._uriService.getCasesOfNode(this.currentNode.parent, MENU_IDENTIFIERS, 0, 1).subscribe(page => {
|
|
27324
|
+
var _a;
|
|
27325
|
+
((_a = page === null || page === void 0 ? void 0 : page.pagination) === null || _a === void 0 ? void 0 : _a.totalElements) === 0 ? of([]) : this._uriService.getCasesOfNode(this.currentNode.parent, MENU_IDENTIFIERS, 0, page.pagination.totalElements).pipe(map(p => p.content)).subscribe(result => {
|
|
27326
|
+
this.leftItems = result.filter(folder => { var _a; return ((_a = folder.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_HAS_CHILDREN)) === null || _a === void 0 ? void 0 : _a.value) === true; }).map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
|
|
27327
|
+
this.leftItems.sort((a, b) => { var _a, _b; return (_a = a === null || a === void 0 ? void 0 : a.navigation) === null || _a === void 0 ? void 0 : _a.title.localeCompare((_b = b === null || b === void 0 ? void 0 : b.navigation) === null || _b === void 0 ? void 0 : _b.title); });
|
|
27328
|
+
this.leftLoading$.off();
|
|
27329
|
+
}, error => {
|
|
27330
|
+
this._log.error(error);
|
|
27331
|
+
this.leftItems = [];
|
|
27332
|
+
this.leftLoading$.off();
|
|
27333
|
+
});
|
|
27816
27334
|
}, error => {
|
|
27817
27335
|
this._log.error(error);
|
|
27818
|
-
this.
|
|
27336
|
+
this.leftItems = [];
|
|
27819
27337
|
this.leftLoading$.off();
|
|
27820
27338
|
});
|
|
27821
27339
|
}
|
|
27822
27340
|
loadRightSide() {
|
|
27823
27341
|
this.rightLoading$.on();
|
|
27824
|
-
this.
|
|
27342
|
+
this.moreItems = [];
|
|
27343
|
+
this._uriService.getCasesOfNode(this.currentNode, MENU_IDENTIFIERS, 0, 1).subscribe(page => {
|
|
27825
27344
|
var _a, _b;
|
|
27826
|
-
this._log.debug('Number of
|
|
27827
|
-
|
|
27828
|
-
|
|
27829
|
-
|
|
27830
|
-
|
|
27831
|
-
|
|
27832
|
-
|
|
27833
|
-
|
|
27834
|
-
|
|
27835
|
-
this.
|
|
27345
|
+
this._log.debug('Number of items for uri ' + this._currentNode.uriPath + ': ' + ((_a = page === null || page === void 0 ? void 0 : page.pagination) === null || _a === void 0 ? void 0 : _a.totalElements));
|
|
27346
|
+
(((_b = page === null || page === void 0 ? void 0 : page.pagination) === null || _b === void 0 ? void 0 : _b.totalElements) === 0 ? of([]) : this._uriService.getCasesOfNode(this._currentNode, MENU_IDENTIFIERS, 0, page.pagination.totalElements).pipe(map(p => p.content))).subscribe(result => {
|
|
27347
|
+
result = result.sort((a, b) => a === null || a === void 0 ? void 0 : a.title.localeCompare(b === null || b === void 0 ? void 0 : b.title));
|
|
27348
|
+
if (result.length > RIGHT_SIDE_INIT_PAGE_SIZE) {
|
|
27349
|
+
const rawRightItems = result.splice(0, RIGHT_SIDE_INIT_PAGE_SIZE);
|
|
27350
|
+
this.rightItems = rawRightItems.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
|
|
27351
|
+
this.moreItems = result.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
|
|
27352
|
+
}
|
|
27353
|
+
else {
|
|
27354
|
+
this.rightItems = result.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
|
|
27836
27355
|
}
|
|
27837
|
-
// @ts-ignore
|
|
27838
|
-
this.views.sort((a, b) => { var _a, _b; return this.compareStrings((_a = a === null || a === void 0 ? void 0 : a.navigation) === null || _a === void 0 ? void 0 : _a.title, (_b = b === null || b === void 0 ? void 0 : b.navigation) === null || _b === void 0 ? void 0 : _b.title); });
|
|
27839
27356
|
this.rightLoading$.off();
|
|
27840
27357
|
}, error => {
|
|
27841
27358
|
this._log.error(error);
|
|
27842
|
-
this.
|
|
27843
|
-
this.
|
|
27359
|
+
this.rightItems = [];
|
|
27360
|
+
this.moreItems = [];
|
|
27844
27361
|
this.rightLoading$.off();
|
|
27845
27362
|
});
|
|
27846
27363
|
}, error => {
|
|
27847
27364
|
this._log.error(error);
|
|
27848
|
-
this.
|
|
27849
|
-
this.
|
|
27365
|
+
this.rightItems = [];
|
|
27366
|
+
this.moreItems = [];
|
|
27850
27367
|
this.rightLoading$.off();
|
|
27851
27368
|
});
|
|
27852
27369
|
}
|
|
27853
|
-
|
|
27854
|
-
|
|
27370
|
+
loadMoreItems() {
|
|
27371
|
+
if (this.moreItems.length > RIGHT_SIDE_NEW_PAGE_SIZE) {
|
|
27372
|
+
this.rightItems.push(...this.moreItems.splice(0, RIGHT_SIDE_NEW_PAGE_SIZE));
|
|
27373
|
+
}
|
|
27374
|
+
else {
|
|
27375
|
+
this.rightItems.push(...this.moreItems);
|
|
27376
|
+
this.moreItems = [];
|
|
27377
|
+
}
|
|
27378
|
+
}
|
|
27379
|
+
isAscending() {
|
|
27380
|
+
return this.itemsOrder === MenuOrder.Ascending;
|
|
27381
|
+
}
|
|
27382
|
+
switchOrder() {
|
|
27383
|
+
this.itemsOrder = (this.itemsOrder + 1) % 2;
|
|
27384
|
+
let multiplier = 1;
|
|
27385
|
+
if (this.itemsOrder === MenuOrder.Descending) {
|
|
27386
|
+
multiplier = -1;
|
|
27387
|
+
}
|
|
27388
|
+
this.rightItems = this.rightItems.sort((a, b) => { var _a, _b; return multiplier * ((_a = a === null || a === void 0 ? void 0 : a.navigation) === null || _a === void 0 ? void 0 : _a.title.localeCompare((_b = b === null || b === void 0 ? void 0 : b.navigation) === null || _b === void 0 ? void 0 : _b.title)); });
|
|
27389
|
+
this.leftItems = this.leftItems.sort((a, b) => { var _a, _b; return multiplier * ((_a = a === null || a === void 0 ? void 0 : a.navigation) === null || _a === void 0 ? void 0 : _a.title.localeCompare((_b = b === null || b === void 0 ? void 0 : b.navigation) === null || _b === void 0 ? void 0 : _b.title)); });
|
|
27390
|
+
this.moreItems = this.moreItems.sort((a, b) => { var _a, _b; return multiplier * ((_a = a === null || a === void 0 ? void 0 : a.navigation) === null || _a === void 0 ? void 0 : _a.title.localeCompare((_b = b === null || b === void 0 ? void 0 : b.navigation) === null || _b === void 0 ? void 0 : _b.title)); });
|
|
27391
|
+
}
|
|
27392
|
+
resolveItemCaseToNavigationItem(itemCase) {
|
|
27393
|
+
var _a, _b;
|
|
27855
27394
|
const item = {
|
|
27856
27395
|
access: {},
|
|
27857
27396
|
navigation: {
|
|
27858
|
-
icon: ((_a =
|
|
27859
|
-
title: ((
|
|
27397
|
+
icon: ((_a = itemCase.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_MENU_ICON)) === null || _a === void 0 ? void 0 : _a.value) || this.filterIcon,
|
|
27398
|
+
title: this.getTranslation((_b = itemCase.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_MENU_NAME)) === null || _b === void 0 ? void 0 : _b.value) || itemCase.title,
|
|
27860
27399
|
},
|
|
27861
27400
|
routing: {
|
|
27862
|
-
path: this.
|
|
27401
|
+
path: this.getItemRoutingPath(itemCase),
|
|
27863
27402
|
},
|
|
27864
|
-
id:
|
|
27865
|
-
resource:
|
|
27403
|
+
id: itemCase.stringId,
|
|
27404
|
+
resource: itemCase,
|
|
27866
27405
|
};
|
|
27867
|
-
const resolvedRoles = this.resolveAccessRoles(
|
|
27868
|
-
const resolvedBannedRoles = this.resolveAccessRoles(
|
|
27406
|
+
const resolvedRoles = this.resolveAccessRoles(itemCase, GroupNavigationConstants.ITEM_FIELD_ID_ALLOWED_ROLES);
|
|
27407
|
+
const resolvedBannedRoles = this.resolveAccessRoles(itemCase, GroupNavigationConstants.ITEM_FIELD_ID_BANNED_ROLES);
|
|
27869
27408
|
if (!!resolvedRoles)
|
|
27870
27409
|
item.access['role'] = resolvedRoles;
|
|
27871
27410
|
if (!!resolvedBannedRoles)
|
|
@@ -27874,6 +27413,10 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27874
27413
|
return;
|
|
27875
27414
|
return item;
|
|
27876
27415
|
}
|
|
27416
|
+
getTranslation(value) {
|
|
27417
|
+
const locale = this._translateService.currentLang.split('-')[0];
|
|
27418
|
+
return locale in value.translations ? value.translations[locale] : value.defaultValue;
|
|
27419
|
+
}
|
|
27877
27420
|
resolveAccessRoles(filter, roleType) {
|
|
27878
27421
|
var _a;
|
|
27879
27422
|
const allowedRoles = (_a = filter.immediateData.find(f => f.stringId === roleType)) === null || _a === void 0 ? void 0 : _a.options;
|
|
@@ -27889,17 +27432,11 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27889
27432
|
});
|
|
27890
27433
|
return roles;
|
|
27891
27434
|
}
|
|
27892
|
-
|
|
27893
|
-
const
|
|
27435
|
+
getItemRoutingPath(itemCase) {
|
|
27436
|
+
const transId = SETTINGS_TRANSITION_ID;
|
|
27437
|
+
const taskId = itemCase.tasks.find(taskPair => taskPair.transition === transId).task;
|
|
27894
27438
|
const url = this._dynamicRoutingService.route;
|
|
27895
|
-
return `/${url}/${
|
|
27896
|
-
}
|
|
27897
|
-
compareStrings(a, b) {
|
|
27898
|
-
if (!a && !b)
|
|
27899
|
-
return 0;
|
|
27900
|
-
if (a < b)
|
|
27901
|
-
return -1;
|
|
27902
|
-
return a > b ? 1 : 0;
|
|
27439
|
+
return `/${url}/${taskId}`;
|
|
27903
27440
|
}
|
|
27904
27441
|
/**
|
|
27905
27442
|
* Function to check whether the back button should be displayed
|
|
@@ -27909,20 +27446,17 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27909
27446
|
var _a;
|
|
27910
27447
|
return !!((_a = this._currentNode) === null || _a === void 0 ? void 0 : _a.level) ? this._currentNode.level == 0 : true;
|
|
27911
27448
|
}
|
|
27912
|
-
|
|
27913
|
-
return this.
|
|
27914
|
-
}
|
|
27915
|
-
isRightNodesEmpty() {
|
|
27916
|
-
return this.rightNodes === undefined || this.rightNodes.length === 0;
|
|
27449
|
+
isLeftItemsEmpty() {
|
|
27450
|
+
return this.leftItems === undefined || this.leftItems.length === 0;
|
|
27917
27451
|
}
|
|
27918
|
-
|
|
27919
|
-
return this.
|
|
27452
|
+
isRightItemsEmpty() {
|
|
27453
|
+
return this.rightItems === undefined || this.rightItems.length === 0;
|
|
27920
27454
|
}
|
|
27921
27455
|
uriNodeTrackBy(index, node) {
|
|
27922
27456
|
return node.id;
|
|
27923
27457
|
}
|
|
27924
|
-
|
|
27925
|
-
return
|
|
27458
|
+
itemsTrackBy(index, item) {
|
|
27459
|
+
return item.id;
|
|
27926
27460
|
}
|
|
27927
27461
|
onResizeEvent(event) {
|
|
27928
27462
|
if (event.rectangle.width > RIGHT_DRAWER_MAX_WIDTH) {
|
|
@@ -27939,7 +27473,7 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27939
27473
|
// this.contentWidth.next(this.width);
|
|
27940
27474
|
}
|
|
27941
27475
|
}
|
|
27942
|
-
AbstractNavigationDoubleDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationDoubleDrawerComponent, deps: [{ token: i2$3.Router }, { token: i2$3.ActivatedRoute }, { token: i1$7.BreakpointObserver }, { token: LanguageService }, { token: UserService }, { token: AccessService }, { token: LoggerService }, { token: ConfigurationService }, { token: UriService }, { token: ImpersonationUserSelectService }, { token: ImpersonationService }, { token: DynamicNavigationRouteProviderService }], target: i0.ɵɵFactoryTarget.Component });
|
|
27476
|
+
AbstractNavigationDoubleDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationDoubleDrawerComponent, deps: [{ token: i2$3.Router }, { token: i2$3.ActivatedRoute }, { token: i1$7.BreakpointObserver }, { token: LanguageService }, { token: i1$2.TranslateService }, { token: UserService }, { token: AccessService }, { token: LoggerService }, { token: ConfigurationService }, { token: UriService }, { token: ImpersonationUserSelectService }, { token: ImpersonationService }, { token: DynamicNavigationRouteProviderService }], target: i0.ɵɵFactoryTarget.Component });
|
|
27943
27477
|
AbstractNavigationDoubleDrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractNavigationDoubleDrawerComponent, selector: "ncc-abstract-navigation-double-drawer", inputs: { portalLeftMenu: "portalLeftMenu", portalRightMenu: "portalRightMenu", imageRouterLink: "imageRouterLink", imageAlt: "imageAlt", image: "image", profileRouterLink: "profileRouterLink", includeUser: "includeUser", includeLanguage: "includeLanguage", includeMoreMenu: "includeMoreMenu", includeImpersonation: "includeImpersonation", allClosable: "allClosable", folderIcon: "folderIcon", openedFolderIcon: "openedFolderIcon", filterIcon: "filterIcon", foldersCategoryName: "foldersCategoryName", viewsCategoryName: "viewsCategoryName" }, ngImport: i0, template: '', isInline: true });
|
|
27944
27478
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationDoubleDrawerComponent, decorators: [{
|
|
27945
27479
|
type: Component,
|
|
@@ -27947,7 +27481,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
27947
27481
|
selector: 'ncc-abstract-navigation-double-drawer',
|
|
27948
27482
|
template: '',
|
|
27949
27483
|
}]
|
|
27950
|
-
}], ctorParameters: function () { return [{ type: i2$3.Router }, { type: i2$3.ActivatedRoute }, { type: i1$7.BreakpointObserver }, { type: LanguageService }, { type: UserService }, { type: AccessService }, { type: LoggerService }, { type: ConfigurationService }, { type: UriService }, { type: ImpersonationUserSelectService }, { type: ImpersonationService }, { type: DynamicNavigationRouteProviderService }]; }, propDecorators: { portalLeftMenu: [{
|
|
27484
|
+
}], ctorParameters: function () { return [{ type: i2$3.Router }, { type: i2$3.ActivatedRoute }, { type: i1$7.BreakpointObserver }, { type: LanguageService }, { type: i1$2.TranslateService }, { type: UserService }, { type: AccessService }, { type: LoggerService }, { type: ConfigurationService }, { type: UriService }, { type: ImpersonationUserSelectService }, { type: ImpersonationService }, { type: DynamicNavigationRouteProviderService }]; }, propDecorators: { portalLeftMenu: [{
|
|
27951
27485
|
type: Input
|
|
27952
27486
|
}], portalRightMenu: [{
|
|
27953
27487
|
type: Input
|
|
@@ -28050,7 +27584,6 @@ class GroupNavigationComponentResolverService {
|
|
|
28050
27584
|
result.next(new ComponentPortal(this.resolveViewComponent(taskData), null, Injector.create({
|
|
28051
27585
|
providers: [
|
|
28052
27586
|
{ provide: NAE_NAVIGATION_ITEM_TASK_DATA, useValue: taskData },
|
|
28053
|
-
{ provide: NAE_DEFAULT_HEADERS, useValue: this.resolveDefaultHeaders(taskData) },
|
|
28054
27587
|
],
|
|
28055
27588
|
parent: parentInjector
|
|
28056
27589
|
})));
|
|
@@ -28064,13 +27597,6 @@ class GroupNavigationComponentResolverService {
|
|
|
28064
27597
|
});
|
|
28065
27598
|
return result.asObservable();
|
|
28066
27599
|
}
|
|
28067
|
-
resolveDefaultHeaders(caze) {
|
|
28068
|
-
var _a;
|
|
28069
|
-
const defaultHeadersResponse = (_a = [].concat(...caze.map(dataGroup => dataGroup.fields)).find(field => field.stringId === FILTER_DEFAULT_HEADERS_ID)) === null || _a === void 0 ? void 0 : _a.value; //ES2019
|
|
28070
|
-
if (!defaultHeadersResponse || Object.keys(defaultHeadersResponse).length === 0)
|
|
28071
|
-
return undefined;
|
|
28072
|
-
return defaultHeadersResponse.split(",");
|
|
28073
|
-
}
|
|
28074
27600
|
forwardError(result, error) {
|
|
28075
27601
|
result.error(error instanceof HttpErrorResponse ? error.error.message : error.message);
|
|
28076
27602
|
result.complete();
|
|
@@ -28186,17 +27712,322 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
28186
27712
|
type: Input
|
|
28187
27713
|
}] } });
|
|
28188
27714
|
|
|
27715
|
+
/**
|
|
27716
|
+
* Search component search mode
|
|
27717
|
+
*/
|
|
27718
|
+
var SearchMode;
|
|
27719
|
+
(function (SearchMode) {
|
|
27720
|
+
SearchMode[SearchMode["FULLTEXT"] = 0] = "FULLTEXT";
|
|
27721
|
+
SearchMode[SearchMode["ADVANCED"] = 1] = "ADVANCED";
|
|
27722
|
+
})(SearchMode || (SearchMode = {}));
|
|
27723
|
+
|
|
27724
|
+
/**
|
|
27725
|
+
* Extracts the item name and item icon (if any) rom a section of the navigation item task data.
|
|
27726
|
+
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
27727
|
+
* @param translateService is a service to translate label name
|
|
27728
|
+
*/
|
|
27729
|
+
function extractIconAndTitle(dataSection, translateService) {
|
|
27730
|
+
const result = { name: '' };
|
|
27731
|
+
if (dataSection.length === 0) {
|
|
27732
|
+
throw new Error('The provided task data does not belong to a Navigation menu item task. Icon and title cannot be extracted');
|
|
27733
|
+
}
|
|
27734
|
+
const nameField = getFieldFromDataGroups(dataSection, GroupNavigationConstants.NAVIGATION_ENTRY_TITLE_FIELD_ID_SUFFIX);
|
|
27735
|
+
if (nameField === undefined) {
|
|
27736
|
+
throw new Error('Navigation name could not be resolved');
|
|
27737
|
+
}
|
|
27738
|
+
const locale = translateService.currentLang.split('-')[0];
|
|
27739
|
+
result.name = locale in nameField.value.translations ? nameField.value.translations[locale] : nameField.value.defaultValue;
|
|
27740
|
+
const useIcon = getFieldFromDataGroups(dataSection, GroupNavigationConstants.NAVIGATION_ENTRY_ICON_ENABLED_FIELD_ID_SUFFIX);
|
|
27741
|
+
if (useIcon !== undefined && useIcon.value) {
|
|
27742
|
+
const icon = getFieldFromDataGroups(dataSection, GroupNavigationConstants.NAVIGATION_ENTRY_ICON_FIELD_ID_SUFFIX);
|
|
27743
|
+
if (icon === undefined) {
|
|
27744
|
+
this._log.error('Navigation entry icon could not be resolved, but is enabled. Icon was ignored');
|
|
27745
|
+
}
|
|
27746
|
+
else {
|
|
27747
|
+
result.icon = icon.value;
|
|
27748
|
+
}
|
|
27749
|
+
}
|
|
27750
|
+
return result;
|
|
27751
|
+
}
|
|
27752
|
+
/**
|
|
27753
|
+
* Based on provided parameter extracts allowed or banned roles into an Array of strings from a section of the navigation item task data.
|
|
27754
|
+
* Each item has format ROLE_IMPORT_ID:NET_IMPORT_ID
|
|
27755
|
+
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
27756
|
+
* @param roleFieldId ID of field containing banned or allowed role IDs
|
|
27757
|
+
* @returns an Array of string values representing role IDs
|
|
27758
|
+
*/
|
|
27759
|
+
function extractRoles(dataSection, roleFieldId) {
|
|
27760
|
+
if (dataSection.length === 0) {
|
|
27761
|
+
throw new Error('The provided task data does not belong to a Navigation menu item task. Role entries cannot be extracted');
|
|
27762
|
+
}
|
|
27763
|
+
const roleIds = getFieldFromDataGroups(dataSection, roleFieldId);
|
|
27764
|
+
if (roleIds === undefined) {
|
|
27765
|
+
throw new Error('Navigation entry role authorization field could not be resolved');
|
|
27766
|
+
}
|
|
27767
|
+
return roleIds.choices.map(choice => choice.key);
|
|
27768
|
+
}
|
|
27769
|
+
/**
|
|
27770
|
+
* Extracts the data and creates a filter object from the navigation item task data.
|
|
27771
|
+
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
27772
|
+
*/
|
|
27773
|
+
function extractFilterFromData(dataSection) {
|
|
27774
|
+
return extractFilterFromFilterField(extractFilterFieldFromData(dataSection));
|
|
27775
|
+
}
|
|
27776
|
+
/**
|
|
27777
|
+
* Extracts the filter field from the navigation item task data.
|
|
27778
|
+
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
27779
|
+
* @returns The extracted {@link FilterField} or `undefined` if it could not be extracted.
|
|
27780
|
+
*/
|
|
27781
|
+
function extractFilterFieldFromData(dataSection) {
|
|
27782
|
+
const filterField = getFieldFromDataGroups(dataSection, UserFilterConstants.FILTER_FIELD_ID);
|
|
27783
|
+
if (filterField === undefined || !(filterField instanceof FilterField)) {
|
|
27784
|
+
throw new Error(`Filter could not be extracted. The provided datagroups do not contain a filter field with ID '${UserFilterConstants.FILTER_FIELD_ID}'`);
|
|
27785
|
+
}
|
|
27786
|
+
return filterField;
|
|
27787
|
+
}
|
|
27788
|
+
/**
|
|
27789
|
+
* @returns a {@link SimpleFilter} containing the filter stored in the provided {@link FilterField}.
|
|
27790
|
+
* Throws an error if this is not possible.
|
|
27791
|
+
*/
|
|
27792
|
+
function extractFilterFromFilterField(filterField) {
|
|
27793
|
+
if (filterField === undefined || !(filterField instanceof FilterField)) {
|
|
27794
|
+
throw new Error('Filter could not be resolved');
|
|
27795
|
+
}
|
|
27796
|
+
return SimpleFilter.fromQuery({ query: filterField.value }, filterField.filterMetadata.filterType);
|
|
27797
|
+
}
|
|
27798
|
+
/**
|
|
27799
|
+
* Extracts the selected search type from enumeration field of the navigation item task data.
|
|
27800
|
+
* @returns a {@link SearchMode} containing {@link SearchMode.ADVANCED} or {@link SearchMode.FULLTEXT} or {@link undefined}
|
|
27801
|
+
* if unexpected value is found
|
|
27802
|
+
* */
|
|
27803
|
+
function extractSearchTypeFromData(dataSection, typeFieldId) {
|
|
27804
|
+
const typeField = getFieldFromDataGroups(dataSection, typeFieldId);
|
|
27805
|
+
if (typeField === undefined) {
|
|
27806
|
+
throw new Error('Navigation entry search type field could not be resolved');
|
|
27807
|
+
}
|
|
27808
|
+
switch (typeField.value) {
|
|
27809
|
+
case 'fulltext':
|
|
27810
|
+
return SearchMode.FULLTEXT;
|
|
27811
|
+
case 'fulltext_advanced':
|
|
27812
|
+
return SearchMode.ADVANCED;
|
|
27813
|
+
default:
|
|
27814
|
+
return undefined;
|
|
27815
|
+
}
|
|
27816
|
+
}
|
|
27817
|
+
/**
|
|
27818
|
+
* Extracts field value from data
|
|
27819
|
+
* @returns value of extracted field
|
|
27820
|
+
* @throws Error if no field is found
|
|
27821
|
+
* */
|
|
27822
|
+
function extractFieldValueFromData(dataSection, fieldId) {
|
|
27823
|
+
const field = getFieldFromDataGroups(dataSection, fieldId);
|
|
27824
|
+
if (field === undefined) {
|
|
27825
|
+
throw new Error(`Field ${fieldId} could not be resolved`);
|
|
27826
|
+
}
|
|
27827
|
+
return field.value;
|
|
27828
|
+
}
|
|
27829
|
+
|
|
27830
|
+
function addAllowedNets(allowedNets, existingAllowedNets) {
|
|
27831
|
+
if (!!allowedNets && allowedNets.length > 0) {
|
|
27832
|
+
existingAllowedNets.next([...allowedNets]);
|
|
27833
|
+
}
|
|
27834
|
+
}
|
|
27835
|
+
/**
|
|
27836
|
+
* Convenience method that can be used as an allowed nets factory for tabbed task views.
|
|
27837
|
+
* If no allowed nets are provided in the injected data then an {@link AllowedNetsService} with no allowed nets is created.
|
|
27838
|
+
* It has a dependency on this class and {@link NAE_TAB_DATA} injection token.
|
|
27839
|
+
*/
|
|
27840
|
+
function tabbedAllowedNetsServiceFactory(factory, tabData) {
|
|
27841
|
+
var _a;
|
|
27842
|
+
return factory.createFromArray((_a = tabData === null || tabData === void 0 ? void 0 : tabData.allowedNets) !== null && _a !== void 0 ? _a : []);
|
|
27843
|
+
}
|
|
27844
|
+
/**
|
|
27845
|
+
* Convenience method that can be used as an allowed nets factory for views that are loaded from filter process instances.
|
|
27846
|
+
* It has a dependency on this class and {@link NAE_NAVIGATION_ITEM_TASK_DATA} injection token.
|
|
27847
|
+
*/
|
|
27848
|
+
function navigationItemTaskAllowedNetsServiceFactory(factory, baseAllowedNets, navigationItemTaskData) {
|
|
27849
|
+
const filterField = getFieldFromDataGroups(navigationItemTaskData, UserFilterConstants.FILTER_FIELD_ID);
|
|
27850
|
+
const allowedNetsField = getFieldFromDataGroups(navigationItemTaskData, UserFilterConstants.ALLOWED_NETS_FIELD_ID);
|
|
27851
|
+
if (filterField === undefined) {
|
|
27852
|
+
throw new Error(`Provided navigation item task data does not contain a filter field with ID '${UserFilterConstants.FILTER_FIELD_ID}'! Allowed nets cannot be generated from it!`);
|
|
27853
|
+
}
|
|
27854
|
+
const nets = new BehaviorSubject(Array.from(new Set([...filterField.allowedNets])));
|
|
27855
|
+
if (filterField.filterMetadata.inheritAllowedNets) {
|
|
27856
|
+
baseAllowedNets.allowedNets$.subscribe(allowedNets => {
|
|
27857
|
+
const netSet = new Set(allowedNets);
|
|
27858
|
+
nets.next(Array.from(netSet));
|
|
27859
|
+
});
|
|
27860
|
+
}
|
|
27861
|
+
if (!!allowedNetsField) {
|
|
27862
|
+
addAllowedNets(allowedNetsField.value, nets);
|
|
27863
|
+
allowedNetsField.valueChanges().subscribe(allowedNets => {
|
|
27864
|
+
addAllowedNets(allowedNetsField.value, nets);
|
|
27865
|
+
});
|
|
27866
|
+
}
|
|
27867
|
+
return factory.createFromObservable(nets.asObservable());
|
|
27868
|
+
}
|
|
27869
|
+
/**
|
|
27870
|
+
* Simplifies the creation of {@link AllowedNetsService} instances
|
|
27871
|
+
*/
|
|
27872
|
+
class AllowedNetsServiceFactory {
|
|
27873
|
+
constructor(_processService, _petriNetResource, _configService, _log) {
|
|
27874
|
+
this._processService = _processService;
|
|
27875
|
+
this._petriNetResource = _petriNetResource;
|
|
27876
|
+
this._configService = _configService;
|
|
27877
|
+
this._log = _log;
|
|
27878
|
+
}
|
|
27879
|
+
/**
|
|
27880
|
+
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
27881
|
+
* @returns an instance of {@link AllowedNetsService} with all nets set as the `allowedNets`
|
|
27882
|
+
*/
|
|
27883
|
+
createWithAllNets() {
|
|
27884
|
+
return new AllowedNetsService(this._petriNetResource.getAll().pipe(switchMap(nets => {
|
|
27885
|
+
if (nets && Array.isArray(nets)) {
|
|
27886
|
+
return of(nets.map(n => n.identifier));
|
|
27887
|
+
}
|
|
27888
|
+
else {
|
|
27889
|
+
return of([]);
|
|
27890
|
+
}
|
|
27891
|
+
})), this._processService);
|
|
27892
|
+
}
|
|
27893
|
+
/**
|
|
27894
|
+
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
27895
|
+
* @param allowedNetsIdentifiers identifiers of the allowed nets
|
|
27896
|
+
*/
|
|
27897
|
+
createFromArray(allowedNetsIdentifiers) {
|
|
27898
|
+
return new AllowedNetsService(of(allowedNetsIdentifiers), this._processService);
|
|
27899
|
+
}
|
|
27900
|
+
/**
|
|
27901
|
+
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
27902
|
+
* @param webViewPath path to the view as specified in its configuration. No leading backslash.
|
|
27903
|
+
* Allowed nets are loaded from the configuration of the view.
|
|
27904
|
+
*/
|
|
27905
|
+
createFromConfig(webViewPath) {
|
|
27906
|
+
var _a, _b;
|
|
27907
|
+
const view = this._configService.getViewByPath(webViewPath);
|
|
27908
|
+
if (((_a = view === null || view === void 0 ? void 0 : view.layout) === null || _a === void 0 ? void 0 : _a.params) === undefined) {
|
|
27909
|
+
throw new Error(`Can't load configuration for view with webPath: '${webViewPath}'`);
|
|
27910
|
+
}
|
|
27911
|
+
const viewParams = view.layout.params;
|
|
27912
|
+
if (viewParams.allowedNets === undefined) {
|
|
27913
|
+
this._log.warn(`No 'allowedNets' provided for view with webPath '${webViewPath}'`);
|
|
27914
|
+
}
|
|
27915
|
+
return new AllowedNetsService(of((_b = viewParams.allowedNets) !== null && _b !== void 0 ? _b : []), this._processService);
|
|
27916
|
+
}
|
|
27917
|
+
/**
|
|
27918
|
+
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
27919
|
+
* @param netIdentifiers$ observable containing the identifiers of the allowed nets.
|
|
27920
|
+
* When a new value is emitted the allowed nets will be updated.
|
|
27921
|
+
*/
|
|
27922
|
+
createFromObservable(netIdentifiers$) {
|
|
27923
|
+
return new AllowedNetsService(netIdentifiers$, this._processService);
|
|
27924
|
+
}
|
|
27925
|
+
/**
|
|
27926
|
+
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
27927
|
+
* @param filterCase a filter process instance
|
|
27928
|
+
* Allowed nets are set from filter process immediate data
|
|
27929
|
+
*/
|
|
27930
|
+
createFromFilterCase(filterCase) {
|
|
27931
|
+
const filterData = getImmediateData(filterCase, UserFilterConstants.FILTER_FIELD_ID);
|
|
27932
|
+
if (filterData === undefined) {
|
|
27933
|
+
throw new Error(`Cannot get filter from case '${filterCase.title}' with id '${filterCase.stringId}'`);
|
|
27934
|
+
}
|
|
27935
|
+
return new AllowedNetsService(of(filterData.allowedNets), this._processService);
|
|
27936
|
+
}
|
|
27937
|
+
}
|
|
27938
|
+
AllowedNetsServiceFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AllowedNetsServiceFactory, deps: [{ token: ProcessService }, { token: PetriNetResourceService }, { token: ConfigurationService }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
27939
|
+
AllowedNetsServiceFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AllowedNetsServiceFactory, providedIn: 'root' });
|
|
27940
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AllowedNetsServiceFactory, decorators: [{
|
|
27941
|
+
type: Injectable,
|
|
27942
|
+
args: [{
|
|
27943
|
+
providedIn: 'root'
|
|
27944
|
+
}]
|
|
27945
|
+
}], ctorParameters: function () { return [{ type: ProcessService }, { type: PetriNetResourceService }, { type: ConfigurationService }, { type: LoggerService }]; } });
|
|
27946
|
+
|
|
27947
|
+
class BaseAllowedNetsService {
|
|
27948
|
+
constructor() {
|
|
27949
|
+
this._baseAllowedNets = new BehaviorSubject([]);
|
|
27950
|
+
}
|
|
27951
|
+
ngOnDestroy() {
|
|
27952
|
+
this._baseAllowedNets.complete();
|
|
27953
|
+
if (this._sub !== undefined) {
|
|
27954
|
+
this._sub.unsubscribe();
|
|
27955
|
+
}
|
|
27956
|
+
}
|
|
27957
|
+
/**
|
|
27958
|
+
* Sets the new identifiers of the base allowed nets
|
|
27959
|
+
* @param nets new base net identifiers
|
|
27960
|
+
*/
|
|
27961
|
+
set allowedNets(nets) {
|
|
27962
|
+
this._baseAllowedNets.next(nets);
|
|
27963
|
+
}
|
|
27964
|
+
/**
|
|
27965
|
+
* @deprecated This method should not be used. Use {@link BaseAllowedNetsService#allowedNets$} instead
|
|
27966
|
+
* @returns the currently set allowed nets. Returns an empty array if no value was set.
|
|
27967
|
+
*/
|
|
27968
|
+
get allowedNets() {
|
|
27969
|
+
return this._baseAllowedNets.value;
|
|
27970
|
+
}
|
|
27971
|
+
/**
|
|
27972
|
+
* Subscribes to the provided `Observable` and forwards the emissions to the baseAllowedNets `Subject`.
|
|
27973
|
+
* If a new `Observable` is set, the previous Subscription is unsubscribed.
|
|
27974
|
+
* @param observableNets an observable emitting the new base net identifiers
|
|
27975
|
+
*/
|
|
27976
|
+
set allowedNets$(observableNets) {
|
|
27977
|
+
if (this._sub !== undefined) {
|
|
27978
|
+
this._sub.unsubscribe();
|
|
27979
|
+
}
|
|
27980
|
+
this._sub = observableNets.subscribe(nets => {
|
|
27981
|
+
this._baseAllowedNets.next(nets);
|
|
27982
|
+
});
|
|
27983
|
+
}
|
|
27984
|
+
/**
|
|
27985
|
+
* @returns an observable that emits the currently set base allowed nets and any subsequent values
|
|
27986
|
+
*/
|
|
27987
|
+
get allowedNets$() {
|
|
27988
|
+
return this._baseAllowedNets.asObservable();
|
|
27989
|
+
}
|
|
27990
|
+
}
|
|
27991
|
+
BaseAllowedNetsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseAllowedNetsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
27992
|
+
BaseAllowedNetsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseAllowedNetsService, providedIn: 'root' });
|
|
27993
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseAllowedNetsService, decorators: [{
|
|
27994
|
+
type: Injectable,
|
|
27995
|
+
args: [{
|
|
27996
|
+
providedIn: 'root'
|
|
27997
|
+
}]
|
|
27998
|
+
}], ctorParameters: function () { return []; } });
|
|
27999
|
+
|
|
28189
28000
|
/**
|
|
28190
28001
|
* This service is able to load the full saved filter including all of its ancestor filters.
|
|
28191
28002
|
*/
|
|
28192
28003
|
class FilterExtractionService {
|
|
28193
|
-
constructor(_filterRepository, _taskResourceService, _log) {
|
|
28004
|
+
constructor(_filterRepository, _taskResourceService, _factory, baseAllowedNets, _log) {
|
|
28194
28005
|
this._filterRepository = _filterRepository;
|
|
28195
28006
|
this._taskResourceService = _taskResourceService;
|
|
28007
|
+
this._factory = _factory;
|
|
28008
|
+
this.baseAllowedNets = baseAllowedNets;
|
|
28196
28009
|
this._log = _log;
|
|
28197
28010
|
}
|
|
28198
|
-
|
|
28199
|
-
const
|
|
28011
|
+
extractAdditionalFilterAllowedNets(dataSection) {
|
|
28012
|
+
const taskRefIndex = getFieldIndexFromDataGroups(dataSection, GroupNavigationConstants.ITEM_FIELD_ID_ADDITIONAL_FILTER_TASKREF);
|
|
28013
|
+
if (taskRefIndex === undefined) {
|
|
28014
|
+
return undefined;
|
|
28015
|
+
}
|
|
28016
|
+
const sliced = dataSection.slice(taskRefIndex.dataGroupIndex + 1);
|
|
28017
|
+
if (sliced.length == 0) {
|
|
28018
|
+
return undefined;
|
|
28019
|
+
}
|
|
28020
|
+
return navigationItemTaskAllowedNetsServiceFactory(this._factory, this.baseAllowedNets, sliced);
|
|
28021
|
+
}
|
|
28022
|
+
extractCompleteAdditionalFilterFromData(dataSection) {
|
|
28023
|
+
const taskRefIndex = getFieldIndexFromDataGroups(dataSection, GroupNavigationConstants.ITEM_FIELD_ID_ADDITIONAL_FILTER_TASKREF);
|
|
28024
|
+
if (taskRefIndex === undefined) {
|
|
28025
|
+
return undefined;
|
|
28026
|
+
}
|
|
28027
|
+
return this.extractCompleteFilterFromData(dataSection.slice(taskRefIndex.dataGroupIndex + 1));
|
|
28028
|
+
}
|
|
28029
|
+
extractCompleteFilterFromData(dataSection, fieldId = UserFilterConstants.FILTER_FIELD_ID) {
|
|
28030
|
+
const filterIndex = getFieldIndexFromDataGroups(dataSection, fieldId);
|
|
28200
28031
|
if (filterIndex === undefined) {
|
|
28201
28032
|
return undefined;
|
|
28202
28033
|
}
|
|
@@ -28208,7 +28039,7 @@ class FilterExtractionService {
|
|
|
28208
28039
|
throw new Error('Filter segment could not be extracted from filter field');
|
|
28209
28040
|
}
|
|
28210
28041
|
const parentFilter = this.extractCompleteFilterFromData(dataSection.slice(filterIndex.dataGroupIndex + 1));
|
|
28211
|
-
if (parentFilter !== undefined) {
|
|
28042
|
+
if (parentFilter !== undefined && parentFilter.type === filterSegment.type) {
|
|
28212
28043
|
return filterSegment.merge(parentFilter, MergeOperator.AND);
|
|
28213
28044
|
}
|
|
28214
28045
|
// Is the filter view rooted?
|
|
@@ -28241,16 +28072,21 @@ class FilterExtractionService {
|
|
|
28241
28072
|
return appOriginFilter;
|
|
28242
28073
|
}
|
|
28243
28074
|
}
|
|
28244
|
-
// the same
|
|
28075
|
+
// the same regex is used in a backend filter process action. Please keep them in sync
|
|
28245
28076
|
FilterExtractionService.UNTABBED_VIEW_ID_EXTRACTOR = '^.*?(-\\d+)?$';
|
|
28246
|
-
FilterExtractionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterExtractionService, deps: [{ token: FilterRepository }, { token: TaskResourceService }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
28077
|
+
FilterExtractionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterExtractionService, deps: [{ token: FilterRepository }, { token: TaskResourceService }, { token: AllowedNetsServiceFactory }, { token: BaseAllowedNetsService }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
28247
28078
|
FilterExtractionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterExtractionService, providedIn: 'root' });
|
|
28248
28079
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterExtractionService, decorators: [{
|
|
28249
28080
|
type: Injectable,
|
|
28250
28081
|
args: [{
|
|
28251
28082
|
providedIn: 'root'
|
|
28252
28083
|
}]
|
|
28253
|
-
}], ctorParameters: function () { return [{ type: FilterRepository }, { type: TaskResourceService }, { type: LoggerService }]; } });
|
|
28084
|
+
}], ctorParameters: function () { return [{ type: FilterRepository }, { type: TaskResourceService }, { type: AllowedNetsServiceFactory }, { type: BaseAllowedNetsService }, { type: LoggerService }]; } });
|
|
28085
|
+
|
|
28086
|
+
/**
|
|
28087
|
+
* Holds component for dynamic routing resolution of group navigation component resolver component by the {@link RoutingBuilderService}.
|
|
28088
|
+
*/
|
|
28089
|
+
const NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT = new InjectionToken('NaeGroupNavigationComponentResolverComponent');
|
|
28254
28090
|
|
|
28255
28091
|
var UriContentType;
|
|
28256
28092
|
(function (UriContentType) {
|
|
@@ -28556,6 +28392,15 @@ class ResultWithAfterActions {
|
|
|
28556
28392
|
}
|
|
28557
28393
|
}
|
|
28558
28394
|
|
|
28395
|
+
/**
|
|
28396
|
+
* Forces a re-render of the tree backed by the datasource
|
|
28397
|
+
*/
|
|
28398
|
+
function refreshTree(tree) {
|
|
28399
|
+
const d = tree.data;
|
|
28400
|
+
tree.data = null;
|
|
28401
|
+
tree.data = d;
|
|
28402
|
+
}
|
|
28403
|
+
|
|
28559
28404
|
class CaseTreeService {
|
|
28560
28405
|
constructor(_caseResourceService, _treeCaseViewService, _taskResourceService, _logger, _processService, _sideMenuService, _translateService, _optionSelectorComponent, _treeConfiguration) {
|
|
28561
28406
|
this._caseResourceService = _caseResourceService;
|
|
@@ -30628,15 +30473,6 @@ class ClausePredicate extends Predicate {
|
|
|
30628
30473
|
}
|
|
30629
30474
|
}
|
|
30630
30475
|
|
|
30631
|
-
/**
|
|
30632
|
-
* Search component search mode
|
|
30633
|
-
*/
|
|
30634
|
-
var SearchMode;
|
|
30635
|
-
(function (SearchMode) {
|
|
30636
|
-
SearchMode[SearchMode["FULLTEXT"] = 0] = "FULLTEXT";
|
|
30637
|
-
SearchMode[SearchMode["ADVANCED"] = 1] = "ADVANCED";
|
|
30638
|
-
})(SearchMode || (SearchMode = {}));
|
|
30639
|
-
|
|
30640
30476
|
/**
|
|
30641
30477
|
* This service is used to signal to inputs in advanced search components, whether they should autofocus, or not.
|
|
30642
30478
|
*
|
|
@@ -32243,6 +32079,26 @@ function navigationItemTaskCategoryFactory(categoryResolverService, navigationIt
|
|
|
32243
32079
|
return cats;
|
|
32244
32080
|
}
|
|
32245
32081
|
|
|
32082
|
+
function navigationItemCaseViewDefaultHeadersFactory(navigationItemTaskData) {
|
|
32083
|
+
return navigationItemDefaultHeadersFactory(navigationItemTaskData, GroupNavigationConstants.ITEM_FIELD_ID_USE_CASE_DEFAULT_HEADERS, GroupNavigationConstants.ITEM_FIELD_ID_CASE_DEFAULT_HEADERS);
|
|
32084
|
+
}
|
|
32085
|
+
function navigationItemTaskViewDefaultHeadersFactory(navigationItemTaskData) {
|
|
32086
|
+
return navigationItemDefaultHeadersFactory(navigationItemTaskData, GroupNavigationConstants.ITEM_FIELD_ID_USE_TASK_DEFAULT_HEADERS, GroupNavigationConstants.ITEM_FIELD_ID_TASK_DEFAULT_HEADERS);
|
|
32087
|
+
}
|
|
32088
|
+
function navigationItemDefaultHeadersFactory(navigationItemTaskData, useFieldId, defaultHeadersFieldId) {
|
|
32089
|
+
const isUse = extractFieldValueFromData(navigationItemTaskData, useFieldId);
|
|
32090
|
+
if (isUse) {
|
|
32091
|
+
const defaultHeaders = extractFieldValueFromData(navigationItemTaskData, defaultHeadersFieldId);
|
|
32092
|
+
if (defaultHeaders === undefined || defaultHeaders === "") {
|
|
32093
|
+
return undefined;
|
|
32094
|
+
}
|
|
32095
|
+
return defaultHeaders.split(',');
|
|
32096
|
+
}
|
|
32097
|
+
else {
|
|
32098
|
+
return undefined;
|
|
32099
|
+
}
|
|
32100
|
+
}
|
|
32101
|
+
|
|
32246
32102
|
class IsEmptyPipe {
|
|
32247
32103
|
/**
|
|
32248
32104
|
* Check if is value is empty.
|
|
@@ -33392,129 +33248,520 @@ class TestConfigurationService extends ConfigurationService {
|
|
|
33392
33248
|
groupNavigationRoute: 'config-route'
|
|
33393
33249
|
}
|
|
33394
33250
|
}
|
|
33395
|
-
});
|
|
33251
|
+
});
|
|
33252
|
+
}
|
|
33253
|
+
}
|
|
33254
|
+
|
|
33255
|
+
const TestCaseViewAllowedNetsFactory = (factory) => {
|
|
33256
|
+
return factory.createFromConfig('cases');
|
|
33257
|
+
};
|
|
33258
|
+
const TestTaskViewAllowedNetsFactory = (factory) => {
|
|
33259
|
+
return factory.createFromConfig('task');
|
|
33260
|
+
};
|
|
33261
|
+
const TestNoAllowedNetsFactory = (factory) => {
|
|
33262
|
+
return factory.createFromArray([]);
|
|
33263
|
+
};
|
|
33264
|
+
const TestCaseBaseFilterProvider = () => {
|
|
33265
|
+
return {
|
|
33266
|
+
filter: SimpleFilter.emptyCaseFilter()
|
|
33267
|
+
};
|
|
33268
|
+
};
|
|
33269
|
+
const TestTaskBaseFilterProvider = () => {
|
|
33270
|
+
return {
|
|
33271
|
+
filter: SimpleFilter.emptyTaskFilter()
|
|
33272
|
+
};
|
|
33273
|
+
};
|
|
33274
|
+
|
|
33275
|
+
class TestViewService extends ViewService {
|
|
33276
|
+
constructor(config, router, logger) {
|
|
33277
|
+
super([], config, router, logger);
|
|
33278
|
+
}
|
|
33279
|
+
}
|
|
33280
|
+
TestViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService, deps: [{ token: ConfigurationService }, { token: i2$3.Router }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
33281
|
+
TestViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService });
|
|
33282
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService, decorators: [{
|
|
33283
|
+
type: Injectable
|
|
33284
|
+
}], ctorParameters: function () { return [{ type: ConfigurationService }, { type: i2$3.Router }, { type: LoggerService }]; } });
|
|
33285
|
+
|
|
33286
|
+
/**
|
|
33287
|
+
* A utility class that mock any pageable endpoint that takes one parameter
|
|
33288
|
+
*/
|
|
33289
|
+
class MockEndpoint {
|
|
33290
|
+
constructor() {
|
|
33291
|
+
/**
|
|
33292
|
+
* The content that is queries by the requests.
|
|
33293
|
+
*/
|
|
33294
|
+
this.content = [];
|
|
33295
|
+
}
|
|
33296
|
+
/**
|
|
33297
|
+
* @param filter - a filtering argument. This mock ignores it.
|
|
33298
|
+
* @param params - pagination configuration. The mock extracts the `size` and `page` property to format the result properly.
|
|
33299
|
+
* @returns an `Observable` containing a properly formatted {@link Page} object.
|
|
33300
|
+
*
|
|
33301
|
+
* The `pagination` attributes are filled according to the request and the endpoints [content]{@link MockEndpoint#content}.
|
|
33302
|
+
*
|
|
33303
|
+
* If an empty {@link Page} should be returned the returned object has its `content` attribute set to some object
|
|
33304
|
+
* (to match backend and resource service behavior).
|
|
33305
|
+
* Otherwise the `content` attribute contains the corresponding subsection fo the [content]{@link MockEndpoint#content} array.
|
|
33306
|
+
*/
|
|
33307
|
+
search(filter, params) {
|
|
33308
|
+
const rp = this.getPagination(params);
|
|
33309
|
+
const result = this.content.slice(rp.pageSize * rp.pageNumber, rp.pageSize * (rp.pageNumber + 1));
|
|
33310
|
+
const resultPage = {
|
|
33311
|
+
pagination: {
|
|
33312
|
+
size: result.length,
|
|
33313
|
+
totalElements: this.content.length,
|
|
33314
|
+
totalPages: Math.ceil(this.content.length / rp.pageSize),
|
|
33315
|
+
number: rp.pageNumber
|
|
33316
|
+
}
|
|
33317
|
+
};
|
|
33318
|
+
Object.assign(resultPage, { content: result.length !== 0 ? result : {} });
|
|
33319
|
+
return of(resultPage);
|
|
33320
|
+
}
|
|
33321
|
+
getPagination(params) {
|
|
33322
|
+
return {
|
|
33323
|
+
pageSize: parseInt(params.get(PaginationParams.PAGE_SIZE), 10),
|
|
33324
|
+
pageNumber: parseInt(params.get(PaginationParams.PAGE_NUMBER), 10)
|
|
33325
|
+
};
|
|
33326
|
+
}
|
|
33327
|
+
}
|
|
33328
|
+
|
|
33329
|
+
/**
|
|
33330
|
+
* A module that provides the most common test dependencies, so that they don't have to be provided in each test.
|
|
33331
|
+
*
|
|
33332
|
+
* Provides the following:
|
|
33333
|
+
* - {@link AuthenticationMethodService} replaced with {@link MockAuthenticationMethodService}
|
|
33334
|
+
* - {@link ConfigurationService} replaced with {@link TestConfigurationService}
|
|
33335
|
+
*
|
|
33336
|
+
* Imports the following:
|
|
33337
|
+
* - [HttpClientTestingModule]{@link https://angular.io/api/common/http/testing/HttpClientTestingModule}
|
|
33338
|
+
*/
|
|
33339
|
+
class TestMockDependenciesModule {
|
|
33340
|
+
}
|
|
33341
|
+
TestMockDependenciesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestMockDependenciesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
33342
|
+
TestMockDependenciesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestMockDependenciesModule, imports: [HttpClientTestingModule] });
|
|
33343
|
+
TestMockDependenciesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestMockDependenciesModule, providers: [
|
|
33344
|
+
{ provide: AuthenticationMethodService, useClass: MockAuthenticationMethodService },
|
|
33345
|
+
{ provide: ConfigurationService, useClass: TestConfigurationService }
|
|
33346
|
+
], imports: [[
|
|
33347
|
+
HttpClientTestingModule
|
|
33348
|
+
]] });
|
|
33349
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestMockDependenciesModule, decorators: [{
|
|
33350
|
+
type: NgModule,
|
|
33351
|
+
args: [{
|
|
33352
|
+
declarations: [],
|
|
33353
|
+
imports: [
|
|
33354
|
+
HttpClientTestingModule
|
|
33355
|
+
],
|
|
33356
|
+
providers: [
|
|
33357
|
+
{ provide: AuthenticationMethodService, useClass: MockAuthenticationMethodService },
|
|
33358
|
+
{ provide: ConfigurationService, useClass: TestConfigurationService }
|
|
33359
|
+
]
|
|
33360
|
+
}]
|
|
33361
|
+
}] });
|
|
33362
|
+
|
|
33363
|
+
/**
|
|
33364
|
+
* Mock the {@link ProfileService}. By default all responses are successful. Responses can be customised.
|
|
33365
|
+
*/
|
|
33366
|
+
class MockProfileService {
|
|
33367
|
+
constructor() {
|
|
33368
|
+
this.changePasswordResponse = of({ success: 'success' });
|
|
33369
|
+
}
|
|
33370
|
+
changePassword(change) {
|
|
33371
|
+
return this.changePasswordResponse;
|
|
33372
|
+
}
|
|
33373
|
+
}
|
|
33374
|
+
|
|
33375
|
+
class ImportToAdd {
|
|
33376
|
+
constructor(className, fileImportPath) {
|
|
33377
|
+
this.className = className;
|
|
33378
|
+
this.fileImportPath = fileImportPath;
|
|
33379
|
+
}
|
|
33380
|
+
}
|
|
33381
|
+
|
|
33382
|
+
/**
|
|
33383
|
+
* @license
|
|
33384
|
+
* Copyright Google Inc. All Rights Reserved.
|
|
33385
|
+
*
|
|
33386
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
33387
|
+
* found in the LICENSE file at https://angular.io/license
|
|
33388
|
+
*
|
|
33389
|
+
* File copied from: angular_devkit/core/src/utils/strings.ts
|
|
33390
|
+
*/
|
|
33391
|
+
const STRING_DASHERIZE_REGEXP = (/[ _]/g);
|
|
33392
|
+
const STRING_DECAMELIZE_REGEXP = (/([a-z\d])([A-Z])/g);
|
|
33393
|
+
const STRING_CAMELIZE_REGEXP = (/(-|_|\.|\s)+(.)?/g);
|
|
33394
|
+
const STRING_UNDERSCORE_REGEXP_1 = (/([a-z\d])([A-Z]+)/g);
|
|
33395
|
+
const STRING_UNDERSCORE_REGEXP_2 = (/-|\s+/g);
|
|
33396
|
+
/**
|
|
33397
|
+
* Converts a camelized string into all lower case separated by underscores.
|
|
33398
|
+
*
|
|
33399
|
+
* ```javascript
|
|
33400
|
+
* decamelize('innerHTML'); // 'inner_html'
|
|
33401
|
+
* decamelize('action_name'); // 'action_name'
|
|
33402
|
+
* decamelize('css-class-name'); // 'css-class-name'
|
|
33403
|
+
* decamelize('my favorite items'); // 'my favorite items'
|
|
33404
|
+
* ```
|
|
33405
|
+
* @method decamelize
|
|
33406
|
+
* @param str The string to decamelize.
|
|
33407
|
+
* @return the decamelized string.
|
|
33408
|
+
*/
|
|
33409
|
+
function decamelize(str) {
|
|
33410
|
+
return str.replace(STRING_DECAMELIZE_REGEXP, '$1_$2').toLowerCase();
|
|
33411
|
+
}
|
|
33412
|
+
/**
|
|
33413
|
+
* Replaces underscores, spaces, or camelCase with dashes.
|
|
33414
|
+
* ```javascript
|
|
33415
|
+
* dasherize('innerHTML'); // 'inner-html'
|
|
33416
|
+
* dasherize('action_name'); // 'action-name'
|
|
33417
|
+
* dasherize('css-class-name'); // 'css-class-name'
|
|
33418
|
+
* dasherize('my favorite items'); // 'my-favorite-items'
|
|
33419
|
+
* ```
|
|
33420
|
+
* @method dasherize
|
|
33421
|
+
* @param str The string to dasherize.
|
|
33422
|
+
* @return the dasherized string.
|
|
33423
|
+
*/
|
|
33424
|
+
function dasherize(str) {
|
|
33425
|
+
return decamelize(str).replace(STRING_DASHERIZE_REGEXP, '-');
|
|
33426
|
+
}
|
|
33427
|
+
/**
|
|
33428
|
+
* Returns the lowerCamelCase form of a string.
|
|
33429
|
+
* ```javascript
|
|
33430
|
+
* camelize('innerHTML'); // 'innerHTML'
|
|
33431
|
+
* camelize('action_name'); // 'actionName'
|
|
33432
|
+
* camelize('css-class-name'); // 'cssClassName'
|
|
33433
|
+
* camelize('my favorite items'); // 'myFavoriteItems'
|
|
33434
|
+
* camelize('My Favorite Items'); // 'myFavoriteItems'
|
|
33435
|
+
* ```
|
|
33436
|
+
* @method camelize
|
|
33437
|
+
* @param str The string to camelize.
|
|
33438
|
+
* @return the camelized string.
|
|
33439
|
+
*/
|
|
33440
|
+
function camelize(str) {
|
|
33441
|
+
return str
|
|
33442
|
+
.replace(STRING_CAMELIZE_REGEXP, (_match, _separator, chr) => {
|
|
33443
|
+
return chr ? chr.toUpperCase() : '';
|
|
33444
|
+
})
|
|
33445
|
+
.replace(/^([A-Z])/, (match) => match.toLowerCase());
|
|
33446
|
+
}
|
|
33447
|
+
/**
|
|
33448
|
+
* Returns the UpperCamelCase form of a string.
|
|
33449
|
+
* ```javascript
|
|
33450
|
+
* 'innerHTML'.classify(); // 'InnerHTML'
|
|
33451
|
+
* 'action_name'.classify(); // 'ActionName'
|
|
33452
|
+
* 'css-class-name'.classify(); // 'CssClassName'
|
|
33453
|
+
* 'my favorite items'.classify(); // 'MyFavoriteItems'
|
|
33454
|
+
* ```
|
|
33455
|
+
* @method classify
|
|
33456
|
+
* @param str the string to classify
|
|
33457
|
+
* @return the classified string
|
|
33458
|
+
*/
|
|
33459
|
+
function classify(str) {
|
|
33460
|
+
return str.split('.').map(part => capitalize(camelize(part))).join('.');
|
|
33461
|
+
}
|
|
33462
|
+
/**
|
|
33463
|
+
* More general than decamelize. Returns the lower\_case\_and\_underscored
|
|
33464
|
+
* form of a string.
|
|
33465
|
+
* ```javascript
|
|
33466
|
+
* 'innerHTML'.underscore(); // 'inner_html'
|
|
33467
|
+
* 'action_name'.underscore(); // 'action_name'
|
|
33468
|
+
* 'css-class-name'.underscore(); // 'css_class_name'
|
|
33469
|
+
* 'my favorite items'.underscore(); // 'my_favorite_items'
|
|
33470
|
+
* ```
|
|
33471
|
+
* @method underscore
|
|
33472
|
+
* @param str The string to underscore.
|
|
33473
|
+
* @return the underscored string.
|
|
33474
|
+
*/
|
|
33475
|
+
function underscore(str) {
|
|
33476
|
+
return str
|
|
33477
|
+
.replace(STRING_UNDERSCORE_REGEXP_1, '$1_$2')
|
|
33478
|
+
.replace(STRING_UNDERSCORE_REGEXP_2, '_')
|
|
33479
|
+
.toLowerCase();
|
|
33480
|
+
}
|
|
33481
|
+
/**
|
|
33482
|
+
* Returns the Capitalized form of a string
|
|
33483
|
+
* ```javascript
|
|
33484
|
+
* 'innerHTML'.capitalize() // 'InnerHTML'
|
|
33485
|
+
* 'action_name'.capitalize() // 'Action_name'
|
|
33486
|
+
* 'css-class-name'.capitalize() // 'Css-class-name'
|
|
33487
|
+
* 'my favorite items'.capitalize() // 'My favorite items'
|
|
33488
|
+
* ```
|
|
33489
|
+
* @method capitalize
|
|
33490
|
+
* @param str The string to capitalize.
|
|
33491
|
+
* @return The capitalized string.
|
|
33492
|
+
*/
|
|
33493
|
+
function capitalize(str) {
|
|
33494
|
+
return str.charAt(0).toUpperCase() + str.substr(1);
|
|
33495
|
+
}
|
|
33496
|
+
/**
|
|
33497
|
+
* Calculate the levenshtein distance of two strings.
|
|
33498
|
+
* See https://en.wikipedia.org/wiki/Levenshtein_distance.
|
|
33499
|
+
* Based off https://gist.github.com/andrei-m/982927 (for using the faster dynamic programming
|
|
33500
|
+
* version).
|
|
33501
|
+
*
|
|
33502
|
+
* @param a String a.
|
|
33503
|
+
* @param b String b.
|
|
33504
|
+
* @returns A number that represents the distance between the two strings. The greater the number
|
|
33505
|
+
* the more distant the strings are from each others.
|
|
33506
|
+
*/
|
|
33507
|
+
function levenshtein(a, b) {
|
|
33508
|
+
if (a.length === 0) {
|
|
33509
|
+
return b.length;
|
|
33510
|
+
}
|
|
33511
|
+
if (b.length === 0) {
|
|
33512
|
+
return a.length;
|
|
33513
|
+
}
|
|
33514
|
+
const matrix = [];
|
|
33515
|
+
// increment along the first column of each row
|
|
33516
|
+
for (let i = 0; i <= b.length; i++) {
|
|
33517
|
+
matrix[i] = [i];
|
|
33518
|
+
}
|
|
33519
|
+
// increment each column in the first row
|
|
33520
|
+
for (let j = 0; j <= a.length; j++) {
|
|
33521
|
+
matrix[0][j] = j;
|
|
33522
|
+
}
|
|
33523
|
+
// Fill in the rest of the matrix
|
|
33524
|
+
for (let i = 1; i <= b.length; i++) {
|
|
33525
|
+
for (let j = 1; j <= a.length; j++) {
|
|
33526
|
+
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
|
33527
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
33528
|
+
}
|
|
33529
|
+
else {
|
|
33530
|
+
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
|
|
33531
|
+
matrix[i][j - 1] + 1, // insertion
|
|
33532
|
+
matrix[i - 1][j] + 1);
|
|
33533
|
+
}
|
|
33534
|
+
}
|
|
33396
33535
|
}
|
|
33536
|
+
return matrix[b.length][a.length];
|
|
33397
33537
|
}
|
|
33398
33538
|
|
|
33399
|
-
|
|
33400
|
-
|
|
33401
|
-
|
|
33402
|
-
|
|
33403
|
-
|
|
33404
|
-
|
|
33405
|
-
|
|
33406
|
-
|
|
33407
|
-
}
|
|
33408
|
-
|
|
33409
|
-
|
|
33410
|
-
|
|
33411
|
-
|
|
33412
|
-
}
|
|
33413
|
-
|
|
33414
|
-
|
|
33415
|
-
|
|
33416
|
-
|
|
33417
|
-
|
|
33418
|
-
|
|
33419
|
-
|
|
33420
|
-
|
|
33421
|
-
|
|
33539
|
+
class ViewClassInfo extends ImportToAdd {
|
|
33540
|
+
constructor(path, viewType, customComponentName) {
|
|
33541
|
+
super('', '');
|
|
33542
|
+
if (!customComponentName) {
|
|
33543
|
+
this.prefix = ViewClassInfo.convertPathToClassNamePrefix(path);
|
|
33544
|
+
const classSuffix = ViewClassInfo.resolveClassSuffixForView(viewType);
|
|
33545
|
+
this.nameWithoutComponent = `${classify(this.prefix)}${classSuffix}`;
|
|
33546
|
+
this.fileImportPath = `./views/${path}/${this.prefix}-${dasherize(classSuffix)}.component`;
|
|
33547
|
+
}
|
|
33548
|
+
else {
|
|
33549
|
+
this.prefix = '';
|
|
33550
|
+
this.nameWithoutComponent = classify(customComponentName);
|
|
33551
|
+
this.fileImportPath = `./views/${path}/${dasherize(customComponentName)}.component`;
|
|
33552
|
+
}
|
|
33553
|
+
this.className = `${this.nameWithoutComponent}Component`;
|
|
33554
|
+
}
|
|
33555
|
+
static convertPathToClassNamePrefix(path) {
|
|
33556
|
+
const regexDash = /-/g;
|
|
33557
|
+
return path.replace(regexDash, '_').replace(/\//g, '-').toLocaleLowerCase();
|
|
33558
|
+
}
|
|
33559
|
+
static resolveClassSuffixForView(view) {
|
|
33560
|
+
switch (view) {
|
|
33561
|
+
case 'login':
|
|
33562
|
+
return 'Login';
|
|
33563
|
+
case 'tabView':
|
|
33564
|
+
return 'TabView';
|
|
33565
|
+
case 'taskView':
|
|
33566
|
+
return 'TaskView';
|
|
33567
|
+
case 'caseView':
|
|
33568
|
+
return 'CaseView';
|
|
33569
|
+
case 'emptyView':
|
|
33570
|
+
return 'EmptyView';
|
|
33571
|
+
case 'sidenavView':
|
|
33572
|
+
return 'SidenavView';
|
|
33573
|
+
case 'doubleDrawerView':
|
|
33574
|
+
return 'DoubleDrawerView';
|
|
33575
|
+
case 'toolbarView':
|
|
33576
|
+
return 'ToolbarView';
|
|
33577
|
+
case 'sidenavAndToolbarView':
|
|
33578
|
+
return 'SidenavAndToolbarView';
|
|
33579
|
+
case 'groupView':
|
|
33580
|
+
return 'GroupView';
|
|
33581
|
+
case 'dashboard':
|
|
33582
|
+
return 'Dashboard';
|
|
33583
|
+
case 'treeCaseView':
|
|
33584
|
+
return 'TreeCaseView';
|
|
33585
|
+
case 'workflowView':
|
|
33586
|
+
return 'WorkflowView';
|
|
33587
|
+
case 'roleAssignmentView':
|
|
33588
|
+
return 'RoleAssignmentView';
|
|
33589
|
+
case 'ldapRoleAssignmentView':
|
|
33590
|
+
return 'LdapRoleAssignmentView';
|
|
33591
|
+
default:
|
|
33592
|
+
throw new Error(`Unknown view type '${view}'`);
|
|
33593
|
+
}
|
|
33422
33594
|
}
|
|
33423
33595
|
}
|
|
33424
|
-
TestViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService, deps: [{ token: ConfigurationService }, { token: i2$3.Router }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
33425
|
-
TestViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService });
|
|
33426
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService, decorators: [{
|
|
33427
|
-
type: Injectable
|
|
33428
|
-
}], ctorParameters: function () { return [{ type: ConfigurationService }, { type: i2$3.Router }, { type: LoggerService }]; } });
|
|
33429
33596
|
|
|
33597
|
+
const NAE_ROUTING_CONFIGURATION_PATH = "configPath";
|
|
33430
33598
|
/**
|
|
33431
|
-
*
|
|
33599
|
+
* Uses the information from nae.json to construct the application's routing
|
|
33432
33600
|
*/
|
|
33433
|
-
class
|
|
33434
|
-
constructor() {
|
|
33435
|
-
|
|
33436
|
-
|
|
33437
|
-
|
|
33438
|
-
this.
|
|
33439
|
-
|
|
33440
|
-
|
|
33441
|
-
|
|
33442
|
-
|
|
33443
|
-
|
|
33444
|
-
|
|
33445
|
-
|
|
33446
|
-
|
|
33447
|
-
* If an empty {@link Page} should be returned the returned object has its `content` attribute set to some object
|
|
33448
|
-
* (to match backend and resource service behavior).
|
|
33449
|
-
* Otherwise the `content` attribute contains the corresponding subsection fo the [content]{@link MockEndpoint#content} array.
|
|
33450
|
-
*/
|
|
33451
|
-
search(filter, params) {
|
|
33452
|
-
const rp = this.getPagination(params);
|
|
33453
|
-
const result = this.content.slice(rp.pageSize * rp.pageNumber, rp.pageSize * (rp.pageNumber + 1));
|
|
33454
|
-
const resultPage = {
|
|
33455
|
-
pagination: {
|
|
33456
|
-
size: result.length,
|
|
33457
|
-
totalElements: this.content.length,
|
|
33458
|
-
totalPages: Math.ceil(this.content.length / rp.pageSize),
|
|
33459
|
-
number: rp.pageNumber
|
|
33601
|
+
class RoutingBuilderService {
|
|
33602
|
+
constructor(router, _configService, _viewService, _logger, _dynamicNavigationRouteService, _groupNavigationComponentResolverComponent) {
|
|
33603
|
+
this._configService = _configService;
|
|
33604
|
+
this._viewService = _viewService;
|
|
33605
|
+
this._logger = _logger;
|
|
33606
|
+
this._dynamicNavigationRouteService = _dynamicNavigationRouteService;
|
|
33607
|
+
this._groupNavigationComponentResolverComponent = _groupNavigationComponentResolverComponent;
|
|
33608
|
+
this._groupNavigationRouteGenerated = false;
|
|
33609
|
+
router.relativeLinkResolution = 'legacy';
|
|
33610
|
+
router.config.splice(0, router.config.length);
|
|
33611
|
+
for (const [pathSegment, view] of Object.entries(_configService.get().views)) {
|
|
33612
|
+
const route = this.constructRouteObject(view, pathSegment);
|
|
33613
|
+
if (route !== undefined) {
|
|
33614
|
+
router.config.push(route);
|
|
33460
33615
|
}
|
|
33461
|
-
}
|
|
33462
|
-
|
|
33463
|
-
return of(resultPage);
|
|
33616
|
+
}
|
|
33617
|
+
router.config.push(...this.defaultRoutesRedirects());
|
|
33464
33618
|
}
|
|
33465
|
-
|
|
33466
|
-
|
|
33467
|
-
|
|
33468
|
-
|
|
33619
|
+
constructRouteObject(view, configPath, ancestors = []) {
|
|
33620
|
+
var _a, _b;
|
|
33621
|
+
const component = this.resolveComponentClass(view, configPath);
|
|
33622
|
+
if (component === undefined) {
|
|
33623
|
+
return undefined;
|
|
33624
|
+
}
|
|
33625
|
+
if (!view.routing) {
|
|
33626
|
+
this._logger.warn(`nae.json configuration is invalid. View at path '${configPath}'` +
|
|
33627
|
+
` must define a 'routing' attribute. Skipping this view for routing generation.`);
|
|
33628
|
+
return undefined;
|
|
33629
|
+
}
|
|
33630
|
+
const route = {
|
|
33631
|
+
path: view.routing.path,
|
|
33632
|
+
data: {
|
|
33633
|
+
[NAE_ROUTING_CONFIGURATION_PATH]: configPath
|
|
33634
|
+
},
|
|
33635
|
+
component
|
|
33469
33636
|
};
|
|
33637
|
+
if (((_a = view === null || view === void 0 ? void 0 : view.layout) === null || _a === void 0 ? void 0 : _a.name) === GroupNavigationConstants.GROUP_NAVIGATION_OUTLET) {
|
|
33638
|
+
if (this._groupNavigationRouteGenerated) {
|
|
33639
|
+
this._logger.warn(`Multiple groupNavigationOutlets are present in nae.json. Duplicate entry found at path ${configPath}`);
|
|
33640
|
+
}
|
|
33641
|
+
else {
|
|
33642
|
+
this._logger.debug(`GroupNavigationOutlet found in nae.json at path '${configPath}'`);
|
|
33643
|
+
}
|
|
33644
|
+
const pathNoParams = route.path;
|
|
33645
|
+
route.path = `${pathNoParams}/:${GroupNavigationConstants.GROUP_NAVIGATION_ROUTER_PARAM}`;
|
|
33646
|
+
route.canActivate = [AuthenticationGuardService];
|
|
33647
|
+
const parentPathSegments = ancestors.map(a => a.path);
|
|
33648
|
+
parentPathSegments.push(pathNoParams);
|
|
33649
|
+
this._dynamicNavigationRouteService.route = parentPathSegments.join('/');
|
|
33650
|
+
this._groupNavigationRouteGenerated = true;
|
|
33651
|
+
return route;
|
|
33652
|
+
}
|
|
33653
|
+
if (view.routing.match !== undefined && view.routing.match) {
|
|
33654
|
+
route['pathMatch'] = 'full';
|
|
33655
|
+
}
|
|
33656
|
+
route['canActivate'] = [];
|
|
33657
|
+
if (view.access === 'private'
|
|
33658
|
+
|| view.access.hasOwnProperty('role')
|
|
33659
|
+
|| view.access.hasOwnProperty('group')
|
|
33660
|
+
|| view.access.hasOwnProperty('authority')) {
|
|
33661
|
+
route['canActivate'].push(AuthenticationGuardService);
|
|
33662
|
+
}
|
|
33663
|
+
if (view.access.hasOwnProperty('role')) {
|
|
33664
|
+
route['canActivate'].push(RoleGuardService);
|
|
33665
|
+
}
|
|
33666
|
+
if (view.access.hasOwnProperty('authority')) {
|
|
33667
|
+
route['canActivate'].push(AuthorityGuardService);
|
|
33668
|
+
}
|
|
33669
|
+
if (view.access.hasOwnProperty('group')) {
|
|
33670
|
+
route['canActivate'].push(GroupGuardService);
|
|
33671
|
+
}
|
|
33672
|
+
if (!!view.children) {
|
|
33673
|
+
route['children'] = [];
|
|
33674
|
+
Object.entries(view.children).forEach(([configPathSegment, childView]) => {
|
|
33675
|
+
// TODO check if routes are constructed correctly regarding empty route segments
|
|
33676
|
+
const childRoute = this.constructRouteObject(childView, `${configPath}/${configPathSegment}`, [...ancestors, route]);
|
|
33677
|
+
if (childRoute !== undefined) {
|
|
33678
|
+
route['children'].push(childRoute);
|
|
33679
|
+
}
|
|
33680
|
+
});
|
|
33681
|
+
}
|
|
33682
|
+
if (((_b = view === null || view === void 0 ? void 0 : view.layout) === null || _b === void 0 ? void 0 : _b.name) === 'tabView') {
|
|
33683
|
+
if (!view.children) {
|
|
33684
|
+
route['children'] = [];
|
|
33685
|
+
}
|
|
33686
|
+
route['children'].push({
|
|
33687
|
+
path: '**',
|
|
33688
|
+
component
|
|
33689
|
+
});
|
|
33690
|
+
}
|
|
33691
|
+
return route;
|
|
33470
33692
|
}
|
|
33471
|
-
|
|
33472
|
-
|
|
33473
|
-
|
|
33474
|
-
|
|
33475
|
-
|
|
33476
|
-
|
|
33477
|
-
|
|
33478
|
-
|
|
33479
|
-
|
|
33480
|
-
|
|
33481
|
-
|
|
33482
|
-
|
|
33483
|
-
|
|
33484
|
-
|
|
33485
|
-
|
|
33486
|
-
|
|
33487
|
-
|
|
33488
|
-
|
|
33489
|
-
|
|
33490
|
-
], imports: [[
|
|
33491
|
-
HttpClientTestingModule
|
|
33492
|
-
]] });
|
|
33493
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestMockDependenciesModule, decorators: [{
|
|
33494
|
-
type: NgModule,
|
|
33495
|
-
args: [{
|
|
33496
|
-
declarations: [],
|
|
33497
|
-
imports: [
|
|
33498
|
-
HttpClientTestingModule
|
|
33499
|
-
],
|
|
33500
|
-
providers: [
|
|
33501
|
-
{ provide: AuthenticationMethodService, useClass: MockAuthenticationMethodService },
|
|
33502
|
-
{ provide: ConfigurationService, useClass: TestConfigurationService }
|
|
33503
|
-
]
|
|
33504
|
-
}]
|
|
33505
|
-
}] });
|
|
33506
|
-
|
|
33507
|
-
/**
|
|
33508
|
-
* Mock the {@link ProfileService}. By default all responses are successful. Responses can be customised.
|
|
33509
|
-
*/
|
|
33510
|
-
class MockProfileService {
|
|
33511
|
-
constructor() {
|
|
33512
|
-
this.changePasswordResponse = of({ success: 'success' });
|
|
33693
|
+
resolveComponentClass(view, configPath) {
|
|
33694
|
+
let result;
|
|
33695
|
+
if (!!view.component) {
|
|
33696
|
+
result = this._viewService.resolveNameToClass(view.component.class);
|
|
33697
|
+
}
|
|
33698
|
+
else if (!!view.layout) {
|
|
33699
|
+
result = this.resolveComponentClassFromLayout(view, configPath);
|
|
33700
|
+
}
|
|
33701
|
+
else {
|
|
33702
|
+
this._logger.warn(`nae.json configuration is invalid. View at path '${configPath}'` +
|
|
33703
|
+
` must define either a 'layout' or a 'component' attribute. Skipping this view for routing generation.`);
|
|
33704
|
+
return undefined;
|
|
33705
|
+
}
|
|
33706
|
+
if (result === undefined) {
|
|
33707
|
+
this._logger.warn(`Some views from nae.json configuration have not been created in the project.` +
|
|
33708
|
+
` Run create-view schematic to rectify this. Skipping this view for routing generation.`);
|
|
33709
|
+
return undefined;
|
|
33710
|
+
}
|
|
33711
|
+
return result;
|
|
33513
33712
|
}
|
|
33514
|
-
|
|
33515
|
-
|
|
33713
|
+
resolveComponentClassFromLayout(view, configPath) {
|
|
33714
|
+
if (view.layout.name === GroupNavigationConstants.GROUP_NAVIGATION_OUTLET) {
|
|
33715
|
+
return this._groupNavigationComponentResolverComponent;
|
|
33716
|
+
}
|
|
33717
|
+
const className = RoutingBuilderService.parseClassNameFromView(view, configPath);
|
|
33718
|
+
return this._viewService.resolveNameToClass(className);
|
|
33719
|
+
}
|
|
33720
|
+
static parseClassNameFromView(view, configPath) {
|
|
33721
|
+
if (!!view.layout.componentName) {
|
|
33722
|
+
return `${classify(view.layout.componentName)}Component`;
|
|
33723
|
+
}
|
|
33724
|
+
else {
|
|
33725
|
+
const classInfo = new ViewClassInfo(configPath, view.layout.name, view.layout.componentName);
|
|
33726
|
+
return classInfo.className;
|
|
33727
|
+
}
|
|
33728
|
+
}
|
|
33729
|
+
defaultRoutesRedirects() {
|
|
33730
|
+
const result = [];
|
|
33731
|
+
const servicesConfig = this._configService.getServicesConfiguration();
|
|
33732
|
+
if (!!servicesConfig && !!servicesConfig.routing) {
|
|
33733
|
+
if (!!servicesConfig.routing.defaultRedirect) {
|
|
33734
|
+
result.push({
|
|
33735
|
+
path: '',
|
|
33736
|
+
redirectTo: servicesConfig.routing.defaultRedirect,
|
|
33737
|
+
pathMatch: 'full'
|
|
33738
|
+
});
|
|
33739
|
+
}
|
|
33740
|
+
if (!!servicesConfig.routing.wildcardRedirect) {
|
|
33741
|
+
result.push({
|
|
33742
|
+
path: '**',
|
|
33743
|
+
redirectTo: servicesConfig.routing.wildcardRedirect
|
|
33744
|
+
});
|
|
33745
|
+
}
|
|
33746
|
+
}
|
|
33747
|
+
return result;
|
|
33516
33748
|
}
|
|
33517
33749
|
}
|
|
33750
|
+
RoutingBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, deps: [{ token: i2$3.Router }, { token: ConfigurationService }, { token: ViewService }, { token: LoggerService }, { token: DynamicNavigationRouteProviderService }, { token: NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
33751
|
+
RoutingBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, providedIn: 'root' });
|
|
33752
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, decorators: [{
|
|
33753
|
+
type: Injectable,
|
|
33754
|
+
args: [{
|
|
33755
|
+
providedIn: 'root'
|
|
33756
|
+
}]
|
|
33757
|
+
}], ctorParameters: function () {
|
|
33758
|
+
return [{ type: i2$3.Router }, { type: ConfigurationService }, { type: ViewService }, { type: LoggerService }, { type: DynamicNavigationRouteProviderService }, { type: i0.Type, decorators: [{
|
|
33759
|
+
type: Optional
|
|
33760
|
+
}, {
|
|
33761
|
+
type: Inject,
|
|
33762
|
+
args: [NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT]
|
|
33763
|
+
}] }];
|
|
33764
|
+
} });
|
|
33518
33765
|
|
|
33519
33766
|
/* SERVICES */
|
|
33520
33767
|
|
|
@@ -34885,176 +35132,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
34885
35132
|
type: Input
|
|
34886
35133
|
}] } });
|
|
34887
35134
|
|
|
34888
|
-
class BaseAllowedNetsService {
|
|
34889
|
-
constructor() {
|
|
34890
|
-
this._baseAllowedNets = new BehaviorSubject([]);
|
|
34891
|
-
}
|
|
34892
|
-
ngOnDestroy() {
|
|
34893
|
-
this._baseAllowedNets.complete();
|
|
34894
|
-
if (this._sub !== undefined) {
|
|
34895
|
-
this._sub.unsubscribe();
|
|
34896
|
-
}
|
|
34897
|
-
}
|
|
34898
|
-
/**
|
|
34899
|
-
* Sets the new identifiers of the base allowed nets
|
|
34900
|
-
* @param nets new base net identifiers
|
|
34901
|
-
*/
|
|
34902
|
-
set allowedNets(nets) {
|
|
34903
|
-
this._baseAllowedNets.next(nets);
|
|
34904
|
-
}
|
|
34905
|
-
/**
|
|
34906
|
-
* @deprecated This method should not be used. Use {@link BaseAllowedNetsService#allowedNets$} instead
|
|
34907
|
-
* @returns the currently set allowed nets. Returns an empty array if no value was set.
|
|
34908
|
-
*/
|
|
34909
|
-
get allowedNets() {
|
|
34910
|
-
return this._baseAllowedNets.value;
|
|
34911
|
-
}
|
|
34912
|
-
/**
|
|
34913
|
-
* Subscribes to the provided `Observable` and forwards the emissions to the baseAllowedNets `Subject`.
|
|
34914
|
-
* If a new `Observable` is set, the previous Subscription is unsubscribed.
|
|
34915
|
-
* @param observableNets an observable emitting the new base net identifiers
|
|
34916
|
-
*/
|
|
34917
|
-
set allowedNets$(observableNets) {
|
|
34918
|
-
if (this._sub !== undefined) {
|
|
34919
|
-
this._sub.unsubscribe();
|
|
34920
|
-
}
|
|
34921
|
-
this._sub = observableNets.subscribe(nets => {
|
|
34922
|
-
this._baseAllowedNets.next(nets);
|
|
34923
|
-
});
|
|
34924
|
-
}
|
|
34925
|
-
/**
|
|
34926
|
-
* @returns an observable that emits the currently set base allowed nets and any subsequent values
|
|
34927
|
-
*/
|
|
34928
|
-
get allowedNets$() {
|
|
34929
|
-
return this._baseAllowedNets.asObservable();
|
|
34930
|
-
}
|
|
34931
|
-
}
|
|
34932
|
-
BaseAllowedNetsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseAllowedNetsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
34933
|
-
BaseAllowedNetsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseAllowedNetsService, providedIn: 'root' });
|
|
34934
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseAllowedNetsService, decorators: [{
|
|
34935
|
-
type: Injectable,
|
|
34936
|
-
args: [{
|
|
34937
|
-
providedIn: 'root'
|
|
34938
|
-
}]
|
|
34939
|
-
}], ctorParameters: function () { return []; } });
|
|
34940
|
-
|
|
34941
|
-
function addAllowedNets(allowedNets, existingAllowedNets) {
|
|
34942
|
-
if (!!allowedNets && allowedNets.length > 0) {
|
|
34943
|
-
existingAllowedNets.next([...allowedNets]);
|
|
34944
|
-
}
|
|
34945
|
-
}
|
|
34946
|
-
/**
|
|
34947
|
-
* Convenience method that can be used as an allowed nets factory for tabbed task views.
|
|
34948
|
-
* If no allowed nets are provided in the injected data then an {@link AllowedNetsService} with no allowed nets is created.
|
|
34949
|
-
* It has a dependency on this class and {@link NAE_TAB_DATA} injection token.
|
|
34950
|
-
*/
|
|
34951
|
-
function tabbedAllowedNetsServiceFactory(factory, tabData) {
|
|
34952
|
-
var _a;
|
|
34953
|
-
return factory.createFromArray((_a = tabData === null || tabData === void 0 ? void 0 : tabData.allowedNets) !== null && _a !== void 0 ? _a : []);
|
|
34954
|
-
}
|
|
34955
|
-
/**
|
|
34956
|
-
* Convenience method that can be used as an allowed nets factory for views that are loaded from filter process instances.
|
|
34957
|
-
* It has a dependency on this class and {@link NAE_NAVIGATION_ITEM_TASK_DATA} injection token.
|
|
34958
|
-
*/
|
|
34959
|
-
function navigationItemTaskAllowedNetsServiceFactory(factory, baseAllowedNets, navigationItemTaskData) {
|
|
34960
|
-
const filterField = getFieldFromDataGroups(navigationItemTaskData, UserFilterConstants.FILTER_FIELD_ID);
|
|
34961
|
-
const allowedNetsField = getFieldFromDataGroups(navigationItemTaskData, UserFilterConstants.ALLOWED_NETS_FIELD_ID);
|
|
34962
|
-
if (filterField === undefined) {
|
|
34963
|
-
throw new Error(`Provided navigation item task data does not contain a filter field with ID '${UserFilterConstants.FILTER_FIELD_ID}'! Allowed nets cannot be generated from it!`);
|
|
34964
|
-
}
|
|
34965
|
-
const nets = new BehaviorSubject(Array.from(new Set([...filterField.allowedNets])));
|
|
34966
|
-
if (filterField.filterMetadata.inheritAllowedNets) {
|
|
34967
|
-
baseAllowedNets.allowedNets$.subscribe(allowedNets => {
|
|
34968
|
-
const netSet = new Set(allowedNets);
|
|
34969
|
-
nets.next(Array.from(netSet));
|
|
34970
|
-
});
|
|
34971
|
-
}
|
|
34972
|
-
if (!!allowedNetsField) {
|
|
34973
|
-
addAllowedNets(allowedNetsField.value, nets);
|
|
34974
|
-
allowedNetsField.valueChanges().subscribe(allowedNets => {
|
|
34975
|
-
addAllowedNets(allowedNetsField.value, nets);
|
|
34976
|
-
});
|
|
34977
|
-
}
|
|
34978
|
-
return factory.createFromObservable(nets.asObservable());
|
|
34979
|
-
}
|
|
34980
|
-
/**
|
|
34981
|
-
* Simplifies the creation of {@link AllowedNetsService} instances
|
|
34982
|
-
*/
|
|
34983
|
-
class AllowedNetsServiceFactory {
|
|
34984
|
-
constructor(_processService, _petriNetResource, _configService, _log) {
|
|
34985
|
-
this._processService = _processService;
|
|
34986
|
-
this._petriNetResource = _petriNetResource;
|
|
34987
|
-
this._configService = _configService;
|
|
34988
|
-
this._log = _log;
|
|
34989
|
-
}
|
|
34990
|
-
/**
|
|
34991
|
-
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
34992
|
-
* @returns an instance of {@link AllowedNetsService} with all nets set as the `allowedNets`
|
|
34993
|
-
*/
|
|
34994
|
-
createWithAllNets() {
|
|
34995
|
-
return new AllowedNetsService(this._petriNetResource.getAll().pipe(switchMap(nets => {
|
|
34996
|
-
if (nets && Array.isArray(nets)) {
|
|
34997
|
-
return of(nets.map(n => n.identifier));
|
|
34998
|
-
}
|
|
34999
|
-
else {
|
|
35000
|
-
return of([]);
|
|
35001
|
-
}
|
|
35002
|
-
})), this._processService);
|
|
35003
|
-
}
|
|
35004
|
-
/**
|
|
35005
|
-
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
35006
|
-
* @param allowedNetsIdentifiers identifiers of the allowed nets
|
|
35007
|
-
*/
|
|
35008
|
-
createFromArray(allowedNetsIdentifiers) {
|
|
35009
|
-
return new AllowedNetsService(of(allowedNetsIdentifiers), this._processService);
|
|
35010
|
-
}
|
|
35011
|
-
/**
|
|
35012
|
-
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
35013
|
-
* @param webViewPath path to the view as specified in its configuration. No leading backslash.
|
|
35014
|
-
* Allowed nets are loaded from the configuration of the view.
|
|
35015
|
-
*/
|
|
35016
|
-
createFromConfig(webViewPath) {
|
|
35017
|
-
var _a, _b;
|
|
35018
|
-
const view = this._configService.getViewByPath(webViewPath);
|
|
35019
|
-
if (((_a = view === null || view === void 0 ? void 0 : view.layout) === null || _a === void 0 ? void 0 : _a.params) === undefined) {
|
|
35020
|
-
throw new Error(`Can't load configuration for view with webPath: '${webViewPath}'`);
|
|
35021
|
-
}
|
|
35022
|
-
const viewParams = view.layout.params;
|
|
35023
|
-
if (viewParams.allowedNets === undefined) {
|
|
35024
|
-
this._log.warn(`No 'allowedNets' provided for view with webPath '${webViewPath}'`);
|
|
35025
|
-
}
|
|
35026
|
-
return new AllowedNetsService(of((_b = viewParams.allowedNets) !== null && _b !== void 0 ? _b : []), this._processService);
|
|
35027
|
-
}
|
|
35028
|
-
/**
|
|
35029
|
-
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
35030
|
-
* @param netIdentifiers$ observable containing the identifiers of the allowed nets.
|
|
35031
|
-
* When a new value is emitted the allowed nets will be updated.
|
|
35032
|
-
*/
|
|
35033
|
-
createFromObservable(netIdentifiers$) {
|
|
35034
|
-
return new AllowedNetsService(netIdentifiers$, this._processService);
|
|
35035
|
-
}
|
|
35036
|
-
/**
|
|
35037
|
-
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
35038
|
-
* @param filterCase a filter process instance
|
|
35039
|
-
* Allowed nets are set from filter process immediate data
|
|
35040
|
-
*/
|
|
35041
|
-
createFromFilterCase(filterCase) {
|
|
35042
|
-
const filterData = getImmediateData(filterCase, UserFilterConstants.FILTER_FIELD_ID);
|
|
35043
|
-
if (filterData === undefined) {
|
|
35044
|
-
throw new Error(`Cannot get filter from case '${filterCase.title}' with id '${filterCase.stringId}'`);
|
|
35045
|
-
}
|
|
35046
|
-
return new AllowedNetsService(of(filterData.allowedNets), this._processService);
|
|
35047
|
-
}
|
|
35048
|
-
}
|
|
35049
|
-
AllowedNetsServiceFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AllowedNetsServiceFactory, deps: [{ token: ProcessService }, { token: PetriNetResourceService }, { token: ConfigurationService }, { token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
35050
|
-
AllowedNetsServiceFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AllowedNetsServiceFactory, providedIn: 'root' });
|
|
35051
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AllowedNetsServiceFactory, decorators: [{
|
|
35052
|
-
type: Injectable,
|
|
35053
|
-
args: [{
|
|
35054
|
-
providedIn: 'root'
|
|
35055
|
-
}]
|
|
35056
|
-
}], ctorParameters: function () { return [{ type: ProcessService }, { type: PetriNetResourceService }, { type: ConfigurationService }, { type: LoggerService }]; } });
|
|
35057
|
-
|
|
35058
35135
|
/* SERVICES */
|
|
35059
35136
|
|
|
35060
35137
|
/* EVENT OUTCOMES */
|
|
@@ -35100,5 +35177,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
35100
35177
|
* Generated bundle index. Do not edit.
|
|
35101
35178
|
*/
|
|
35102
35179
|
|
|
35103
|
-
export { AbstractAddChildNodeComponent, AbstractAdvancedSearchComponent, AbstractAuthenticationOverlayComponent, AbstractBaseDataFieldComponent, AbstractBooleanDefaultFieldComponent, AbstractBooleanFieldComponent, AbstractBreadcrumbsComponent, AbstractButtonDefaultFieldComponent, AbstractButtonFieldComponent, AbstractCaseListComponent, AbstractCaseListPaginatorComponent, AbstractCasePanelComponent, AbstractCaseRefDefaultComponent, AbstractCaseViewComponent, AbstractChangePasswordComponent, AbstractCountCardComponent, AbstractCurrencyNumberFieldComponent, AbstractCustomCardComponent, AbstractDashboardBarChartTextFieldComponent, AbstractDashboardContentComponent, AbstractDashboardIframeTextFieldComponent, AbstractDashboardLineChartTextFieldComponent, AbstractDashboardPieChartTextFieldComponent, AbstractDashboardPortalTextFieldComponent, AbstractDashboardTextFieldComponent, AbstractDataFieldTemplateComponent, AbstractDateDefaultFieldComponent, AbstractDateFieldComponent, AbstractDateTimeDefaultFieldComponent, AbstractDateTimeFieldComponent, AbstractDefaultNumberFieldComponent, AbstractEditModeComponent, AbstractEmailSubmissionFormComponent, AbstractEnumerationAutocompleteDynamicFieldComponent, AbstractEnumerationAutocompleteSelectFieldComponent, AbstractEnumerationFieldComponent, AbstractEnumerationIconFieldComponent, AbstractEnumerationListFieldComponent, AbstractEnumerationSelectFieldComponent, AbstractEnumerationStepperFieldComponent, AbstractFieldComponentResolverComponent, AbstractFileDefaultFieldComponent, AbstractFileFieldComponent, AbstractFileListDefaultFieldComponent, AbstractFileListFieldComponent, AbstractFilterDefaultFieldComponent, AbstractFilterFieldComponent, AbstractFilterFieldContentComponent, AbstractFilterFieldTabViewComponent, AbstractFilterFieldTabViewContentComponent, AbstractFilterSelectorComponent, AbstractFilterSelectorListItemComponent, AbstractForgottenPasswordComponent, AbstractFulltextSearchComponent, AbstractGroupNavigationComponentResolverComponent, AbstractHeaderComponent, AbstractHeaderService, AbstractHtmlTextareaFieldComponent, AbstractI18nDividerFieldComponent, AbstractI18nErrorsComponent, AbstractI18nFieldComponent, AbstractI18nTextFieldComponent, AbstractIframeCardComponent, AbstractImmediateFilterTextComponent, AbstractImmediateFilterTextContentComponent, AbstractImportNetComponent, AbstractInternalLinkComponent, AbstractLanguageSelectorComponent, AbstractLdapGroupRoleAssignmentComponent, AbstractLegalNoticeComponent, AbstractLoadFilterComponent, AbstractLoadingModeComponent, AbstractLoggerService, AbstractLoginFormComponent, AbstractLogoutShortcutComponent, AbstractMultiUserAssignComponent, AbstractMultiUserAssignItemComponent, AbstractMultiUserAssignListComponent, AbstractMultichoiceAutocompleteFieldComponentComponent, AbstractMultichoiceFieldComponent, AbstractMultichoiceListFieldComponent, AbstractMultichoiceSelectFieldComponent, AbstractNavigationDoubleDrawerComponent, AbstractNavigationDrawerComponent, AbstractNavigationRailComponent, AbstractNavigationTreeComponent, AbstractNewCaseComponent, AbstractNumberErrorsComponent, AbstractNumberFieldComponent, AbstractOptionSelectorComponent, AbstractPanelComponent, AbstractPanelItemComponent, AbstractPasswordTextFieldComponent, AbstractProfileComponent, AbstractQuickPanelComponent, AbstractRegistrationComponent, AbstractRegistrationFormComponent, AbstractRemoveNodeComponent, AbstractResourceProvider, AbstractResourceService, AbstractRichTextareaFieldComponent, AbstractRoleAssignmentComponent, AbstractSaveFilterComponent, AbstractSearchClauseComponent, AbstractSearchComponent, AbstractSearchConfigurationInputComponent, AbstractSearchModeComponent, AbstractSearchOperandInputComponent, AbstractSearchPredicateComponent, AbstractSessionIdleComponent, AbstractSideMenuContainerComponent, AbstractSimpleTextFieldComponent, AbstractSingleTaskComponent, AbstractSingleTaskViewComponent, AbstractSortModeComponent, AbstractSortableViewComponent, AbstractTabCreationDetectorComponent, AbstractTabViewComponent, AbstractTabbedCaseViewComponent, AbstractTabbedTaskViewComponent, AbstractTaskContentComponent, AbstractTaskListComponent, AbstractTaskListPaginationComponent, AbstractTaskPanelComponent, AbstractTaskRefDashboardFieldComponent, AbstractTaskRefDashboardTileComponent, AbstractTaskRefFieldComponent, AbstractTaskRefListFieldComponent, AbstractTaskViewComponent, AbstractTextErrorsComponent, AbstractTextFieldComponent, AbstractTextareaFieldComponent, AbstractToolbarComponent, AbstractTreeComponent, AbstractTreeTaskContentComponent, AbstractUserAssignComponent, AbstractUserAssignItemComponent, AbstractUserAssignListComponent, AbstractUserCardComponent, AbstractUserDefaultFieldComponent, AbstractUserFieldComponent, AbstractUserImpersonateComponent, AbstractUserInviteComponent, AbstractUserListDefaultFieldComponent, AbstractUserListFieldComponent, AbstractViewWithHeadersComponent, AbstractWorkflowPanelComponent, AbstractWorkflowViewComponent, AccessService, ActiveGroupService, AdvancedSearchComponentInitializationService, AfterAction, AlertDialogComponent, AlertDialogModule, AllowedNetsService, AllowedNetsServiceFactory, AnonymousAuthenticationInterceptor, AnonymousService, AssignPolicy, AssignPolicyService, AssignTaskService, AuthenticationGuardService, AuthenticationInterceptor, AuthenticationMethodService, AuthenticationModule, AuthenticationService, AuthorityGuardService, AutocompleteCategory, BOOLEAN_VALUE_LABEL_ENABLED, BaseAllowedNetsService, BasicAuthenticationService, BooleanField, BooleanFieldValidation, BooleanOperator, ButtonField, ButtonFieldValidation, CONFIRM_PASSWORD, CallChainService, CancelTaskService, CaseAuthor, CaseCreationDate, CaseCreationDateTime, CaseDataset, CaseHeaderService, CaseListFontColorService, CaseMetaField, CaseNetAttributeAutocompleteCategory, CaseProcess, CaseRefField, CaseResourceService, CaseRole, CaseSearch, CaseSimpleDataset, CaseStringId, CaseTask, CaseTitle, CaseTreeNode, CaseTreeService, CaseViewService, CaseVisualId, Categories, Category, CategoryFactory, CategoryResolverService, ChangedFieldsService, ClausePredicate, ComponentPrefixes, ComponentRegistryService, ConfigParams, ConfigurationInput, ConfigurationService, ConfirmDialogComponent, ConfirmDialogModule, ConsoleLogPublisher, ContainsPipe, CovalentModule, CurrencyModule, CustomDateAdapter, DATA_FIELD_PORTAL_DATA, DATE_FORMAT, DATE_FORMAT_STRING, DATE_TIME_FORMAT, DATE_TIME_FORMAT_STRING, DEFAULT, DEFAULT_LANGUAGE_CODE, Dashboard, DashboardCardTypes, DashboardMultiData, DashboardResourceService, DashboardSingleData, DataField, DataFieldsModule, DataFocusPolicy, DataFocusPolicyService, DataGroupAlignment, DatafieldMapKey, DateField, DateTimeField, DefaultSearchCategoriesModule, DelegateTaskService, DialogModule, DialogService, DynamicEnumerationField, DynamicNavigationRouteProviderService, EditableClausePredicate, EditableClausePredicateWithGenerators, EditableElementaryPredicate, EditablePredicate, EditablePredicateWithGenerator, ElementaryPredicate, EnumerationAutocompleteFilterProperty, EnumerationField, EnumerationFieldValidation, Equals, EqualsDate, ErrorSnackBarComponent, EventConstants, EventQueueService, EventService, FILTER_DEFAULT_HEADERS_ID, FILTER_IDENTIFIERS, FILTER_VIEW_TASK_TRANSITION_ID, FieldAlignment, FieldConverterService, FieldTypeResource, FileField, FileListField, FileListFieldValidation, FilePreviewType, FileUploadMIMEType, FileUploadModel, Filter, FilterExtractionService, FilterField, FilterRepository, FilterType, FilteredArray, FinishPolicy, FinishPolicyService, FinishTaskService, GenericSnackBarComponent, GroupGuardService, GroupNavigationComponentResolverService, GroupNavigationConstants, HeaderColumn, HeaderColumnType, HeaderMode, HeaderSearchService, HeaderType, HttpLoaderFactory, I18nField, I18nFieldValidation, ImpersonationService, ImpersonationUserListService, ImpersonationUserResourceService, ImpersonationUserSelectService, InRange, InRangeDate, IncrementingCounter, IsEmptyPipe, IsNonEmptyPipe, IsNull, LanguageIconsService, LanguageService, LdapGroupListService, LdapGroupResourceService, LessThan, LessThanDate, LessThanDateTime, LetContext, LetDirective, Like, LoadingEmitter, LoadingWithFilterEmitter, LocalStorageLogPublisher, LogEntry, LogLevel, LogPublisher, LogPublisherService, LoggerService, MaterialAppearance, MaterialModule, MergeOperator, MergedFilter, MockAuthenticationMethodService, MockAuthenticationService, MockEndpoint, MockProfileService, MockSignUpService, MockUserPreferenceService, MockUserResourceService, MockUserService, MoreThan, MoreThanDate, MoreThanDateTime, MultichoiceAutocompleteFilterProperty, MultichoiceField, NAE_ADMIN_IMPERSONATE_COMPONENT, NAE_ADMIN_IMPERSONATE_DIALOG_COMPONENT, NAE_ASYNC_RENDERING_CONFIGURATION, NAE_AUTOSWITCH_TAB_TOKEN, NAE_BASE_FILTER, NAE_CASE_REF_CREATE_CASE, NAE_CASE_REF_SEARCH, NAE_DEFAULT_CASE_SEARCH_CATEGORIES, NAE_DEFAULT_HEADERS, NAE_DEFAULT_MIN_PASSWORD_LENGTH, NAE_DEFAULT_TASK_SEARCH_CATEGORIES, NAE_FILES_UPLOAD_COMPONENT, NAE_FILES_UPLOAD_DIALOG_COMPONENT, NAE_FILTERS_FILTER, NAE_FILTER_FIELD, NAE_FILTER_TEXT, NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT, NAE_INFORM_ABOUT_INVALID_DATA, NAE_LOAD_FILTER_COMPONENT, NAE_LOAD_FILTER_DIALOG_COMPONENT, NAE_MIN_PASSWORD_LENGTH, NAE_NAVIGATION_ITEM_TASK_DATA, NAE_NET_ALL_VERSIONS, NAE_NET_VERSION_VISIBLE, NAE_NEW_CASE_COMPONENT, NAE_NEW_CASE_CONFIGURATION, NAE_NEW_CASE_CREATION_CONFIGURATION_DATA, NAE_NEW_CASE_DIALOG_COMPONENT, NAE_OPEN_EXISTING_TAB, NAE_OPTION_SELECTOR_COMPONENT, NAE_OPTION_SELECTOR_DIALOG_COMPONENT, NAE_PREFERRED_TASK_ENDPOINT, NAE_ROUTING_CONFIGURATION_PATH, NAE_SAVE_FILTER_COMPONENT, NAE_SAVE_FILTER_DIALOG_COMPONENT, NAE_SEARCH_CATEGORIES, NAE_SEARCH_COMPONENT_CONFIGURATION, NAE_SIDE_MENU_CONTROL, NAE_SNACKBAR_HORIZONTAL_POSITION, NAE_SNACKBAR_VERTICAL_POSITION, NAE_TAB_DATA, NAE_TASK_FORCE_OPEN, NAE_TASK_OPERATIONS, NAE_TASK_PANEL_DISABLE_BUTTON_FUNCTIONS, NAE_TASK_VIEW_CONFIGURATION, NAE_TREE_CASE_VIEW_CONFIGURATION, NAE_URI_NODE_CASES_PAGE_SIZE, NAE_USER_ASSIGN_COMPONENT, NAE_USER_ASSIGN_DIALOG_COMPONENT, NAE_USER_IMPERSONATE_COMPONENT, NAE_USER_IMPERSONATE_DIALOG_COMPONENT, NAE_VIEW_ID, NAE_VIEW_ID_SEGMENT, NAE_WORKFLOW_SERVICE_CONFIRM_DELETE, NAE_WORKFLOW_SERVICE_FILTER, Net, NetAttributeAutocompleteCategory, NextGroupService, NoConfigurationAutocompleteCategory, NoConfigurationCategory, NoConfigurationUserAutocompleteCategory, NotEquals, NotEqualsDate, NotEqualsDateTime, NullAuthenticationService, NullTaskOperations, NumberField, NumberFieldValidation, OLD_PASSWORD, OpenedTab, Operator, OperatorResolverService, OperatorService, OperatorTemplatePart, OperatorTemplatePartType, Operators, OrganizationListService, OverflowService, PASSWORD, PUBLISHERS, PageLoadRequestContext, PaginationParams, PaginationSort, PaperViewService, PermissionService, PermissionType, PetriNetResourceService, Predicate, PredicateWithGenerator, ProcessList, ProcessService, ProfileModule, ProfileService, ProgressType, PromptDialogComponent, PromptDialogModule, PublicCaseResourceService, PublicPetriNetResourceService, PublicProcessService, PublicTaskLoadingService, PublicTaskResourceService, PublicUrlResolverService, Query, QueuedEvent, RedirectService, ResourceProvider, ResultWithAfterActions, RoleAssignmentLdapGroupService, RoleAssignmentService, RoleGuardService, RoutingBuilderService, SearchIndex, SearchIndexResolverService, SearchInputType, SearchMode, SearchService, SelectedCaseService, SessionIdleTimerService, SessionService, SideMenuControl, SideMenuRef, SideMenuService, SideMenuSize, SignUpModule, SignUpService, SimpleFilter, SingleTaskContentService, SnackBarComponent, SnackBarHorizontalPosition, SnackBarModule, SnackBarService, SnackBarVerticalPosition, SpinnerOverlayService, Subgrid, SubjectTaskOperations, Substring, SuccessSnackBarComponent, TabLabelStream, TabView, TabbedVirtualScrollComponent, TaskAssignee, TaskConst, TaskContentService, TaskDataService, TaskElementType, TaskEndpoint, TaskEvent, TaskEventService, TaskHandlingService, TaskHeaderService, TaskMetaField, TaskNetAttributeAutocompleteCategory, TaskProcess, TaskRefComponents, TaskRefDashboardConstants, TaskRefDashboardTileConstants, TaskRefField, TaskRequestStateService, TaskResourceService, TaskRole, TaskTask, TaskViewService, TemplateAppearance, TestCaseBaseFilterProvider, TestCaseViewAllowedNetsFactory, TestConfigurationService, TestMockDependenciesModule, TestNoAllowedNetsFactory, TestTaskBaseFilterProvider, TestTaskViewAllowedNetsFactory, TestViewService, TextAreaField, TextAreaHeight, TextField, TextFieldComponent, TextFieldValidation, TextFieldView, TranslateLibModule, TreeCaseViewService, TreePetriflowIdentifiers, TreeTaskContentService, UnlimitedTaskContentService, UriContentType, UriResourceService, UriService, User, UserAutocomplete, UserComparatorService, UserField, UserFilterConstants, UserFiltersService, UserImpersonationConstants, UserInviteService, UserListField, UserListService, UserListValue, UserPreferenceService, UserResourceService, UserService, UserTransformer, UserValue, UtilityModule, ViewIdService, ViewService, WarningSnackBarComponent, WorkflowHeaderService, WorkflowMetaField, WorkflowViewService, WrappedBoolean, arrayToObservable, authenticationServiceFactory, clearTimeInformation, configureCategory, createMockCase, createMockCaseOutcome, createMockDataGroup, createMockDependencies, createMockField, createMockGetDataOutcome, createMockImmediateData, createMockNet, createMockPage, createMockPetriNetOutcome, createMockSetDataOutcome, createMockTask, createMockTaskOutcome, createSortParam, createTaskEventNotification, decodeBase64, defaultCaseSearchCategoriesFactory, defaultTaskSearchCategoriesFactory, destroySubscription, encodeBase64, extractFilterFieldFromData, extractFilterFromData, extractFilterFromFilterField, extractIconAndTitle, extractRoles, getField, getFieldFromDataGroups, getFieldIndex, getFieldIndexFromDataGroups, getImmediateData, getNetAndCreateCase, groupNavigationViewIdSegmentFactory, hasContent, loadAllPages, mockUserAutocompleteValue, navigationItemTaskAllowedNetsServiceFactory, navigationItemTaskCategoryFactory, navigationItemTaskFilterFactory, ofVoid, processMessageResponse, publicBaseFilterFactory, publicFactoryResolver, refreshTree, tabbedAllowedNetsServiceFactory, tabbedTaskViewConfigurationFactory, toMoment };
|
|
35180
|
+
export { AbstractAddChildNodeComponent, AbstractAdvancedSearchComponent, AbstractAuthenticationOverlayComponent, AbstractBaseDataFieldComponent, AbstractBooleanDefaultFieldComponent, AbstractBooleanFieldComponent, AbstractBreadcrumbsComponent, AbstractButtonDefaultFieldComponent, AbstractButtonFieldComponent, AbstractCaseListComponent, AbstractCaseListPaginatorComponent, AbstractCasePanelComponent, AbstractCaseRefDefaultComponent, AbstractCaseViewComponent, AbstractChangePasswordComponent, AbstractCountCardComponent, AbstractCurrencyNumberFieldComponent, AbstractCustomCardComponent, AbstractDashboardBarChartTextFieldComponent, AbstractDashboardContentComponent, AbstractDashboardIframeTextFieldComponent, AbstractDashboardLineChartTextFieldComponent, AbstractDashboardPieChartTextFieldComponent, AbstractDashboardPortalTextFieldComponent, AbstractDashboardTextFieldComponent, AbstractDataFieldTemplateComponent, AbstractDateDefaultFieldComponent, AbstractDateFieldComponent, AbstractDateTimeDefaultFieldComponent, AbstractDateTimeFieldComponent, AbstractDefaultNumberFieldComponent, AbstractEditModeComponent, AbstractEmailSubmissionFormComponent, AbstractEnumerationAutocompleteDynamicFieldComponent, AbstractEnumerationAutocompleteSelectFieldComponent, AbstractEnumerationFieldComponent, AbstractEnumerationIconFieldComponent, AbstractEnumerationListFieldComponent, AbstractEnumerationSelectFieldComponent, AbstractEnumerationStepperFieldComponent, AbstractFieldComponentResolverComponent, AbstractFileDefaultFieldComponent, AbstractFileFieldComponent, AbstractFileListDefaultFieldComponent, AbstractFileListFieldComponent, AbstractFilterDefaultFieldComponent, AbstractFilterFieldComponent, AbstractFilterFieldContentComponent, AbstractFilterFieldTabViewComponent, AbstractFilterFieldTabViewContentComponent, AbstractFilterSelectorComponent, AbstractFilterSelectorListItemComponent, AbstractForgottenPasswordComponent, AbstractFulltextSearchComponent, AbstractGroupNavigationComponentResolverComponent, AbstractHeaderComponent, AbstractHeaderService, AbstractHtmlTextareaFieldComponent, AbstractI18nDividerFieldComponent, AbstractI18nErrorsComponent, AbstractI18nFieldComponent, AbstractI18nTextFieldComponent, AbstractIframeCardComponent, AbstractImmediateFilterTextComponent, AbstractImmediateFilterTextContentComponent, AbstractImportNetComponent, AbstractInternalLinkComponent, AbstractLanguageSelectorComponent, AbstractLdapGroupRoleAssignmentComponent, AbstractLegalNoticeComponent, AbstractLoadFilterComponent, AbstractLoadingModeComponent, AbstractLoggerService, AbstractLoginFormComponent, AbstractLogoutShortcutComponent, AbstractMultiUserAssignComponent, AbstractMultiUserAssignItemComponent, AbstractMultiUserAssignListComponent, AbstractMultichoiceAutocompleteFieldComponentComponent, AbstractMultichoiceFieldComponent, AbstractMultichoiceListFieldComponent, AbstractMultichoiceSelectFieldComponent, AbstractNavigationDoubleDrawerComponent, AbstractNavigationDrawerComponent, AbstractNavigationRailComponent, AbstractNavigationTreeComponent, AbstractNewCaseComponent, AbstractNumberErrorsComponent, AbstractNumberFieldComponent, AbstractOptionSelectorComponent, AbstractPanelComponent, AbstractPanelItemComponent, AbstractPasswordTextFieldComponent, AbstractProfileComponent, AbstractQuickPanelComponent, AbstractRegistrationComponent, AbstractRegistrationFormComponent, AbstractRemoveNodeComponent, AbstractResourceProvider, AbstractResourceService, AbstractRichTextareaFieldComponent, AbstractRoleAssignmentComponent, AbstractSaveFilterComponent, AbstractSearchClauseComponent, AbstractSearchComponent, AbstractSearchConfigurationInputComponent, AbstractSearchModeComponent, AbstractSearchOperandInputComponent, AbstractSearchPredicateComponent, AbstractSessionIdleComponent, AbstractSideMenuContainerComponent, AbstractSimpleTextFieldComponent, AbstractSingleTaskComponent, AbstractSingleTaskViewComponent, AbstractSortModeComponent, AbstractSortableViewComponent, AbstractTabCreationDetectorComponent, AbstractTabViewComponent, AbstractTabbedCaseViewComponent, AbstractTabbedTaskViewComponent, AbstractTaskContentComponent, AbstractTaskListComponent, AbstractTaskListPaginationComponent, AbstractTaskPanelComponent, AbstractTaskRefDashboardFieldComponent, AbstractTaskRefDashboardTileComponent, AbstractTaskRefFieldComponent, AbstractTaskRefListFieldComponent, AbstractTaskViewComponent, AbstractTextErrorsComponent, AbstractTextFieldComponent, AbstractTextareaFieldComponent, AbstractToolbarComponent, AbstractTreeComponent, AbstractTreeTaskContentComponent, AbstractUserAssignComponent, AbstractUserAssignItemComponent, AbstractUserAssignListComponent, AbstractUserCardComponent, AbstractUserDefaultFieldComponent, AbstractUserFieldComponent, AbstractUserImpersonateComponent, AbstractUserInviteComponent, AbstractUserListDefaultFieldComponent, AbstractUserListFieldComponent, AbstractViewWithHeadersComponent, AbstractWorkflowPanelComponent, AbstractWorkflowViewComponent, AccessService, ActiveGroupService, AdvancedSearchComponentInitializationService, AfterAction, AlertDialogComponent, AlertDialogModule, AllowedNetsService, AllowedNetsServiceFactory, AnonymousAuthenticationInterceptor, AnonymousService, AssignPolicy, AssignPolicyService, AssignTaskService, AuthenticationGuardService, AuthenticationInterceptor, AuthenticationMethodService, AuthenticationModule, AuthenticationService, AuthorityGuardService, AutocompleteCategory, BOOLEAN_VALUE_LABEL_ENABLED, BaseAllowedNetsService, BasicAuthenticationService, BooleanField, BooleanFieldValidation, BooleanOperator, ButtonField, ButtonFieldValidation, CONFIRM_PASSWORD, CallChainService, CancelTaskService, CaseAuthor, CaseCreationDate, CaseCreationDateTime, CaseDataset, CaseHeaderService, CaseListFontColorService, CaseMetaField, CaseNetAttributeAutocompleteCategory, CaseProcess, CaseRefField, CaseResourceService, CaseRole, CaseSearch, CaseSimpleDataset, CaseStringId, CaseTask, CaseTitle, CaseTreeNode, CaseTreeService, CaseViewService, CaseVisualId, Categories, Category, CategoryFactory, CategoryResolverService, ChangedFieldsService, ClausePredicate, ComponentPrefixes, ComponentRegistryService, ConfigParams, ConfigurationInput, ConfigurationService, ConfirmDialogComponent, ConfirmDialogModule, ConsoleLogPublisher, ContainsPipe, CovalentModule, CurrencyModule, CustomDateAdapter, DATA_FIELD_PORTAL_DATA, DATE_FORMAT, DATE_FORMAT_STRING, DATE_TIME_FORMAT, DATE_TIME_FORMAT_STRING, DEFAULT, DEFAULT_LANGUAGE_CODE, Dashboard, DashboardCardTypes, DashboardMultiData, DashboardResourceService, DashboardSingleData, DataField, DataFieldsModule, DataFocusPolicy, DataFocusPolicyService, DataGroupAlignment, DatafieldMapKey, DateField, DateTimeField, DefaultSearchCategoriesModule, DelegateTaskService, DialogModule, DialogService, DynamicEnumerationField, DynamicNavigationRouteProviderService, EditableClausePredicate, EditableClausePredicateWithGenerators, EditableElementaryPredicate, EditablePredicate, EditablePredicateWithGenerator, ElementaryPredicate, EnumerationAutocompleteFilterProperty, EnumerationField, EnumerationFieldValidation, Equals, EqualsDate, ErrorSnackBarComponent, EventConstants, EventQueueService, EventService, FieldAlignment, FieldConverterService, FieldTypeResource, FileField, FileListField, FileListFieldValidation, FilePreviewType, FileUploadMIMEType, FileUploadModel, Filter, FilterExtractionService, FilterField, FilterRepository, FilterType, FilteredArray, FinishPolicy, FinishPolicyService, FinishTaskService, GenericSnackBarComponent, GroupGuardService, GroupNavigationComponentResolverService, GroupNavigationConstants, HeaderColumn, HeaderColumnType, HeaderMode, HeaderSearchService, HeaderType, HttpLoaderFactory, I18nField, I18nFieldValidation, ImpersonationService, ImpersonationUserListService, ImpersonationUserResourceService, ImpersonationUserSelectService, InRange, InRangeDate, IncrementingCounter, IsEmptyPipe, IsNonEmptyPipe, IsNull, LanguageIconsService, LanguageService, LdapGroupListService, LdapGroupResourceService, LessThan, LessThanDate, LessThanDateTime, LetContext, LetDirective, Like, LoadingEmitter, LoadingWithFilterEmitter, LocalStorageLogPublisher, LogEntry, LogLevel, LogPublisher, LogPublisherService, LoggerService, MENU_IDENTIFIERS, MaterialAppearance, MaterialModule, MergeOperator, MergedFilter, MockAuthenticationMethodService, MockAuthenticationService, MockEndpoint, MockProfileService, MockSignUpService, MockUserPreferenceService, MockUserResourceService, MockUserService, MoreThan, MoreThanDate, MoreThanDateTime, MultichoiceAutocompleteFilterProperty, MultichoiceField, NAE_ADMIN_IMPERSONATE_COMPONENT, NAE_ADMIN_IMPERSONATE_DIALOG_COMPONENT, NAE_ASYNC_RENDERING_CONFIGURATION, NAE_AUTOSWITCH_TAB_TOKEN, NAE_BASE_FILTER, NAE_CASE_REF_CREATE_CASE, NAE_CASE_REF_SEARCH, NAE_DEFAULT_CASE_SEARCH_CATEGORIES, NAE_DEFAULT_HEADERS, NAE_DEFAULT_MIN_PASSWORD_LENGTH, NAE_DEFAULT_TASK_SEARCH_CATEGORIES, NAE_FILES_UPLOAD_COMPONENT, NAE_FILES_UPLOAD_DIALOG_COMPONENT, NAE_FILTERS_FILTER, NAE_FILTER_FIELD, NAE_FILTER_TEXT, NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT, NAE_INFORM_ABOUT_INVALID_DATA, NAE_LOAD_FILTER_COMPONENT, NAE_LOAD_FILTER_DIALOG_COMPONENT, NAE_MIN_PASSWORD_LENGTH, NAE_NAVIGATION_ITEM_TASK_DATA, NAE_NET_ALL_VERSIONS, NAE_NET_VERSION_VISIBLE, NAE_NEW_CASE_COMPONENT, NAE_NEW_CASE_CONFIGURATION, NAE_NEW_CASE_CREATION_CONFIGURATION_DATA, NAE_NEW_CASE_DIALOG_COMPONENT, NAE_OPEN_EXISTING_TAB, NAE_OPTION_SELECTOR_COMPONENT, NAE_OPTION_SELECTOR_DIALOG_COMPONENT, NAE_PREFERRED_TASK_ENDPOINT, NAE_ROUTING_CONFIGURATION_PATH, NAE_SAVE_FILTER_COMPONENT, NAE_SAVE_FILTER_DIALOG_COMPONENT, NAE_SEARCH_CATEGORIES, NAE_SEARCH_COMPONENT_CONFIGURATION, NAE_SIDE_MENU_CONTROL, NAE_SNACKBAR_HORIZONTAL_POSITION, NAE_SNACKBAR_VERTICAL_POSITION, NAE_TAB_DATA, NAE_TASK_FORCE_OPEN, NAE_TASK_OPERATIONS, NAE_TASK_PANEL_DISABLE_BUTTON_FUNCTIONS, NAE_TASK_VIEW_CONFIGURATION, NAE_TREE_CASE_VIEW_CONFIGURATION, NAE_URI_NODE_CASES_PAGE_SIZE, NAE_USER_ASSIGN_COMPONENT, NAE_USER_ASSIGN_DIALOG_COMPONENT, NAE_USER_IMPERSONATE_COMPONENT, NAE_USER_IMPERSONATE_DIALOG_COMPONENT, NAE_VIEW_ID, NAE_VIEW_ID_SEGMENT, NAE_WORKFLOW_SERVICE_CONFIRM_DELETE, NAE_WORKFLOW_SERVICE_FILTER, Net, NetAttributeAutocompleteCategory, NextGroupService, NoConfigurationAutocompleteCategory, NoConfigurationCategory, NoConfigurationUserAutocompleteCategory, NotEquals, NotEqualsDate, NotEqualsDateTime, NullAuthenticationService, NullTaskOperations, NumberField, NumberFieldValidation, OLD_PASSWORD, OpenedTab, Operator, OperatorResolverService, OperatorService, OperatorTemplatePart, OperatorTemplatePartType, Operators, OrganizationListService, OverflowService, PASSWORD, PUBLISHERS, PageLoadRequestContext, PaginationParams, PaginationSort, PaperViewService, PermissionService, PermissionType, PetriNetResourceService, Predicate, PredicateWithGenerator, ProcessList, ProcessService, ProfileModule, ProfileService, ProgressType, PromptDialogComponent, PromptDialogModule, PublicCaseResourceService, PublicPetriNetResourceService, PublicProcessService, PublicTaskLoadingService, PublicTaskResourceService, PublicUrlResolverService, Query, QueuedEvent, RedirectService, ResourceProvider, ResultWithAfterActions, RoleAssignmentLdapGroupService, RoleAssignmentService, RoleGuardService, RoutingBuilderService, SETTINGS_TRANSITION_ID, SearchIndex, SearchIndexResolverService, SearchInputType, SearchMode, SearchService, SelectedCaseService, SessionIdleTimerService, SessionService, SideMenuControl, SideMenuRef, SideMenuService, SideMenuSize, SignUpModule, SignUpService, SimpleFilter, SingleTaskContentService, SnackBarComponent, SnackBarHorizontalPosition, SnackBarModule, SnackBarService, SnackBarVerticalPosition, SpinnerOverlayService, Subgrid, SubjectTaskOperations, Substring, SuccessSnackBarComponent, TabLabelStream, TabView, TabbedVirtualScrollComponent, TaskAssignee, TaskConst, TaskContentService, TaskDataService, TaskElementType, TaskEndpoint, TaskEvent, TaskEventService, TaskHandlingService, TaskHeaderService, TaskMetaField, TaskNetAttributeAutocompleteCategory, TaskProcess, TaskRefComponents, TaskRefDashboardConstants, TaskRefDashboardTileConstants, TaskRefField, TaskRequestStateService, TaskResourceService, TaskRole, TaskTask, TaskViewService, TemplateAppearance, TestCaseBaseFilterProvider, TestCaseViewAllowedNetsFactory, TestConfigurationService, TestMockDependenciesModule, TestNoAllowedNetsFactory, TestTaskBaseFilterProvider, TestTaskViewAllowedNetsFactory, TestViewService, TextAreaField, TextAreaHeight, TextField, TextFieldComponent, TextFieldValidation, TextFieldView, TranslateLibModule, TreeCaseViewService, TreePetriflowIdentifiers, TreeTaskContentService, UnlimitedTaskContentService, UriContentType, UriResourceService, UriService, User, UserAutocomplete, UserComparatorService, UserField, UserFilterConstants, UserFiltersService, UserImpersonationConstants, UserInviteService, UserListField, UserListService, UserListValue, UserPreferenceService, UserResourceService, UserService, UserTransformer, UserValue, UtilityModule, ViewIdService, ViewService, WarningSnackBarComponent, WorkflowHeaderService, WorkflowMetaField, WorkflowViewService, WrappedBoolean, arrayToObservable, authenticationServiceFactory, clearTimeInformation, configureCategory, createMockCase, createMockCaseOutcome, createMockDataGroup, createMockDependencies, createMockField, createMockGetDataOutcome, createMockImmediateData, createMockNet, createMockPage, createMockPetriNetOutcome, createMockSetDataOutcome, createMockTask, createMockTaskOutcome, createSortParam, createTaskEventNotification, decodeBase64, defaultCaseSearchCategoriesFactory, defaultTaskSearchCategoriesFactory, destroySubscription, encodeBase64, extractFieldValueFromData, extractFilterFieldFromData, extractFilterFromData, extractFilterFromFilterField, extractIconAndTitle, extractRoles, extractSearchTypeFromData, getField, getFieldFromDataGroups, getFieldIndex, getFieldIndexFromDataGroups, getImmediateData, getNetAndCreateCase, groupNavigationViewIdSegmentFactory, hasContent, loadAllPages, mockUserAutocompleteValue, navigationItemCaseViewDefaultHeadersFactory, navigationItemTaskAllowedNetsServiceFactory, navigationItemTaskCategoryFactory, navigationItemTaskFilterFactory, navigationItemTaskViewDefaultHeadersFactory, ofVoid, processMessageResponse, publicBaseFilterFactory, publicFactoryResolver, refreshTree, tabbedAllowedNetsServiceFactory, tabbedTaskViewConfigurationFactory, toMoment };
|
|
35104
35181
|
//# sourceMappingURL=netgrif-components-core.mjs.map
|