@netgrif/components-core 6.4.0-beta.2 → 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
|
@@ -1207,7 +1207,11 @@ var publicView$2 = {
|
|
|
1207
1207
|
errorCreate: "Error while creating case "
|
|
1208
1208
|
};
|
|
1209
1209
|
var dynamicNavigation$2 = {
|
|
1210
|
-
couldNotResolveView: "An error has occurred during the view resolution process. The view could not be displayed"
|
|
1210
|
+
couldNotResolveView: "An error has occurred during the view resolution process. The view could not be displayed",
|
|
1211
|
+
filterNotFound: "This view has no filter",
|
|
1212
|
+
loadMoreItems: "More",
|
|
1213
|
+
ascending: "Ascending",
|
|
1214
|
+
descending: "Descending"
|
|
1211
1215
|
};
|
|
1212
1216
|
var impersonation$2 = {
|
|
1213
1217
|
user: {
|
|
@@ -1724,7 +1728,11 @@ var publicView$1 = {
|
|
|
1724
1728
|
errorCreate: "Chyba pri vytváraní prípadu "
|
|
1725
1729
|
};
|
|
1726
1730
|
var dynamicNavigation$1 = {
|
|
1727
|
-
couldNotResolveView: "Počas načítania zobrazenia sa vyskytla chyba. Zobrazenie nie je možné zobraziť"
|
|
1731
|
+
couldNotResolveView: "Počas načítania zobrazenia sa vyskytla chyba. Zobrazenie nie je možné zobraziť",
|
|
1732
|
+
filterNotFound: "Toto zobrazenie neobsahuje filter",
|
|
1733
|
+
loadMoreItems: "Viac",
|
|
1734
|
+
ascending: "Vzostupne",
|
|
1735
|
+
descending: "Zostupne"
|
|
1728
1736
|
};
|
|
1729
1737
|
var impersonation$1 = {
|
|
1730
1738
|
user: {
|
|
@@ -2241,7 +2249,11 @@ var publicView = {
|
|
|
2241
2249
|
errorCreate: "Fehler beim Erstellen des Falles "
|
|
2242
2250
|
};
|
|
2243
2251
|
var dynamicNavigation = {
|
|
2244
|
-
couldNotResolveView: "Ein Fehler ist aufgetreten während des Ansichtauflösungsprocess. Der Ansicht kann nicht angezeigt werden"
|
|
2252
|
+
couldNotResolveView: "Ein Fehler ist aufgetreten während des Ansichtauflösungsprocess. Der Ansicht kann nicht angezeigt werden",
|
|
2253
|
+
filterNotFound: "Diese Ansicht hat keinen Filter",
|
|
2254
|
+
loadMoreItems: "Mehr",
|
|
2255
|
+
ascending: "Aufsteigend",
|
|
2256
|
+
descending: "Absteigend"
|
|
2245
2257
|
};
|
|
2246
2258
|
var impersonation = {
|
|
2247
2259
|
user: {
|
|
@@ -18191,7 +18203,7 @@ class CaseViewService extends AbstractSortableViewComponent {
|
|
|
18191
18203
|
minWidth: '300px',
|
|
18192
18204
|
panelClass: "dialog-responsive",
|
|
18193
18205
|
data: {
|
|
18194
|
-
allowedNets$: this.getNewCaseAllowedNets(),
|
|
18206
|
+
allowedNets$: this.getNewCaseAllowedNets(newCaseCreationConfiguration.blockNets),
|
|
18195
18207
|
newCaseCreationConfiguration
|
|
18196
18208
|
},
|
|
18197
18209
|
});
|
|
@@ -18205,9 +18217,12 @@ class CaseViewService extends AbstractSortableViewComponent {
|
|
|
18205
18217
|
});
|
|
18206
18218
|
return myCase.asObservable();
|
|
18207
18219
|
}
|
|
18208
|
-
createDefaultNewCase(
|
|
18220
|
+
createDefaultNewCase(newCaseCreationConfiguration = {
|
|
18221
|
+
enableCaseTitle: true,
|
|
18222
|
+
isCaseTitleRequired: true
|
|
18223
|
+
}) {
|
|
18209
18224
|
const myCase = new Subject();
|
|
18210
|
-
this.getNewCaseAllowedNets().subscribe((nets) => {
|
|
18225
|
+
this.getNewCaseAllowedNets(newCaseCreationConfiguration.blockNets).subscribe((nets) => {
|
|
18211
18226
|
this._caseResourceService.createCase({
|
|
18212
18227
|
title: null,
|
|
18213
18228
|
color: 'panel-primary-icon',
|
|
@@ -18222,13 +18237,13 @@ class CaseViewService extends AbstractSortableViewComponent {
|
|
|
18222
18237
|
});
|
|
18223
18238
|
return myCase;
|
|
18224
18239
|
}
|
|
18225
|
-
getNewCaseAllowedNets() {
|
|
18240
|
+
getNewCaseAllowedNets(blockNets = []) {
|
|
18226
18241
|
if (this._newCaseConfiguration.useCachedProcesses) {
|
|
18227
|
-
return this._allowedNetsService.allowedNets$.pipe(map(net => net.filter(n => this._permissionService.hasNetPermission(PermissionType.CREATE, n))));
|
|
18242
|
+
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))));
|
|
18228
18243
|
}
|
|
18229
18244
|
else {
|
|
18230
18245
|
return this._allowedNetsService.allowedNets$.pipe(switchMap(allowedNets => {
|
|
18231
|
-
return this._processService.getNetReferences(allowedNets.map(net => net.identifier)).pipe(map(net => net.filter(n => this._permissionService.hasNetPermission(PermissionType.CREATE, n))));
|
|
18246
|
+
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))));
|
|
18232
18247
|
}));
|
|
18233
18248
|
}
|
|
18234
18249
|
}
|
|
@@ -19827,6 +19842,7 @@ class AbstractTaskPanelComponent extends AbstractPanelWithImmediateDataComponent
|
|
|
19827
19842
|
this.responsiveBody = true;
|
|
19828
19843
|
this.preventCollapse = false;
|
|
19829
19844
|
this.hidePanelHeader = false;
|
|
19845
|
+
this.showMoreMenu = true;
|
|
19830
19846
|
this.thisContext = {
|
|
19831
19847
|
canAssign: () => this.canAssign(),
|
|
19832
19848
|
assign: () => this.assign(),
|
|
@@ -20094,7 +20110,7 @@ class AbstractTaskPanelComponent extends AbstractPanelWithImmediateDataComponent
|
|
|
20094
20110
|
}
|
|
20095
20111
|
}
|
|
20096
20112
|
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 });
|
|
20097
|
-
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 });
|
|
20113
|
+
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 });
|
|
20098
20114
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskPanelComponent, decorators: [{
|
|
20099
20115
|
type: Component,
|
|
20100
20116
|
args: [{
|
|
@@ -20133,6 +20149,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
20133
20149
|
type: Input
|
|
20134
20150
|
}], actionRowJustifyContent: [{
|
|
20135
20151
|
type: Input
|
|
20152
|
+
}], showMoreMenu: [{
|
|
20153
|
+
type: Input
|
|
20136
20154
|
}], forceLoadDataOnOpen: [{
|
|
20137
20155
|
type: Input
|
|
20138
20156
|
}], textEllipsis: [{
|
|
@@ -20198,6 +20216,7 @@ class AbstractDefaultTaskListComponent extends TabbedVirtualScrollComponent {
|
|
|
20198
20216
|
this.responsiveBody = true;
|
|
20199
20217
|
this.forceLoadDataOnOpen = false;
|
|
20200
20218
|
this.textEllipsis = false;
|
|
20219
|
+
this.showMoreMenu = true;
|
|
20201
20220
|
this.taskEvent = new EventEmitter();
|
|
20202
20221
|
this._taskPanelRefs = new Map();
|
|
20203
20222
|
this._unsubscribe$ = new Subject();
|
|
@@ -20245,7 +20264,7 @@ class AbstractDefaultTaskListComponent extends TabbedVirtualScrollComponent {
|
|
|
20245
20264
|
}
|
|
20246
20265
|
}
|
|
20247
20266
|
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 });
|
|
20248
|
-
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 });
|
|
20267
|
+
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 });
|
|
20249
20268
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractDefaultTaskListComponent, decorators: [{
|
|
20250
20269
|
type: Component,
|
|
20251
20270
|
args: [{
|
|
@@ -20267,6 +20286,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
20267
20286
|
type: Input
|
|
20268
20287
|
}], textEllipsis: [{
|
|
20269
20288
|
type: Input
|
|
20289
|
+
}], showMoreMenu: [{
|
|
20290
|
+
type: Input
|
|
20270
20291
|
}], allowMultiOpen: [{
|
|
20271
20292
|
type: Input
|
|
20272
20293
|
}], taskEvent: [{
|
|
@@ -21792,12 +21813,418 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
21792
21813
|
type: Input
|
|
21793
21814
|
}] } });
|
|
21794
21815
|
|
|
21816
|
+
/**
|
|
21817
|
+
* Case search request page size
|
|
21818
|
+
*/
|
|
21819
|
+
const NAE_URI_NODE_CASES_PAGE_SIZE = new InjectionToken('NaeUriNodeCasesPageSize');
|
|
21820
|
+
|
|
21821
|
+
/**
|
|
21822
|
+
* Service for accessing backend resource to resolve URI objects
|
|
21823
|
+
* */
|
|
21824
|
+
class UriResourceService extends AbstractResourceService {
|
|
21825
|
+
constructor(provider, configService) {
|
|
21826
|
+
super('petrinet', provider, configService);
|
|
21827
|
+
}
|
|
21828
|
+
getRoot() {
|
|
21829
|
+
return this._resourceProvider.get$('uri/root', this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNode')));
|
|
21830
|
+
}
|
|
21831
|
+
getByLevel(level) {
|
|
21832
|
+
return this._resourceProvider.get$('uri/level/' + level, this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNodes')));
|
|
21833
|
+
}
|
|
21834
|
+
getNodesByParent(parentId) {
|
|
21835
|
+
return this._resourceProvider.get$('uri/parent/' + parentId, this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNodes')));
|
|
21836
|
+
}
|
|
21837
|
+
getNodeByUri(uriPath) {
|
|
21838
|
+
return this._resourceProvider.get$('uri/' + btoa(uriPath), this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNode')));
|
|
21839
|
+
}
|
|
21840
|
+
}
|
|
21841
|
+
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 });
|
|
21842
|
+
UriResourceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UriResourceService, providedIn: 'root' });
|
|
21843
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UriResourceService, decorators: [{
|
|
21844
|
+
type: Injectable,
|
|
21845
|
+
args: [{
|
|
21846
|
+
providedIn: 'root'
|
|
21847
|
+
}]
|
|
21848
|
+
}], ctorParameters: function () { return [{ type: ResourceProvider }, { type: ConfigurationService }]; } });
|
|
21849
|
+
|
|
21850
|
+
/**
|
|
21851
|
+
* This service allows access to information about the groups of the currently logged user.
|
|
21852
|
+
*
|
|
21853
|
+
* If no user is logged an empty array is provided.
|
|
21854
|
+
*
|
|
21855
|
+
* If a user can be owner of at most one group, this service provides utility methods to access this group directly.
|
|
21856
|
+
*
|
|
21857
|
+
* The groups are assumed to be instances of the engine group process, this is never checked nor enforced.
|
|
21858
|
+
*/
|
|
21859
|
+
class NextGroupService {
|
|
21860
|
+
constructor(_userService, _caseResourceService) {
|
|
21861
|
+
this._userService = _userService;
|
|
21862
|
+
this._caseResourceService = _caseResourceService;
|
|
21863
|
+
this._ownerGroups$ = new BehaviorSubject([]);
|
|
21864
|
+
this._memberGroups$ = new BehaviorSubject([]);
|
|
21865
|
+
this._userSub = this._userService.user$.pipe(switchMap(user => {
|
|
21866
|
+
if (!user || user.id === '') {
|
|
21867
|
+
return of([]);
|
|
21868
|
+
}
|
|
21869
|
+
const params = new HttpParams();
|
|
21870
|
+
params.set(PaginationParams.PAGE_SIZE, `${user.nextGroups.length}`);
|
|
21871
|
+
return this._caseResourceService.searchCases(SimpleFilter.fromCaseQuery({ stringId: user.nextGroups }), params)
|
|
21872
|
+
.pipe(map(page => page.content ? page.content : []), map(groups => groups.filter(group => group.author.fullName !== 'application engine')));
|
|
21873
|
+
})).subscribe(groups => {
|
|
21874
|
+
const ownerGroups = groups.filter(g => g.author.email === this._userService.user.email);
|
|
21875
|
+
this._ownerGroups$.next(ownerGroups);
|
|
21876
|
+
this._memberGroups$.next(groups);
|
|
21877
|
+
});
|
|
21878
|
+
}
|
|
21879
|
+
ngOnDestroy() {
|
|
21880
|
+
this._userSub.unsubscribe();
|
|
21881
|
+
this._memberGroups$.complete();
|
|
21882
|
+
this._ownerGroups$.complete();
|
|
21883
|
+
}
|
|
21884
|
+
/**
|
|
21885
|
+
* @returns an Observable of all the groups the currently logged user is a member of
|
|
21886
|
+
*/
|
|
21887
|
+
get memberGroups$() {
|
|
21888
|
+
return this._memberGroups$.asObservable();
|
|
21889
|
+
}
|
|
21890
|
+
/**
|
|
21891
|
+
* @returns an Observable of all the groups the currently logged user is an owner of
|
|
21892
|
+
*/
|
|
21893
|
+
get ownerGroups$() {
|
|
21894
|
+
return this._ownerGroups$.asObservable();
|
|
21895
|
+
}
|
|
21896
|
+
/**
|
|
21897
|
+
* @returns an Array of all the groups the currently logged user is a member of
|
|
21898
|
+
*/
|
|
21899
|
+
get memberGroups() {
|
|
21900
|
+
return this._memberGroups$.getValue();
|
|
21901
|
+
}
|
|
21902
|
+
/**
|
|
21903
|
+
* @returns an Array of all the groups the currently logged user is an owner of
|
|
21904
|
+
*/
|
|
21905
|
+
get ownerGroups() {
|
|
21906
|
+
return this._ownerGroups$.getValue();
|
|
21907
|
+
}
|
|
21908
|
+
/**
|
|
21909
|
+
* @returns an Observable containing the first element of the [ownerGroups$]{@link NextGroupService#ownerGroups$} observable,
|
|
21910
|
+
* or `undefined` if the contained array is empty
|
|
21911
|
+
*/
|
|
21912
|
+
get firstOwnerGroup$() {
|
|
21913
|
+
return this._ownerGroups$.pipe(map(array => array.length > 0 ? array[0] : undefined));
|
|
21914
|
+
}
|
|
21915
|
+
/**
|
|
21916
|
+
* @returns the first element of the [ownerGroups]{@link NextGroupService#ownerGroups} array, or `undefined` if the array is empty
|
|
21917
|
+
*/
|
|
21918
|
+
get firstOwnerGroup() {
|
|
21919
|
+
const ownerGroups = this.ownerGroups;
|
|
21920
|
+
return ownerGroups.length > 0 ? ownerGroups[0] : undefined;
|
|
21921
|
+
}
|
|
21922
|
+
/**
|
|
21923
|
+
* @deprecated in NAE 5.6.0 - use [ownerGroups]{@link NextGroupService#ownerGroups} instead
|
|
21924
|
+
*/
|
|
21925
|
+
get groupOfUser() {
|
|
21926
|
+
return this.ownerGroups;
|
|
21927
|
+
}
|
|
21928
|
+
}
|
|
21929
|
+
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 });
|
|
21930
|
+
NextGroupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NextGroupService, providedIn: 'root' });
|
|
21931
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NextGroupService, decorators: [{
|
|
21932
|
+
type: Injectable,
|
|
21933
|
+
args: [{
|
|
21934
|
+
providedIn: 'root'
|
|
21935
|
+
}]
|
|
21936
|
+
}], ctorParameters: function () { return [{ type: UserService }, { type: CaseResourceService }]; } });
|
|
21937
|
+
|
|
21938
|
+
/**
|
|
21939
|
+
* This service to the groups that are "active" for the logged user.
|
|
21940
|
+
*
|
|
21941
|
+
* The meaning of "active" can wary from application to application. And this service provides the utility to track this state.
|
|
21942
|
+
*
|
|
21943
|
+
* The active groups are assumed to be a subset of the groups the logged user is a member of,
|
|
21944
|
+
* but this assumption is not enforced nor checked.
|
|
21945
|
+
*
|
|
21946
|
+
* If at most one group can be active at a time, this service provides utility methods to access this group directly.
|
|
21947
|
+
*
|
|
21948
|
+
* The groups are assumed to be instances of the engine group process, this is never checked nor enforced.
|
|
21949
|
+
*
|
|
21950
|
+
* In the default implementation the initially active groups are all the groups the logged user is a member of.
|
|
21951
|
+
*/
|
|
21952
|
+
class ActiveGroupService {
|
|
21953
|
+
constructor(_groupService) {
|
|
21954
|
+
this._groupService = _groupService;
|
|
21955
|
+
this._activeGroups$ = new BehaviorSubject([]);
|
|
21956
|
+
this._groupSub = this._groupService.memberGroups$.subscribe(groups => {
|
|
21957
|
+
this._activeGroups$.next(groups);
|
|
21958
|
+
});
|
|
21959
|
+
}
|
|
21960
|
+
ngOnDestroy() {
|
|
21961
|
+
this._groupSub.unsubscribe();
|
|
21962
|
+
this._activeGroups$.complete();
|
|
21963
|
+
}
|
|
21964
|
+
/**
|
|
21965
|
+
* In the default implementation this stream copies the values of the [memberGroups$]{@link NextGroupService#memberGroups$} stream
|
|
21966
|
+
* of the {@link NextGroupService}. Whenever the copies stream emits, the underlying stream in this class emits the same value.
|
|
21967
|
+
*
|
|
21968
|
+
* @returns an Observable of all the groups that are currently active
|
|
21969
|
+
*/
|
|
21970
|
+
get activeGroups$() {
|
|
21971
|
+
return this._activeGroups$.asObservable();
|
|
21972
|
+
}
|
|
21973
|
+
get activeGroups() {
|
|
21974
|
+
return this._activeGroups$.getValue();
|
|
21975
|
+
}
|
|
21976
|
+
set activeGroups(activeGroups) {
|
|
21977
|
+
this._activeGroups$.next(activeGroups);
|
|
21978
|
+
}
|
|
21979
|
+
/**
|
|
21980
|
+
* @returns an Observable containing the first element of the [activeGroups$]{@link ActiveGroupService#activeGroups$} observable,
|
|
21981
|
+
* or `undefined` if the contained array is empty
|
|
21982
|
+
*/
|
|
21983
|
+
get activeGroup$() {
|
|
21984
|
+
return this.activeGroups$.pipe(map(array => array.length > 0 ? array[0] : undefined));
|
|
21985
|
+
}
|
|
21986
|
+
/**
|
|
21987
|
+
* @returns the first element of the [activeGroups]{@link ActiveGroupService#activeGroups} array, or `undefined` if the array is empty
|
|
21988
|
+
*/
|
|
21989
|
+
get activeGroup() {
|
|
21990
|
+
const activeGroups = this.activeGroups;
|
|
21991
|
+
return activeGroups.length > 0 ? activeGroups[0] : undefined;
|
|
21992
|
+
}
|
|
21993
|
+
/**
|
|
21994
|
+
* Emits a new array into the [activeGroups$]{@link ActiveGroupService#activeGroups$} observable, that contains only
|
|
21995
|
+
* the provided {@link Case} object. If `undefined` is passed as argument, an empty array will be pushed into the observable.
|
|
21996
|
+
* @param activeGroup the new active group case reference
|
|
21997
|
+
*/
|
|
21998
|
+
set activeGroup(activeGroup) {
|
|
21999
|
+
if (activeGroup === undefined) {
|
|
22000
|
+
this._activeGroups$.next([]);
|
|
22001
|
+
}
|
|
22002
|
+
else {
|
|
22003
|
+
this._activeGroups$.next([activeGroup]);
|
|
22004
|
+
}
|
|
22005
|
+
}
|
|
22006
|
+
}
|
|
22007
|
+
ActiveGroupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ActiveGroupService, deps: [{ token: NextGroupService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22008
|
+
ActiveGroupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ActiveGroupService, providedIn: 'root' });
|
|
22009
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ActiveGroupService, decorators: [{
|
|
22010
|
+
type: Injectable,
|
|
22011
|
+
args: [{
|
|
22012
|
+
providedIn: 'root'
|
|
22013
|
+
}]
|
|
22014
|
+
}], ctorParameters: function () { return [{ type: NextGroupService }]; } });
|
|
22015
|
+
|
|
22016
|
+
/**
|
|
22017
|
+
* Service for managing URIs
|
|
22018
|
+
* */
|
|
22019
|
+
class UriService {
|
|
22020
|
+
constructor(_logger, _resourceService, _caseResourceService, _activeGroupService, pageSize) {
|
|
22021
|
+
this._logger = _logger;
|
|
22022
|
+
this._resourceService = _resourceService;
|
|
22023
|
+
this._caseResourceService = _caseResourceService;
|
|
22024
|
+
this._activeGroupService = _activeGroupService;
|
|
22025
|
+
this.pageSize = pageSize;
|
|
22026
|
+
if (!pageSize) {
|
|
22027
|
+
this.pageSize = 20;
|
|
22028
|
+
}
|
|
22029
|
+
if (typeof this.pageSize === 'string') {
|
|
22030
|
+
this.pageSize = parseInt(this.pageSize);
|
|
22031
|
+
}
|
|
22032
|
+
this._rootLoading$ = new LoadingEmitter();
|
|
22033
|
+
this._parentLoading$ = new LoadingEmitter();
|
|
22034
|
+
this._activeNode$ = new BehaviorSubject(undefined);
|
|
22035
|
+
this.loadRoot();
|
|
22036
|
+
}
|
|
22037
|
+
ngOnDestroy() {
|
|
22038
|
+
this._rootLoading$.complete();
|
|
22039
|
+
this._parentLoading$.complete();
|
|
22040
|
+
this._activeNode$.complete();
|
|
22041
|
+
}
|
|
22042
|
+
get root() {
|
|
22043
|
+
return this._rootNode;
|
|
22044
|
+
}
|
|
22045
|
+
get rootLoaded$() {
|
|
22046
|
+
return this._rootLoading$;
|
|
22047
|
+
}
|
|
22048
|
+
isRoot(node) {
|
|
22049
|
+
return node.id === this._rootNode.id && node.uriPath === this._rootNode.uriPath;
|
|
22050
|
+
}
|
|
22051
|
+
get activeNode() {
|
|
22052
|
+
return this._activeNode$.getValue();
|
|
22053
|
+
}
|
|
22054
|
+
set activeNode(node) {
|
|
22055
|
+
if (node.parentId && !node.parent) {
|
|
22056
|
+
if (node.parentId === this._rootNode.id) {
|
|
22057
|
+
node.parent = this._rootNode;
|
|
22058
|
+
}
|
|
22059
|
+
else {
|
|
22060
|
+
this._parentLoading$.on();
|
|
22061
|
+
this.getNodeByPath(this.resolveParentPath(node)).subscribe(n => {
|
|
22062
|
+
node.parent = !n ? this._rootNode : n;
|
|
22063
|
+
this._parentLoading$.off();
|
|
22064
|
+
}, error => {
|
|
22065
|
+
this._logger.error(error);
|
|
22066
|
+
this._parentLoading$.off();
|
|
22067
|
+
});
|
|
22068
|
+
}
|
|
22069
|
+
}
|
|
22070
|
+
this._activeNode$.next(node);
|
|
22071
|
+
}
|
|
22072
|
+
get activeNode$() {
|
|
22073
|
+
return this._activeNode$;
|
|
22074
|
+
}
|
|
22075
|
+
get parentNodeLoading$() {
|
|
22076
|
+
return this._parentLoading$;
|
|
22077
|
+
}
|
|
22078
|
+
/**
|
|
22079
|
+
* Loads root ID into variable.
|
|
22080
|
+
* When root node is loaded and active node is not set yet the root node is set as active node
|
|
22081
|
+
* */
|
|
22082
|
+
loadRoot() {
|
|
22083
|
+
this._rootLoading$.on();
|
|
22084
|
+
this._resourceService.getRoot().subscribe(node => {
|
|
22085
|
+
if (!!node) {
|
|
22086
|
+
this._rootNode = node;
|
|
22087
|
+
if (!this.activeNode) {
|
|
22088
|
+
this.activeNode = this._rootNode;
|
|
22089
|
+
}
|
|
22090
|
+
}
|
|
22091
|
+
this._rootLoading$.off();
|
|
22092
|
+
}, error => {
|
|
22093
|
+
this._logger.error(error);
|
|
22094
|
+
this._rootLoading$.off();
|
|
22095
|
+
});
|
|
22096
|
+
}
|
|
22097
|
+
reset() {
|
|
22098
|
+
this.activeNode = this._rootNode;
|
|
22099
|
+
return this._rootNode;
|
|
22100
|
+
}
|
|
22101
|
+
/**
|
|
22102
|
+
* Get uri node by uri path.
|
|
22103
|
+
* @param path
|
|
22104
|
+
*/
|
|
22105
|
+
getNodeByPath(path) {
|
|
22106
|
+
return this._resourceService.getNodeByUri(path).pipe(map(n => this.capitalizeName(n)));
|
|
22107
|
+
}
|
|
22108
|
+
/**
|
|
22109
|
+
* Get child nodes of provides node.
|
|
22110
|
+
* @param node parent node
|
|
22111
|
+
*/
|
|
22112
|
+
getChildNodes(node) {
|
|
22113
|
+
if (!node)
|
|
22114
|
+
node = this.activeNode;
|
|
22115
|
+
return this._resourceService.getNodesByParent(node.id).pipe(map(nodes => {
|
|
22116
|
+
this.capitalizeNames(nodes);
|
|
22117
|
+
return nodes;
|
|
22118
|
+
}));
|
|
22119
|
+
}
|
|
22120
|
+
/**
|
|
22121
|
+
* Get cases under uri node
|
|
22122
|
+
* @param node parent node of cases
|
|
22123
|
+
* @param processIdentifiers optional search filter for process identifier to get only cases from the process
|
|
22124
|
+
* @param pageNumber optional parameter for load page on the index. Default value is 0 (the first page).
|
|
22125
|
+
* @param pageSize optional parameter for loaded page size. Defaults to value of injection token URI_NODE_CASES_PAGE_SIZE or to value "20".
|
|
22126
|
+
*/
|
|
22127
|
+
getCasesOfNode(node, processIdentifiers, pageNumber = 0, pageSize = this.pageSize) {
|
|
22128
|
+
if (!node)
|
|
22129
|
+
node = this.activeNode;
|
|
22130
|
+
const searchBody = {
|
|
22131
|
+
uriNodeId: node.id,
|
|
22132
|
+
};
|
|
22133
|
+
if (!!processIdentifiers) {
|
|
22134
|
+
searchBody.process = processIdentifiers.map(id => ({ identifier: id }));
|
|
22135
|
+
}
|
|
22136
|
+
// TODO active group is broken a given the wrong id
|
|
22137
|
+
// if (!!this._activeGroupService.activeGroup) {
|
|
22138
|
+
// searchBody.data = {};
|
|
22139
|
+
// searchBody.data['parentId'] = this._activeGroupService.activeGroup.stringId;
|
|
22140
|
+
// }
|
|
22141
|
+
let httpParams = new HttpParams()
|
|
22142
|
+
.set(PaginationParams.PAGE_SIZE, pageSize)
|
|
22143
|
+
.set(PaginationParams.PAGE_NUMBER, pageNumber);
|
|
22144
|
+
return this._caseResourceService.searchCases(SimpleFilter.fromCaseQuery(searchBody), httpParams);
|
|
22145
|
+
}
|
|
22146
|
+
/**
|
|
22147
|
+
* Get siblings node of the provided node
|
|
22148
|
+
* @param node siblings node
|
|
22149
|
+
*/
|
|
22150
|
+
getSiblingsOfNode(node) {
|
|
22151
|
+
if (!node)
|
|
22152
|
+
node = this.activeNode;
|
|
22153
|
+
return this._resourceService.getNodesByParent(node.parentId).pipe(map(nodes => {
|
|
22154
|
+
this.capitalizeNames(nodes);
|
|
22155
|
+
return nodes;
|
|
22156
|
+
}));
|
|
22157
|
+
}
|
|
22158
|
+
/**
|
|
22159
|
+
* Get nodes on the same uri level starting from 0. Root node is no 0 level.
|
|
22160
|
+
* @param level
|
|
22161
|
+
* @param parent optional parameter to filter nodes with common parent
|
|
22162
|
+
*/
|
|
22163
|
+
getNodesOnLevel(level, parent) {
|
|
22164
|
+
if (level === 0)
|
|
22165
|
+
return of([this.root]);
|
|
22166
|
+
return this._resourceService.getByLevel(level).pipe(map(nodes => {
|
|
22167
|
+
const ns = !!parent?.id ? nodes.filter(n => n.parentId === parent.id) : nodes;
|
|
22168
|
+
this.capitalizeNames(ns);
|
|
22169
|
+
return ns;
|
|
22170
|
+
}));
|
|
22171
|
+
}
|
|
22172
|
+
resolveParentPath(node) {
|
|
22173
|
+
if (!node)
|
|
22174
|
+
node = this.activeNode;
|
|
22175
|
+
const lastDelimiter = node.uriPath.lastIndexOf('/');
|
|
22176
|
+
if (lastDelimiter === 0)
|
|
22177
|
+
return '/';
|
|
22178
|
+
return node.uriPath.substring(0, lastDelimiter);
|
|
22179
|
+
}
|
|
22180
|
+
splitNodePath(node) {
|
|
22181
|
+
return node?.uriPath.split('/').filter(s => s !== UriService.ROOT);
|
|
22182
|
+
}
|
|
22183
|
+
capitalizeNames(nodes) {
|
|
22184
|
+
if (!(nodes instanceof Array))
|
|
22185
|
+
return;
|
|
22186
|
+
nodes.forEach(n => this.capitalizeName(n));
|
|
22187
|
+
}
|
|
22188
|
+
/**
|
|
22189
|
+
* /netgrif/nae_system/processes/... => Netgrif -> Nae Systems -> Processes
|
|
22190
|
+
* @param node
|
|
22191
|
+
* @private
|
|
22192
|
+
*/
|
|
22193
|
+
capitalizeName(node) {
|
|
22194
|
+
let parts = node.name.split('_');
|
|
22195
|
+
parts = parts.map(p => {
|
|
22196
|
+
if (p === undefined || p.length === 0)
|
|
22197
|
+
return;
|
|
22198
|
+
if (p.length === 1)
|
|
22199
|
+
return p.toUpperCase();
|
|
22200
|
+
return p.charAt(0).toUpperCase() + p.substring(1);
|
|
22201
|
+
});
|
|
22202
|
+
node.name = parts.join(' ');
|
|
22203
|
+
return node;
|
|
22204
|
+
}
|
|
22205
|
+
}
|
|
22206
|
+
UriService.ROOT = 'root';
|
|
22207
|
+
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 });
|
|
22208
|
+
UriService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UriService, providedIn: 'root' });
|
|
22209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UriService, decorators: [{
|
|
22210
|
+
type: Injectable,
|
|
22211
|
+
args: [{
|
|
22212
|
+
providedIn: 'root',
|
|
22213
|
+
}]
|
|
22214
|
+
}], ctorParameters: function () { return [{ type: LoggerService }, { type: UriResourceService }, { type: CaseResourceService }, { type: ActiveGroupService }, { type: undefined, decorators: [{
|
|
22215
|
+
type: Optional
|
|
22216
|
+
}, {
|
|
22217
|
+
type: Inject,
|
|
22218
|
+
args: [NAE_URI_NODE_CASES_PAGE_SIZE]
|
|
22219
|
+
}] }]; } });
|
|
22220
|
+
|
|
21795
22221
|
class FileUploadModel {
|
|
21796
22222
|
}
|
|
21797
22223
|
class AbstractImportNetComponent {
|
|
21798
|
-
constructor(_sideMenuControl, _petriNetResource, _log, _snackbar, _translate) {
|
|
22224
|
+
constructor(_sideMenuControl, _petriNetResource, _uriService, _log, _snackbar, _translate) {
|
|
21799
22225
|
this._sideMenuControl = _sideMenuControl;
|
|
21800
22226
|
this._petriNetResource = _petriNetResource;
|
|
22227
|
+
this._uriService = _uriService;
|
|
21801
22228
|
this._log = _log;
|
|
21802
22229
|
this._snackbar = _snackbar;
|
|
21803
22230
|
this._translate = _translate;
|
|
@@ -21873,6 +22300,7 @@ class AbstractImportNetComponent {
|
|
|
21873
22300
|
uploadFile(file) {
|
|
21874
22301
|
const fileFormData = new FormData();
|
|
21875
22302
|
fileFormData.append('file', file.data);
|
|
22303
|
+
fileFormData.append('uriNodeId', this._uriService.activeNode.id);
|
|
21876
22304
|
fileFormData.append('meta', this.releaseTypeControl.value.toString().toUpperCase());
|
|
21877
22305
|
file.inProgress = true;
|
|
21878
22306
|
file.completed = false;
|
|
@@ -21909,7 +22337,7 @@ class AbstractImportNetComponent {
|
|
|
21909
22337
|
});
|
|
21910
22338
|
}
|
|
21911
22339
|
}
|
|
21912
|
-
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 });
|
|
22340
|
+
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 });
|
|
21913
22341
|
AbstractImportNetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractImportNetComponent, selector: "ncc-abstract-import-net", ngImport: i0, template: '', isInline: true });
|
|
21914
22342
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractImportNetComponent, decorators: [{
|
|
21915
22343
|
type: Component,
|
|
@@ -21917,7 +22345,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
21917
22345
|
selector: 'ncc-abstract-import-net',
|
|
21918
22346
|
template: ''
|
|
21919
22347
|
}]
|
|
21920
|
-
}], ctorParameters: function () { return [{ type: SideMenuControl }, { type: PetriNetResourceService }, { type: LoggerService }, { type: SnackBarService }, { type: i1$2.TranslateService }]; } });
|
|
22348
|
+
}], ctorParameters: function () { return [{ type: SideMenuControl }, { type: PetriNetResourceService }, { type: UriService }, { type: LoggerService }, { type: SnackBarService }, { type: i1$2.TranslateService }]; } });
|
|
21921
22349
|
|
|
21922
22350
|
class AbstractNewCaseComponent {
|
|
21923
22351
|
constructor(_sideMenuControl, _formBuilder, _snackBarService, _caseResourceService, _hotkeysService, _translate) {
|
|
@@ -24564,14 +24992,16 @@ class AbstractHeaderComponent {
|
|
|
24564
24992
|
this.DEFAULT_COLUMN_WIDTH = 220;
|
|
24565
24993
|
this.INPUT_DEBOUNCE_TIME = 600;
|
|
24566
24994
|
this.type = HeaderType.CASE;
|
|
24567
|
-
this.
|
|
24995
|
+
this.hideHeaderMenu = false;
|
|
24996
|
+
this.showEditButton = true;
|
|
24997
|
+
this.showSortButton = true;
|
|
24998
|
+
this.showSearchButton = true;
|
|
24999
|
+
this.showTableSection = true;
|
|
24568
25000
|
this.headerModeEnum = HeaderMode;
|
|
24569
25001
|
this.headerTypeEnum = HeaderType;
|
|
24570
25002
|
this._initHeaderCount = undefined;
|
|
24571
25003
|
this._initResponsiveHeaders = undefined;
|
|
24572
|
-
(this._overflowService !== null)
|
|
24573
|
-
this.initializeFormControls(true) :
|
|
24574
|
-
this.initializeFormControls(false);
|
|
25004
|
+
this.initializeFormControls(this._overflowService !== null);
|
|
24575
25005
|
}
|
|
24576
25006
|
set maxHeaderColumns(count) {
|
|
24577
25007
|
if (this.headerService) {
|
|
@@ -24592,6 +25022,11 @@ class AbstractHeaderComponent {
|
|
|
24592
25022
|
this._initResponsiveHeaders = responsive;
|
|
24593
25023
|
}
|
|
24594
25024
|
}
|
|
25025
|
+
changeHeadersMode(mode, saveLastMode = true) {
|
|
25026
|
+
if (this.headerService) {
|
|
25027
|
+
this.headerService.changeMode(mode, saveLastMode);
|
|
25028
|
+
}
|
|
25029
|
+
}
|
|
24595
25030
|
ngOnInit() {
|
|
24596
25031
|
this.resolveHeaderService();
|
|
24597
25032
|
this.initializedHeaderSearch();
|
|
@@ -24700,7 +25135,7 @@ class AbstractHeaderComponent {
|
|
|
24700
25135
|
}
|
|
24701
25136
|
}
|
|
24702
25137
|
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 });
|
|
24703
|
-
AbstractHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractHeaderComponent, selector: "ncc-abstract-header", inputs: { type: "type",
|
|
25138
|
+
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 });
|
|
24704
25139
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractHeaderComponent, decorators: [{
|
|
24705
25140
|
type: Component,
|
|
24706
25141
|
args: [{
|
|
@@ -24711,7 +25146,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
24711
25146
|
type: Optional
|
|
24712
25147
|
}] }]; }, propDecorators: { type: [{
|
|
24713
25148
|
type: Input
|
|
24714
|
-
}],
|
|
25149
|
+
}], hideHeaderMenu: [{
|
|
25150
|
+
type: Input
|
|
25151
|
+
}], showEditButton: [{
|
|
25152
|
+
type: Input
|
|
25153
|
+
}], showSortButton: [{
|
|
25154
|
+
type: Input
|
|
25155
|
+
}], showSearchButton: [{
|
|
25156
|
+
type: Input
|
|
25157
|
+
}], showTableSection: [{
|
|
24715
25158
|
type: Input
|
|
24716
25159
|
}], maxHeaderColumns: [{
|
|
24717
25160
|
type: Input
|
|
@@ -25454,147 +25897,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
25454
25897
|
|
|
25455
25898
|
/* COMPONENTS */
|
|
25456
25899
|
|
|
25457
|
-
var GroupNavigationConstants;
|
|
25458
|
-
(function (GroupNavigationConstants) {
|
|
25459
|
-
/**
|
|
25460
|
-
* Name of the component that indicates the position of the group specific navigation elements.
|
|
25461
|
-
*/
|
|
25462
|
-
GroupNavigationConstants["GROUP_NAVIGATION_OUTLET"] = "groupNavigation";
|
|
25463
|
-
/**
|
|
25464
|
-
* Name of the router param that is used to provide information about the selected filter to the group navigation view component
|
|
25465
|
-
*/
|
|
25466
|
-
GroupNavigationConstants["GROUP_NAVIGATION_ROUTER_PARAM"] = "filterCaseId";
|
|
25467
|
-
/**
|
|
25468
|
-
* Id of the transition that stores the group navigation menu data
|
|
25469
|
-
*/
|
|
25470
|
-
GroupNavigationConstants["NAVIGATION_CONFIG_TRANSITION_ID"] = "navigationMenuConfig";
|
|
25471
|
-
/**
|
|
25472
|
-
* Id of the task ref field that holds the ids of the individual navigation item tasks
|
|
25473
|
-
*/
|
|
25474
|
-
GroupNavigationConstants["NAVIGATION_ENTRIES_TASK_REF_FIELD_ID"] = "filter_tasks";
|
|
25475
|
-
/**
|
|
25476
|
-
* Suffix of the field id that contains the name of the navigation entry.
|
|
25477
|
-
* Since the field itself is inserted via task ref the actual id is prefixed by the task id.
|
|
25478
|
-
*/
|
|
25479
|
-
GroupNavigationConstants["NAVIGATION_ENTRY_TITLE_FIELD_ID_SUFFIX"] = "entry_name";
|
|
25480
|
-
/**
|
|
25481
|
-
* Suffix of the field id that contains the filter case id.
|
|
25482
|
-
* Since the field itself is inserted via task ref the actual id is prefixed by the task id.
|
|
25483
|
-
*/
|
|
25484
|
-
GroupNavigationConstants["NAVIGATION_FILTER_CASE_ID_FIELD_ID_SUFFIX"] = "filter_case_id";
|
|
25485
|
-
/**
|
|
25486
|
-
* Suffix of the field id that is the navigation entry marker.
|
|
25487
|
-
* Since the field itself is inserted via task ref the actual id is prefixed by the task id.
|
|
25488
|
-
*/
|
|
25489
|
-
GroupNavigationConstants["NAVIGATION_ENTRY_MARKER_FIELD_ID_SUFFIX"] = "entry_marker";
|
|
25490
|
-
/**
|
|
25491
|
-
* Suffix of the boolean field id that determines if the navigation entry defines an icon.
|
|
25492
|
-
* Since the field itself is inserted via task ref the actual id is prefixed by the task id.
|
|
25493
|
-
*/
|
|
25494
|
-
GroupNavigationConstants["NAVIGATION_ENTRY_ICON_ENABLED_FIELD_ID_SUFFIX"] = "use_icon";
|
|
25495
|
-
/**
|
|
25496
|
-
* Suffix of the text field id that contains the id of the used material icon.
|
|
25497
|
-
* Since the field itself is inserted via task ref the actual id is prefixed by the task id.
|
|
25498
|
-
*/
|
|
25499
|
-
GroupNavigationConstants["NAVIGATION_ENTRY_ICON_FIELD_ID_SUFFIX"] = "icon_name";
|
|
25500
|
-
/**
|
|
25501
|
-
* Suffix of the text field id that contains the IDs of roles that are able to view the navigation entry.
|
|
25502
|
-
* Since the field itself is inserted via task ref the actual id is prefixed by the task id.
|
|
25503
|
-
*/
|
|
25504
|
-
GroupNavigationConstants["NAVIGATION_ENTRY_ALLOWED_ROLES_FIELD_ID_SUFFIX"] = "allowed_roles";
|
|
25505
|
-
/**
|
|
25506
|
-
* Suffix of the text field id that contains the IDs of roles that are banned from viewing the navigation entry.
|
|
25507
|
-
* Since the field itself is inserted via task ref the actual id is prefixed by the task id.
|
|
25508
|
-
*/
|
|
25509
|
-
GroupNavigationConstants["NAVIGATION_ENTRY_BANNED_ROLES_FIELD_ID_SUFFIX"] = "banned_roles";
|
|
25510
|
-
/**
|
|
25511
|
-
* The number of datagroups in the navigation configuration task that correspond to a single navigation entry.
|
|
25512
|
-
*/
|
|
25513
|
-
GroupNavigationConstants[GroupNavigationConstants["DATAGROUPS_PER_NAVIGATION_ENTRY"] = 2] = "DATAGROUPS_PER_NAVIGATION_ENTRY";
|
|
25514
|
-
})(GroupNavigationConstants || (GroupNavigationConstants = {}));
|
|
25515
|
-
|
|
25516
|
-
/**
|
|
25517
|
-
* Forces a re-render of the tree backed by the datasource
|
|
25518
|
-
*/
|
|
25519
|
-
function refreshTree(tree) {
|
|
25520
|
-
const d = tree.data;
|
|
25521
|
-
tree.data = null;
|
|
25522
|
-
tree.data = d;
|
|
25523
|
-
}
|
|
25524
|
-
|
|
25525
|
-
/**
|
|
25526
|
-
* Extracts the item name and item icon (if any) rom a section of the navigation item task data.
|
|
25527
|
-
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
25528
|
-
*/
|
|
25529
|
-
function extractIconAndTitle(dataSection) {
|
|
25530
|
-
const result = { name: '' };
|
|
25531
|
-
if (dataSection.length === 0) {
|
|
25532
|
-
throw new Error('The provided task data does not belong to a Navigation menu item task. Icon and title cannot be extracted');
|
|
25533
|
-
}
|
|
25534
|
-
const nameField = getFieldFromDataGroups(dataSection, GroupNavigationConstants.NAVIGATION_ENTRY_TITLE_FIELD_ID_SUFFIX);
|
|
25535
|
-
if (nameField === undefined) {
|
|
25536
|
-
throw new Error('Navigation entry name could not be resolved');
|
|
25537
|
-
}
|
|
25538
|
-
result.name = nameField.value;
|
|
25539
|
-
const useIcon = getFieldFromDataGroups(dataSection, GroupNavigationConstants.NAVIGATION_ENTRY_ICON_ENABLED_FIELD_ID_SUFFIX);
|
|
25540
|
-
if (useIcon !== undefined && useIcon.value) {
|
|
25541
|
-
const icon = getFieldFromDataGroups(dataSection, GroupNavigationConstants.NAVIGATION_ENTRY_ICON_FIELD_ID_SUFFIX);
|
|
25542
|
-
if (icon === undefined) {
|
|
25543
|
-
this._log.error('Navigation entry icon could not be resolved, but is enabled. Icon was ignored');
|
|
25544
|
-
}
|
|
25545
|
-
else {
|
|
25546
|
-
result.icon = icon.value;
|
|
25547
|
-
}
|
|
25548
|
-
}
|
|
25549
|
-
return result;
|
|
25550
|
-
}
|
|
25551
|
-
/**
|
|
25552
|
-
* Based on provided parameter extracts allowed or banned roles into an Array of strings from a section of the navigation item task data.
|
|
25553
|
-
* Each item has format ROLE_IMPORT_ID:NET_IMPORT_ID
|
|
25554
|
-
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
25555
|
-
* @param roleFieldId ID of field containing banned or allowed role IDs
|
|
25556
|
-
* @returns an Array of string values representing role IDs
|
|
25557
|
-
*/
|
|
25558
|
-
function extractRoles(dataSection, roleFieldId) {
|
|
25559
|
-
if (dataSection.length === 0) {
|
|
25560
|
-
throw new Error('The provided task data does not belong to a Navigation menu item task. Role entries cannot be extracted');
|
|
25561
|
-
}
|
|
25562
|
-
const roleIds = getFieldFromDataGroups(dataSection, roleFieldId);
|
|
25563
|
-
if (roleIds === undefined) {
|
|
25564
|
-
throw new Error('Navigation entry role authorization field could not be resolved');
|
|
25565
|
-
}
|
|
25566
|
-
return roleIds.choices.map(choice => choice.key);
|
|
25567
|
-
}
|
|
25568
|
-
/**
|
|
25569
|
-
* Extracts the data and creates a filter object from the navigation item task data.
|
|
25570
|
-
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
25571
|
-
*/
|
|
25572
|
-
function extractFilterFromData(dataSection) {
|
|
25573
|
-
return extractFilterFromFilterField(extractFilterFieldFromData(dataSection));
|
|
25574
|
-
}
|
|
25575
|
-
/**
|
|
25576
|
-
* Extracts the filter field from the navigation item task data.
|
|
25577
|
-
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
25578
|
-
* @returns The extracted {@link FilterField} or `undefined` if it could not be extracted.
|
|
25579
|
-
*/
|
|
25580
|
-
function extractFilterFieldFromData(dataSection) {
|
|
25581
|
-
const filterField = getFieldFromDataGroups(dataSection, UserFilterConstants.FILTER_FIELD_ID);
|
|
25582
|
-
if (filterField === undefined || !(filterField instanceof FilterField)) {
|
|
25583
|
-
throw new Error(`Filter could not be extracted. The provided datagroups do not contain a filter field with ID '${UserFilterConstants.FILTER_FIELD_ID}'`);
|
|
25584
|
-
}
|
|
25585
|
-
return filterField;
|
|
25586
|
-
}
|
|
25587
|
-
/**
|
|
25588
|
-
* @returns a {@link SimpleFilter} containing the filter stored in the provided {@link FilterField}.
|
|
25589
|
-
* Throws an error if this is not possible.
|
|
25590
|
-
*/
|
|
25591
|
-
function extractFilterFromFilterField(filterField) {
|
|
25592
|
-
if (filterField === undefined || !(filterField instanceof FilterField)) {
|
|
25593
|
-
throw new Error('Filter could not be resolved');
|
|
25594
|
-
}
|
|
25595
|
-
return SimpleFilter.fromQuery({ query: filterField.value }, filterField.filterMetadata.filterType);
|
|
25596
|
-
}
|
|
25597
|
-
|
|
25598
25900
|
class RoleGuardService {
|
|
25599
25901
|
constructor(_redirectService, _userService, _configService, _log) {
|
|
25600
25902
|
this._redirectService = _redirectService;
|
|
@@ -25731,94 +26033,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
25731
26033
|
}]
|
|
25732
26034
|
}], ctorParameters: function () { return [{ type: RedirectService }, { type: UserService }, { type: ConfigurationService }, { type: i2$3.Router }]; } });
|
|
25733
26035
|
|
|
25734
|
-
/**
|
|
25735
|
-
* This service allows access to information about the groups of the currently logged user.
|
|
25736
|
-
*
|
|
25737
|
-
* If no user is logged an empty array is provided.
|
|
25738
|
-
*
|
|
25739
|
-
* If a user can be owner of at most one group, this service provides utility methods to access this group directly.
|
|
25740
|
-
*
|
|
25741
|
-
* The groups are assumed to be instances of the engine group process, this is never checked nor enforced.
|
|
25742
|
-
*/
|
|
25743
|
-
class NextGroupService {
|
|
25744
|
-
constructor(_userService, _caseResourceService) {
|
|
25745
|
-
this._userService = _userService;
|
|
25746
|
-
this._caseResourceService = _caseResourceService;
|
|
25747
|
-
this._ownerGroups$ = new BehaviorSubject([]);
|
|
25748
|
-
this._memberGroups$ = new BehaviorSubject([]);
|
|
25749
|
-
this._userSub = this._userService.user$.pipe(switchMap(user => {
|
|
25750
|
-
if (!user || user.id === '') {
|
|
25751
|
-
return of([]);
|
|
25752
|
-
}
|
|
25753
|
-
const params = new HttpParams();
|
|
25754
|
-
params.set(PaginationParams.PAGE_SIZE, `${user.nextGroups.length}`);
|
|
25755
|
-
return this._caseResourceService.searchCases(SimpleFilter.fromCaseQuery({ stringId: user.nextGroups }), params)
|
|
25756
|
-
.pipe(map(page => page.content ? page.content : []), map(groups => groups.filter(group => group.author.fullName !== 'application engine')));
|
|
25757
|
-
})).subscribe(groups => {
|
|
25758
|
-
const ownerGroups = groups.filter(g => g.author.email === this._userService.user.email);
|
|
25759
|
-
this._ownerGroups$.next(ownerGroups);
|
|
25760
|
-
this._memberGroups$.next(groups);
|
|
25761
|
-
});
|
|
25762
|
-
}
|
|
25763
|
-
ngOnDestroy() {
|
|
25764
|
-
this._userSub.unsubscribe();
|
|
25765
|
-
this._memberGroups$.complete();
|
|
25766
|
-
this._ownerGroups$.complete();
|
|
25767
|
-
}
|
|
25768
|
-
/**
|
|
25769
|
-
* @returns an Observable of all the groups the currently logged user is a member of
|
|
25770
|
-
*/
|
|
25771
|
-
get memberGroups$() {
|
|
25772
|
-
return this._memberGroups$.asObservable();
|
|
25773
|
-
}
|
|
25774
|
-
/**
|
|
25775
|
-
* @returns an Observable of all the groups the currently logged user is an owner of
|
|
25776
|
-
*/
|
|
25777
|
-
get ownerGroups$() {
|
|
25778
|
-
return this._ownerGroups$.asObservable();
|
|
25779
|
-
}
|
|
25780
|
-
/**
|
|
25781
|
-
* @returns an Array of all the groups the currently logged user is a member of
|
|
25782
|
-
*/
|
|
25783
|
-
get memberGroups() {
|
|
25784
|
-
return this._memberGroups$.getValue();
|
|
25785
|
-
}
|
|
25786
|
-
/**
|
|
25787
|
-
* @returns an Array of all the groups the currently logged user is an owner of
|
|
25788
|
-
*/
|
|
25789
|
-
get ownerGroups() {
|
|
25790
|
-
return this._ownerGroups$.getValue();
|
|
25791
|
-
}
|
|
25792
|
-
/**
|
|
25793
|
-
* @returns an Observable containing the first element of the [ownerGroups$]{@link NextGroupService#ownerGroups$} observable,
|
|
25794
|
-
* or `undefined` if the contained array is empty
|
|
25795
|
-
*/
|
|
25796
|
-
get firstOwnerGroup$() {
|
|
25797
|
-
return this._ownerGroups$.pipe(map(array => array.length > 0 ? array[0] : undefined));
|
|
25798
|
-
}
|
|
25799
|
-
/**
|
|
25800
|
-
* @returns the first element of the [ownerGroups]{@link NextGroupService#ownerGroups} array, or `undefined` if the array is empty
|
|
25801
|
-
*/
|
|
25802
|
-
get firstOwnerGroup() {
|
|
25803
|
-
const ownerGroups = this.ownerGroups;
|
|
25804
|
-
return ownerGroups.length > 0 ? ownerGroups[0] : undefined;
|
|
25805
|
-
}
|
|
25806
|
-
/**
|
|
25807
|
-
* @deprecated in NAE 5.6.0 - use [ownerGroups]{@link NextGroupService#ownerGroups} instead
|
|
25808
|
-
*/
|
|
25809
|
-
get groupOfUser() {
|
|
25810
|
-
return this.ownerGroups;
|
|
25811
|
-
}
|
|
25812
|
-
}
|
|
25813
|
-
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 });
|
|
25814
|
-
NextGroupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NextGroupService, providedIn: 'root' });
|
|
25815
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NextGroupService, decorators: [{
|
|
25816
|
-
type: Injectable,
|
|
25817
|
-
args: [{
|
|
25818
|
-
providedIn: 'root'
|
|
25819
|
-
}]
|
|
25820
|
-
}], ctorParameters: function () { return [{ type: UserService }, { type: CaseResourceService }]; } });
|
|
25821
|
-
|
|
25822
26036
|
class GroupGuardService {
|
|
25823
26037
|
constructor(_redirectService, _userService, _nextGroupService, _configService, _log) {
|
|
25824
26038
|
this._redirectService = _redirectService;
|
|
@@ -25927,84 +26141,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
25927
26141
|
}]
|
|
25928
26142
|
}], ctorParameters: function () { return [{ type: ConfigurationService }, { type: UserService }, { type: RoleGuardService }, { type: AuthorityGuardService }, { type: GroupGuardService }]; } });
|
|
25929
26143
|
|
|
25930
|
-
/**
|
|
25931
|
-
* This service to the groups that are "active" for the logged user.
|
|
25932
|
-
*
|
|
25933
|
-
* The meaning of "active" can wary from application to application. And this service provides the utility to track this state.
|
|
25934
|
-
*
|
|
25935
|
-
* The active groups are assumed to be a subset of the groups the logged user is a member of,
|
|
25936
|
-
* but this assumption is not enforced nor checked.
|
|
25937
|
-
*
|
|
25938
|
-
* If at most one group can be active at a time, this service provides utility methods to access this group directly.
|
|
25939
|
-
*
|
|
25940
|
-
* The groups are assumed to be instances of the engine group process, this is never checked nor enforced.
|
|
25941
|
-
*
|
|
25942
|
-
* In the default implementation the initially active groups are all the groups the logged user is a member of.
|
|
25943
|
-
*/
|
|
25944
|
-
class ActiveGroupService {
|
|
25945
|
-
constructor(_groupService) {
|
|
25946
|
-
this._groupService = _groupService;
|
|
25947
|
-
this._activeGroups$ = new BehaviorSubject([]);
|
|
25948
|
-
this._groupSub = this._groupService.memberGroups$.subscribe(groups => {
|
|
25949
|
-
this._activeGroups$.next(groups);
|
|
25950
|
-
});
|
|
25951
|
-
}
|
|
25952
|
-
ngOnDestroy() {
|
|
25953
|
-
this._groupSub.unsubscribe();
|
|
25954
|
-
this._activeGroups$.complete();
|
|
25955
|
-
}
|
|
25956
|
-
/**
|
|
25957
|
-
* In the default implementation this stream copies the values of the [memberGroups$]{@link NextGroupService#memberGroups$} stream
|
|
25958
|
-
* of the {@link NextGroupService}. Whenever the copies stream emits, the underlying stream in this class emits the same value.
|
|
25959
|
-
*
|
|
25960
|
-
* @returns an Observable of all the groups that are currently active
|
|
25961
|
-
*/
|
|
25962
|
-
get activeGroups$() {
|
|
25963
|
-
return this._activeGroups$.asObservable();
|
|
25964
|
-
}
|
|
25965
|
-
get activeGroups() {
|
|
25966
|
-
return this._activeGroups$.getValue();
|
|
25967
|
-
}
|
|
25968
|
-
set activeGroups(activeGroups) {
|
|
25969
|
-
this._activeGroups$.next(activeGroups);
|
|
25970
|
-
}
|
|
25971
|
-
/**
|
|
25972
|
-
* @returns an Observable containing the first element of the [activeGroups$]{@link ActiveGroupService#activeGroups$} observable,
|
|
25973
|
-
* or `undefined` if the contained array is empty
|
|
25974
|
-
*/
|
|
25975
|
-
get activeGroup$() {
|
|
25976
|
-
return this.activeGroups$.pipe(map(array => array.length > 0 ? array[0] : undefined));
|
|
25977
|
-
}
|
|
25978
|
-
/**
|
|
25979
|
-
* @returns the first element of the [activeGroups]{@link ActiveGroupService#activeGroups} array, or `undefined` if the array is empty
|
|
25980
|
-
*/
|
|
25981
|
-
get activeGroup() {
|
|
25982
|
-
const activeGroups = this.activeGroups;
|
|
25983
|
-
return activeGroups.length > 0 ? activeGroups[0] : undefined;
|
|
25984
|
-
}
|
|
25985
|
-
/**
|
|
25986
|
-
* Emits a new array into the [activeGroups$]{@link ActiveGroupService#activeGroups$} observable, that contains only
|
|
25987
|
-
* the provided {@link Case} object. If `undefined` is passed as argument, an empty array will be pushed into the observable.
|
|
25988
|
-
* @param activeGroup the new active group case reference
|
|
25989
|
-
*/
|
|
25990
|
-
set activeGroup(activeGroup) {
|
|
25991
|
-
if (activeGroup === undefined) {
|
|
25992
|
-
this._activeGroups$.next([]);
|
|
25993
|
-
}
|
|
25994
|
-
else {
|
|
25995
|
-
this._activeGroups$.next([activeGroup]);
|
|
25996
|
-
}
|
|
25997
|
-
}
|
|
25998
|
-
}
|
|
25999
|
-
ActiveGroupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ActiveGroupService, deps: [{ token: NextGroupService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
26000
|
-
ActiveGroupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ActiveGroupService, providedIn: 'root' });
|
|
26001
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ActiveGroupService, decorators: [{
|
|
26002
|
-
type: Injectable,
|
|
26003
|
-
args: [{
|
|
26004
|
-
providedIn: 'root'
|
|
26005
|
-
}]
|
|
26006
|
-
}], ctorParameters: function () { return [{ type: NextGroupService }]; } });
|
|
26007
|
-
|
|
26008
26144
|
class DynamicNavigationRouteProviderService {
|
|
26009
26145
|
constructor(_config) {
|
|
26010
26146
|
this._config = _config;
|
|
@@ -26044,10 +26180,8 @@ class AbstractNavigationTreeComponent extends AbstractNavigationResizableDrawerC
|
|
|
26044
26180
|
this._taskResourceService = _taskResourceService;
|
|
26045
26181
|
this._languageService = _languageService;
|
|
26046
26182
|
this._navigationRouteProvider = _navigationRouteProvider;
|
|
26047
|
-
this._groupNavNodesCount = 0;
|
|
26048
26183
|
this.treeControl = new NestedTreeControl(node => node.children);
|
|
26049
26184
|
this.dataSource = new MatTreeNestedDataSource();
|
|
26050
|
-
this._groupNavigationConfig = this._config.getConfigurationSubtree(['services', 'groupNavigation']);
|
|
26051
26185
|
this.dataSource.data = this.resolveNavigationNodes(_config.getConfigurationSubtree(['views']), '');
|
|
26052
26186
|
this.resolveLevels(this.dataSource.data);
|
|
26053
26187
|
this._reloadNavigation = new ReplaySubject(1);
|
|
@@ -26114,19 +26248,9 @@ class AbstractNavigationTreeComponent extends AbstractNavigationResizableDrawerC
|
|
|
26114
26248
|
if (!views || Object.keys(views).length === 0) {
|
|
26115
26249
|
return null;
|
|
26116
26250
|
}
|
|
26117
|
-
let groupNavigationGenerated = false;
|
|
26118
26251
|
const nodes = [];
|
|
26119
26252
|
Object.keys(views).forEach((viewKey) => {
|
|
26120
26253
|
const view = views[viewKey];
|
|
26121
|
-
if (!groupNavigationGenerated && this.isGroupNavigationNode(view)) {
|
|
26122
|
-
groupNavigationGenerated = true;
|
|
26123
|
-
const insertPosition = (ancestorNodeContainer ?? nodes).length;
|
|
26124
|
-
this._subLangChange = this._languageService.getLangChange$().subscribe(() => {
|
|
26125
|
-
this.loadGroupNavigationNodes(insertPosition, ancestorNodeContainer ?? nodes);
|
|
26126
|
-
});
|
|
26127
|
-
this.loadGroupNavigationNodes(insertPosition, ancestorNodeContainer ?? nodes);
|
|
26128
|
-
return; // continue
|
|
26129
|
-
}
|
|
26130
26254
|
if (!this.hasNavigation(view) && !this.hasSubRoutes(view)) {
|
|
26131
26255
|
return; // continue
|
|
26132
26256
|
}
|
|
@@ -26231,111 +26355,6 @@ class AbstractNavigationTreeComponent extends AbstractNavigationResizableDrawerC
|
|
|
26231
26355
|
}
|
|
26232
26356
|
this.resolveLevels(this.dataSource.data);
|
|
26233
26357
|
}
|
|
26234
|
-
/**
|
|
26235
|
-
* @returns `true` if the layout of the provided {@link View} node's name indicates it is a
|
|
26236
|
-
* [group navigation outlet]{@link GroupNavigationConstants#GROUP_NAVIGATION_OUTLET}. Returns `false` otherwise.
|
|
26237
|
-
*/
|
|
26238
|
-
isGroupNavigationNode(view) {
|
|
26239
|
-
return view?.layout?.name === GroupNavigationConstants.GROUP_NAVIGATION_OUTLET;
|
|
26240
|
-
}
|
|
26241
|
-
/**
|
|
26242
|
-
* Forces a reload of the group navigation nodes.
|
|
26243
|
-
* @param insertPosition the position in the container where group navigation nodes reside
|
|
26244
|
-
* @param nodeContainer the node container that contains the group navigation nodes
|
|
26245
|
-
* (can be an inner node of the navigation tree or its root)
|
|
26246
|
-
*/
|
|
26247
|
-
loadGroupNavigationNodes(insertPosition, nodeContainer) {
|
|
26248
|
-
if (this._subGroupResolution !== undefined && !this._subGroupResolution.closed) {
|
|
26249
|
-
this._subGroupResolution.unsubscribe();
|
|
26250
|
-
}
|
|
26251
|
-
this._subGroupResolution = this.generateGroupNavigationNodes().pipe(take(1)).subscribe(groupNavNodes => {
|
|
26252
|
-
nodeContainer.splice(insertPosition, this._groupNavNodesCount, ...groupNavNodes);
|
|
26253
|
-
this._groupNavNodesCount = groupNavNodes.length;
|
|
26254
|
-
refreshTree(this.dataSource);
|
|
26255
|
-
});
|
|
26256
|
-
}
|
|
26257
|
-
generateGroupNavigationNodes() {
|
|
26258
|
-
return forkJoin(this._activeGroupService.activeGroups.map(groupCase => {
|
|
26259
|
-
return this._taskResourceService.searchTask(SimpleFilter.fromTaskQuery({
|
|
26260
|
-
case: { id: groupCase.stringId },
|
|
26261
|
-
transitionId: GroupNavigationConstants.NAVIGATION_CONFIG_TRANSITION_ID
|
|
26262
|
-
})).pipe(map(taskPage => {
|
|
26263
|
-
if (hasContent(taskPage)) {
|
|
26264
|
-
return this._taskResourceService.getData(taskPage.content[0].stringId);
|
|
26265
|
-
}
|
|
26266
|
-
else {
|
|
26267
|
-
this._log.error('Group navigation configuration task was not found.'
|
|
26268
|
-
+ ' Navigation for this group cannot be constructed.');
|
|
26269
|
-
return of([]);
|
|
26270
|
-
}
|
|
26271
|
-
}), concatMap(o => o));
|
|
26272
|
-
})).pipe(map((navigationConfigurations) => {
|
|
26273
|
-
const result = [];
|
|
26274
|
-
for (const navConfig of navigationConfigurations) {
|
|
26275
|
-
result.push(...this.convertDatagroupsToNavEntries(navConfig));
|
|
26276
|
-
}
|
|
26277
|
-
return result;
|
|
26278
|
-
}));
|
|
26279
|
-
}
|
|
26280
|
-
convertDatagroupsToNavEntries(navConfigDatagroups) {
|
|
26281
|
-
const result = [];
|
|
26282
|
-
const entryDataGroupIndices = [];
|
|
26283
|
-
navConfigDatagroups.forEach((group, index) => {
|
|
26284
|
-
if (group.fields.some(field => field.stringId === GroupNavigationConstants.NAVIGATION_ENTRY_MARKER_FIELD_ID_SUFFIX)) {
|
|
26285
|
-
entryDataGroupIndices.push(index);
|
|
26286
|
-
}
|
|
26287
|
-
});
|
|
26288
|
-
let navEntriesTaskRef;
|
|
26289
|
-
navConfigDatagroups.some(group => {
|
|
26290
|
-
const taskRef = getField(group.fields, GroupNavigationConstants.NAVIGATION_ENTRIES_TASK_REF_FIELD_ID);
|
|
26291
|
-
if (taskRef !== undefined) {
|
|
26292
|
-
navEntriesTaskRef = taskRef;
|
|
26293
|
-
}
|
|
26294
|
-
return !!taskRef;
|
|
26295
|
-
});
|
|
26296
|
-
if (!navEntriesTaskRef) {
|
|
26297
|
-
throw new Error('The navigation configuration task contains no task ref with entries. Navigation cannot be constructed');
|
|
26298
|
-
}
|
|
26299
|
-
for (let order = 0; order < navEntriesTaskRef.value.length; order++) {
|
|
26300
|
-
const index = entryDataGroupIndices[order];
|
|
26301
|
-
const label = extractIconAndTitle(navConfigDatagroups.slice(index, index + GroupNavigationConstants.DATAGROUPS_PER_NAVIGATION_ENTRY));
|
|
26302
|
-
const newNode = { url: '', ...label };
|
|
26303
|
-
const url = this._navigationRouteProvider.route;
|
|
26304
|
-
if (url === undefined) {
|
|
26305
|
-
this._log.error(`No URL is configured in nae.json for configurable group navigation. Dynamic navigation entry was ignored`);
|
|
26306
|
-
continue;
|
|
26307
|
-
}
|
|
26308
|
-
newNode.url = `/${url}/${navEntriesTaskRef.value[order]}`;
|
|
26309
|
-
const allowedRoles = extractRoles(navConfigDatagroups.slice(index, index + GroupNavigationConstants.DATAGROUPS_PER_NAVIGATION_ENTRY), GroupNavigationConstants.NAVIGATION_ENTRY_ALLOWED_ROLES_FIELD_ID_SUFFIX);
|
|
26310
|
-
const bannedRoles = extractRoles(navConfigDatagroups.slice(index, index + GroupNavigationConstants.DATAGROUPS_PER_NAVIGATION_ENTRY), GroupNavigationConstants.NAVIGATION_ENTRY_BANNED_ROLES_FIELD_ID_SUFFIX);
|
|
26311
|
-
const splitAllowedRoles = this.extractRoleAndNetId(allowedRoles);
|
|
26312
|
-
const splitBannedRoles = this.extractRoleAndNetId(bannedRoles);
|
|
26313
|
-
if ((splitAllowedRoles.length === 0
|
|
26314
|
-
|| splitAllowedRoles.some(idPair => this._userService.hasRoleByIdentifier(idPair[0], idPair[1])))
|
|
26315
|
-
&& !splitBannedRoles.some(idPair => this._userService.hasRoleByIdentifier(idPair[0], idPair[1]))) {
|
|
26316
|
-
result.push(newNode);
|
|
26317
|
-
}
|
|
26318
|
-
}
|
|
26319
|
-
return result;
|
|
26320
|
-
}
|
|
26321
|
-
/**
|
|
26322
|
-
* Splits the provided strings on the ':' character and returns an array of the resulting splits.
|
|
26323
|
-
*
|
|
26324
|
-
* If any of the input strings split into fewer or more than 2 strings an error is thrown.
|
|
26325
|
-
*
|
|
26326
|
-
* @param joined a list of strings in the form `<role identifier>:<net identifier>`
|
|
26327
|
-
*/
|
|
26328
|
-
extractRoleAndNetId(joined) {
|
|
26329
|
-
const split = [];
|
|
26330
|
-
for (const pair of joined) {
|
|
26331
|
-
const splitPair = pair.split(':');
|
|
26332
|
-
if (splitPair.length !== 2) {
|
|
26333
|
-
throw new Error(`The role-net pair '${pair}' has invalid format! Cannot extract role and net identifiers.`);
|
|
26334
|
-
}
|
|
26335
|
-
split.push(splitPair);
|
|
26336
|
-
}
|
|
26337
|
-
return split;
|
|
26338
|
-
}
|
|
26339
26358
|
}
|
|
26340
26359
|
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 });
|
|
26341
26360
|
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 });
|
|
@@ -26496,635 +26515,145 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
26496
26515
|
type: Input
|
|
26497
26516
|
}] } });
|
|
26498
26517
|
|
|
26499
|
-
|
|
26500
|
-
|
|
26501
|
-
this.className = className;
|
|
26502
|
-
this.fileImportPath = fileImportPath;
|
|
26503
|
-
}
|
|
26504
|
-
}
|
|
26505
|
-
|
|
26506
|
-
/**
|
|
26507
|
-
* @license
|
|
26508
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
26509
|
-
*
|
|
26510
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
26511
|
-
* found in the LICENSE file at https://angular.io/license
|
|
26512
|
-
*
|
|
26513
|
-
* File copied from: angular_devkit/core/src/utils/strings.ts
|
|
26514
|
-
*/
|
|
26515
|
-
const STRING_DASHERIZE_REGEXP = (/[ _]/g);
|
|
26516
|
-
const STRING_DECAMELIZE_REGEXP = (/([a-z\d])([A-Z])/g);
|
|
26517
|
-
const STRING_CAMELIZE_REGEXP = (/(-|_|\.|\s)+(.)?/g);
|
|
26518
|
-
const STRING_UNDERSCORE_REGEXP_1 = (/([a-z\d])([A-Z]+)/g);
|
|
26519
|
-
const STRING_UNDERSCORE_REGEXP_2 = (/-|\s+/g);
|
|
26520
|
-
/**
|
|
26521
|
-
* Converts a camelized string into all lower case separated by underscores.
|
|
26522
|
-
*
|
|
26523
|
-
* ```javascript
|
|
26524
|
-
* decamelize('innerHTML'); // 'inner_html'
|
|
26525
|
-
* decamelize('action_name'); // 'action_name'
|
|
26526
|
-
* decamelize('css-class-name'); // 'css-class-name'
|
|
26527
|
-
* decamelize('my favorite items'); // 'my favorite items'
|
|
26528
|
-
* ```
|
|
26529
|
-
* @method decamelize
|
|
26530
|
-
* @param str The string to decamelize.
|
|
26531
|
-
* @return the decamelized string.
|
|
26532
|
-
*/
|
|
26533
|
-
function decamelize(str) {
|
|
26534
|
-
return str.replace(STRING_DECAMELIZE_REGEXP, '$1_$2').toLowerCase();
|
|
26535
|
-
}
|
|
26536
|
-
/**
|
|
26537
|
-
* Replaces underscores, spaces, or camelCase with dashes.
|
|
26538
|
-
* ```javascript
|
|
26539
|
-
* dasherize('innerHTML'); // 'inner-html'
|
|
26540
|
-
* dasherize('action_name'); // 'action-name'
|
|
26541
|
-
* dasherize('css-class-name'); // 'css-class-name'
|
|
26542
|
-
* dasherize('my favorite items'); // 'my-favorite-items'
|
|
26543
|
-
* ```
|
|
26544
|
-
* @method dasherize
|
|
26545
|
-
* @param str The string to dasherize.
|
|
26546
|
-
* @return the dasherized string.
|
|
26547
|
-
*/
|
|
26548
|
-
function dasherize(str) {
|
|
26549
|
-
return decamelize(str).replace(STRING_DASHERIZE_REGEXP, '-');
|
|
26550
|
-
}
|
|
26551
|
-
/**
|
|
26552
|
-
* Returns the lowerCamelCase form of a string.
|
|
26553
|
-
* ```javascript
|
|
26554
|
-
* camelize('innerHTML'); // 'innerHTML'
|
|
26555
|
-
* camelize('action_name'); // 'actionName'
|
|
26556
|
-
* camelize('css-class-name'); // 'cssClassName'
|
|
26557
|
-
* camelize('my favorite items'); // 'myFavoriteItems'
|
|
26558
|
-
* camelize('My Favorite Items'); // 'myFavoriteItems'
|
|
26559
|
-
* ```
|
|
26560
|
-
* @method camelize
|
|
26561
|
-
* @param str The string to camelize.
|
|
26562
|
-
* @return the camelized string.
|
|
26563
|
-
*/
|
|
26564
|
-
function camelize(str) {
|
|
26565
|
-
return str
|
|
26566
|
-
.replace(STRING_CAMELIZE_REGEXP, (_match, _separator, chr) => {
|
|
26567
|
-
return chr ? chr.toUpperCase() : '';
|
|
26568
|
-
})
|
|
26569
|
-
.replace(/^([A-Z])/, (match) => match.toLowerCase());
|
|
26570
|
-
}
|
|
26571
|
-
/**
|
|
26572
|
-
* Returns the UpperCamelCase form of a string.
|
|
26573
|
-
* ```javascript
|
|
26574
|
-
* 'innerHTML'.classify(); // 'InnerHTML'
|
|
26575
|
-
* 'action_name'.classify(); // 'ActionName'
|
|
26576
|
-
* 'css-class-name'.classify(); // 'CssClassName'
|
|
26577
|
-
* 'my favorite items'.classify(); // 'MyFavoriteItems'
|
|
26578
|
-
* ```
|
|
26579
|
-
* @method classify
|
|
26580
|
-
* @param str the string to classify
|
|
26581
|
-
* @return the classified string
|
|
26582
|
-
*/
|
|
26583
|
-
function classify(str) {
|
|
26584
|
-
return str.split('.').map(part => capitalize(camelize(part))).join('.');
|
|
26585
|
-
}
|
|
26586
|
-
/**
|
|
26587
|
-
* More general than decamelize. Returns the lower\_case\_and\_underscored
|
|
26588
|
-
* form of a string.
|
|
26589
|
-
* ```javascript
|
|
26590
|
-
* 'innerHTML'.underscore(); // 'inner_html'
|
|
26591
|
-
* 'action_name'.underscore(); // 'action_name'
|
|
26592
|
-
* 'css-class-name'.underscore(); // 'css_class_name'
|
|
26593
|
-
* 'my favorite items'.underscore(); // 'my_favorite_items'
|
|
26594
|
-
* ```
|
|
26595
|
-
* @method underscore
|
|
26596
|
-
* @param str The string to underscore.
|
|
26597
|
-
* @return the underscored string.
|
|
26598
|
-
*/
|
|
26599
|
-
function underscore(str) {
|
|
26600
|
-
return str
|
|
26601
|
-
.replace(STRING_UNDERSCORE_REGEXP_1, '$1_$2')
|
|
26602
|
-
.replace(STRING_UNDERSCORE_REGEXP_2, '_')
|
|
26603
|
-
.toLowerCase();
|
|
26604
|
-
}
|
|
26605
|
-
/**
|
|
26606
|
-
* Returns the Capitalized form of a string
|
|
26607
|
-
* ```javascript
|
|
26608
|
-
* 'innerHTML'.capitalize() // 'InnerHTML'
|
|
26609
|
-
* 'action_name'.capitalize() // 'Action_name'
|
|
26610
|
-
* 'css-class-name'.capitalize() // 'Css-class-name'
|
|
26611
|
-
* 'my favorite items'.capitalize() // 'My favorite items'
|
|
26612
|
-
* ```
|
|
26613
|
-
* @method capitalize
|
|
26614
|
-
* @param str The string to capitalize.
|
|
26615
|
-
* @return The capitalized string.
|
|
26616
|
-
*/
|
|
26617
|
-
function capitalize(str) {
|
|
26618
|
-
return str.charAt(0).toUpperCase() + str.substr(1);
|
|
26619
|
-
}
|
|
26620
|
-
/**
|
|
26621
|
-
* Calculate the levenshtein distance of two strings.
|
|
26622
|
-
* See https://en.wikipedia.org/wiki/Levenshtein_distance.
|
|
26623
|
-
* Based off https://gist.github.com/andrei-m/982927 (for using the faster dynamic programming
|
|
26624
|
-
* version).
|
|
26625
|
-
*
|
|
26626
|
-
* @param a String a.
|
|
26627
|
-
* @param b String b.
|
|
26628
|
-
* @returns A number that represents the distance between the two strings. The greater the number
|
|
26629
|
-
* the more distant the strings are from each others.
|
|
26630
|
-
*/
|
|
26631
|
-
function levenshtein(a, b) {
|
|
26632
|
-
if (a.length === 0) {
|
|
26633
|
-
return b.length;
|
|
26634
|
-
}
|
|
26635
|
-
if (b.length === 0) {
|
|
26636
|
-
return a.length;
|
|
26637
|
-
}
|
|
26638
|
-
const matrix = [];
|
|
26639
|
-
// increment along the first column of each row
|
|
26640
|
-
for (let i = 0; i <= b.length; i++) {
|
|
26641
|
-
matrix[i] = [i];
|
|
26642
|
-
}
|
|
26643
|
-
// increment each column in the first row
|
|
26644
|
-
for (let j = 0; j <= a.length; j++) {
|
|
26645
|
-
matrix[0][j] = j;
|
|
26646
|
-
}
|
|
26647
|
-
// Fill in the rest of the matrix
|
|
26648
|
-
for (let i = 1; i <= b.length; i++) {
|
|
26649
|
-
for (let j = 1; j <= a.length; j++) {
|
|
26650
|
-
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
|
26651
|
-
matrix[i][j] = matrix[i - 1][j - 1];
|
|
26652
|
-
}
|
|
26653
|
-
else {
|
|
26654
|
-
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
|
|
26655
|
-
matrix[i][j - 1] + 1, // insertion
|
|
26656
|
-
matrix[i - 1][j] + 1);
|
|
26657
|
-
}
|
|
26658
|
-
}
|
|
26659
|
-
}
|
|
26660
|
-
return matrix[b.length][a.length];
|
|
26661
|
-
}
|
|
26662
|
-
|
|
26663
|
-
class ViewClassInfo extends ImportToAdd {
|
|
26664
|
-
constructor(path, viewType, customComponentName) {
|
|
26665
|
-
super('', '');
|
|
26666
|
-
if (!customComponentName) {
|
|
26667
|
-
this.prefix = ViewClassInfo.convertPathToClassNamePrefix(path);
|
|
26668
|
-
const classSuffix = ViewClassInfo.resolveClassSuffixForView(viewType);
|
|
26669
|
-
this.nameWithoutComponent = `${classify(this.prefix)}${classSuffix}`;
|
|
26670
|
-
this.fileImportPath = `./views/${path}/${this.prefix}-${dasherize(classSuffix)}.component`;
|
|
26671
|
-
}
|
|
26672
|
-
else {
|
|
26673
|
-
this.prefix = '';
|
|
26674
|
-
this.nameWithoutComponent = classify(customComponentName);
|
|
26675
|
-
this.fileImportPath = `./views/${path}/${dasherize(customComponentName)}.component`;
|
|
26676
|
-
}
|
|
26677
|
-
this.className = `${this.nameWithoutComponent}Component`;
|
|
26678
|
-
}
|
|
26679
|
-
static convertPathToClassNamePrefix(path) {
|
|
26680
|
-
const regexDash = /-/g;
|
|
26681
|
-
return path.replace(regexDash, '_').replace(/\//g, '-').toLocaleLowerCase();
|
|
26682
|
-
}
|
|
26683
|
-
static resolveClassSuffixForView(view) {
|
|
26684
|
-
switch (view) {
|
|
26685
|
-
case 'login':
|
|
26686
|
-
return 'Login';
|
|
26687
|
-
case 'tabView':
|
|
26688
|
-
return 'TabView';
|
|
26689
|
-
case 'taskView':
|
|
26690
|
-
return 'TaskView';
|
|
26691
|
-
case 'caseView':
|
|
26692
|
-
return 'CaseView';
|
|
26693
|
-
case 'emptyView':
|
|
26694
|
-
return 'EmptyView';
|
|
26695
|
-
case 'sidenavView':
|
|
26696
|
-
return 'SidenavView';
|
|
26697
|
-
case 'doubleDrawerView':
|
|
26698
|
-
return 'DoubleDrawerView';
|
|
26699
|
-
case 'toolbarView':
|
|
26700
|
-
return 'ToolbarView';
|
|
26701
|
-
case 'sidenavAndToolbarView':
|
|
26702
|
-
return 'SidenavAndToolbarView';
|
|
26703
|
-
case 'groupView':
|
|
26704
|
-
return 'GroupView';
|
|
26705
|
-
case 'dashboard':
|
|
26706
|
-
return 'Dashboard';
|
|
26707
|
-
case 'treeCaseView':
|
|
26708
|
-
return 'TreeCaseView';
|
|
26709
|
-
case 'workflowView':
|
|
26710
|
-
return 'WorkflowView';
|
|
26711
|
-
case 'roleAssignmentView':
|
|
26712
|
-
return 'RoleAssignmentView';
|
|
26713
|
-
case 'ldapRoleAssignmentView':
|
|
26714
|
-
return 'LdapRoleAssignmentView';
|
|
26715
|
-
default:
|
|
26716
|
-
throw new Error(`Unknown view type '${view}'`);
|
|
26717
|
-
}
|
|
26718
|
-
}
|
|
26719
|
-
}
|
|
26720
|
-
|
|
26721
|
-
/**
|
|
26722
|
-
* Holds component for dynamic routing resolution of group navigation component resolver component by the {@link RoutingBuilderService}.
|
|
26723
|
-
*/
|
|
26724
|
-
const NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT = new InjectionToken('NaeGroupNavigationComponentResolverComponent');
|
|
26725
|
-
|
|
26726
|
-
const NAE_ROUTING_CONFIGURATION_PATH = "configPath";
|
|
26727
|
-
/**
|
|
26728
|
-
* Uses the information from nae.json to construct the application's routing
|
|
26729
|
-
*/
|
|
26730
|
-
class RoutingBuilderService {
|
|
26731
|
-
constructor(router, _configService, _viewService, _logger, _dynamicNavigationRouteService, _groupNavigationComponentResolverComponent) {
|
|
26732
|
-
this._configService = _configService;
|
|
26733
|
-
this._viewService = _viewService;
|
|
26734
|
-
this._logger = _logger;
|
|
26735
|
-
this._dynamicNavigationRouteService = _dynamicNavigationRouteService;
|
|
26736
|
-
this._groupNavigationComponentResolverComponent = _groupNavigationComponentResolverComponent;
|
|
26737
|
-
this._groupNavigationRouteGenerated = false;
|
|
26738
|
-
router.relativeLinkResolution = 'legacy';
|
|
26739
|
-
router.config.splice(0, router.config.length);
|
|
26740
|
-
for (const [pathSegment, view] of Object.entries(_configService.get().views)) {
|
|
26741
|
-
const route = this.constructRouteObject(view, pathSegment);
|
|
26742
|
-
if (route !== undefined) {
|
|
26743
|
-
router.config.push(route);
|
|
26744
|
-
}
|
|
26745
|
-
}
|
|
26746
|
-
router.config.push(...this.defaultRoutesRedirects());
|
|
26747
|
-
}
|
|
26748
|
-
constructRouteObject(view, configPath, ancestors = []) {
|
|
26749
|
-
const component = this.resolveComponentClass(view, configPath);
|
|
26750
|
-
if (component === undefined) {
|
|
26751
|
-
return undefined;
|
|
26752
|
-
}
|
|
26753
|
-
if (!view.routing) {
|
|
26754
|
-
this._logger.warn(`nae.json configuration is invalid. View at path '${configPath}'` +
|
|
26755
|
-
` must define a 'routing' attribute. Skipping this view for routing generation.`);
|
|
26756
|
-
return undefined;
|
|
26757
|
-
}
|
|
26758
|
-
const route = {
|
|
26759
|
-
path: view.routing.path,
|
|
26760
|
-
data: {
|
|
26761
|
-
[NAE_ROUTING_CONFIGURATION_PATH]: configPath
|
|
26762
|
-
},
|
|
26763
|
-
component
|
|
26764
|
-
};
|
|
26765
|
-
if (view?.layout?.name === GroupNavigationConstants.GROUP_NAVIGATION_OUTLET) {
|
|
26766
|
-
if (this._groupNavigationRouteGenerated) {
|
|
26767
|
-
this._logger.warn(`Multiple groupNavigationOutlets are present in nae.json. Duplicate entry found at path ${configPath}`);
|
|
26768
|
-
}
|
|
26769
|
-
else {
|
|
26770
|
-
this._logger.debug(`GroupNavigationOutlet found in nae.json at path '${configPath}'`);
|
|
26771
|
-
}
|
|
26772
|
-
const pathNoParams = route.path;
|
|
26773
|
-
route.path = `${pathNoParams}/:${GroupNavigationConstants.GROUP_NAVIGATION_ROUTER_PARAM}`;
|
|
26774
|
-
route.canActivate = [AuthenticationGuardService];
|
|
26775
|
-
const parentPathSegments = ancestors.map(a => a.path);
|
|
26776
|
-
parentPathSegments.push(pathNoParams);
|
|
26777
|
-
this._dynamicNavigationRouteService.route = parentPathSegments.join('/');
|
|
26778
|
-
this._groupNavigationRouteGenerated = true;
|
|
26779
|
-
return route;
|
|
26780
|
-
}
|
|
26781
|
-
if (view.routing.match !== undefined && view.routing.match) {
|
|
26782
|
-
route['pathMatch'] = 'full';
|
|
26783
|
-
}
|
|
26784
|
-
route['canActivate'] = [];
|
|
26785
|
-
if (view.access === 'private'
|
|
26786
|
-
|| view.access.hasOwnProperty('role')
|
|
26787
|
-
|| view.access.hasOwnProperty('group')
|
|
26788
|
-
|| view.access.hasOwnProperty('authority')) {
|
|
26789
|
-
route['canActivate'].push(AuthenticationGuardService);
|
|
26790
|
-
}
|
|
26791
|
-
if (view.access.hasOwnProperty('role')) {
|
|
26792
|
-
route['canActivate'].push(RoleGuardService);
|
|
26793
|
-
}
|
|
26794
|
-
if (view.access.hasOwnProperty('authority')) {
|
|
26795
|
-
route['canActivate'].push(AuthorityGuardService);
|
|
26796
|
-
}
|
|
26797
|
-
if (view.access.hasOwnProperty('group')) {
|
|
26798
|
-
route['canActivate'].push(GroupGuardService);
|
|
26799
|
-
}
|
|
26800
|
-
if (!!view.children) {
|
|
26801
|
-
route['children'] = [];
|
|
26802
|
-
Object.entries(view.children).forEach(([configPathSegment, childView]) => {
|
|
26803
|
-
// TODO check if routes are constructed correctly regarding empty route segments
|
|
26804
|
-
const childRoute = this.constructRouteObject(childView, `${configPath}/${configPathSegment}`, [...ancestors, route]);
|
|
26805
|
-
if (childRoute !== undefined) {
|
|
26806
|
-
route['children'].push(childRoute);
|
|
26807
|
-
}
|
|
26808
|
-
});
|
|
26809
|
-
}
|
|
26810
|
-
if (view?.layout?.name === 'tabView') {
|
|
26811
|
-
if (!view.children) {
|
|
26812
|
-
route['children'] = [];
|
|
26813
|
-
}
|
|
26814
|
-
route['children'].push({
|
|
26815
|
-
path: '**',
|
|
26816
|
-
component
|
|
26817
|
-
});
|
|
26818
|
-
}
|
|
26819
|
-
return route;
|
|
26820
|
-
}
|
|
26821
|
-
resolveComponentClass(view, configPath) {
|
|
26822
|
-
let result;
|
|
26823
|
-
if (!!view.component) {
|
|
26824
|
-
result = this._viewService.resolveNameToClass(view.component.class);
|
|
26825
|
-
}
|
|
26826
|
-
else if (!!view.layout) {
|
|
26827
|
-
result = this.resolveComponentClassFromLayout(view, configPath);
|
|
26828
|
-
}
|
|
26829
|
-
else {
|
|
26830
|
-
this._logger.warn(`nae.json configuration is invalid. View at path '${configPath}'` +
|
|
26831
|
-
` must define either a 'layout' or a 'component' attribute. Skipping this view for routing generation.`);
|
|
26832
|
-
return undefined;
|
|
26833
|
-
}
|
|
26834
|
-
if (result === undefined) {
|
|
26835
|
-
this._logger.warn(`Some views from nae.json configuration have not been created in the project.` +
|
|
26836
|
-
` Run create-view schematic to rectify this. Skipping this view for routing generation.`);
|
|
26837
|
-
return undefined;
|
|
26838
|
-
}
|
|
26839
|
-
return result;
|
|
26840
|
-
}
|
|
26841
|
-
resolveComponentClassFromLayout(view, configPath) {
|
|
26842
|
-
if (view.layout.name === GroupNavigationConstants.GROUP_NAVIGATION_OUTLET) {
|
|
26843
|
-
return this._groupNavigationComponentResolverComponent;
|
|
26844
|
-
}
|
|
26845
|
-
let className;
|
|
26846
|
-
if (!!view.layout.componentName) {
|
|
26847
|
-
className = `${classify(view.layout.componentName)}Component`;
|
|
26848
|
-
}
|
|
26849
|
-
else {
|
|
26850
|
-
const classInfo = new ViewClassInfo(configPath, view.layout.name, view.layout.componentName);
|
|
26851
|
-
className = classInfo.className;
|
|
26852
|
-
}
|
|
26853
|
-
return this._viewService.resolveNameToClass(className);
|
|
26854
|
-
}
|
|
26855
|
-
defaultRoutesRedirects() {
|
|
26856
|
-
const result = [];
|
|
26857
|
-
const servicesConfig = this._configService.getServicesConfiguration();
|
|
26858
|
-
if (!!servicesConfig && !!servicesConfig.routing) {
|
|
26859
|
-
if (!!servicesConfig.routing.defaultRedirect) {
|
|
26860
|
-
result.push({
|
|
26861
|
-
path: '',
|
|
26862
|
-
redirectTo: servicesConfig.routing.defaultRedirect,
|
|
26863
|
-
pathMatch: 'full'
|
|
26864
|
-
});
|
|
26865
|
-
}
|
|
26866
|
-
if (!!servicesConfig.routing.wildcardRedirect) {
|
|
26867
|
-
result.push({
|
|
26868
|
-
path: '**',
|
|
26869
|
-
redirectTo: servicesConfig.routing.wildcardRedirect
|
|
26870
|
-
});
|
|
26871
|
-
}
|
|
26872
|
-
}
|
|
26873
|
-
return result;
|
|
26874
|
-
}
|
|
26875
|
-
}
|
|
26876
|
-
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 });
|
|
26877
|
-
RoutingBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, providedIn: 'root' });
|
|
26878
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, decorators: [{
|
|
26879
|
-
type: Injectable,
|
|
26880
|
-
args: [{
|
|
26881
|
-
providedIn: 'root'
|
|
26882
|
-
}]
|
|
26883
|
-
}], ctorParameters: function () { return [{ type: i2$3.Router }, { type: ConfigurationService }, { type: ViewService }, { type: LoggerService }, { type: DynamicNavigationRouteProviderService }, { type: i0.Type, decorators: [{
|
|
26884
|
-
type: Optional
|
|
26885
|
-
}, {
|
|
26886
|
-
type: Inject,
|
|
26887
|
-
args: [NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT]
|
|
26888
|
-
}] }]; } });
|
|
26889
|
-
|
|
26890
|
-
/**
|
|
26891
|
-
* Case search request page size
|
|
26892
|
-
*/
|
|
26893
|
-
const NAE_URI_NODE_CASES_PAGE_SIZE = new InjectionToken('NaeUriNodeCasesPageSize');
|
|
26894
|
-
|
|
26895
|
-
/**
|
|
26896
|
-
* Service for accessing backend resource to resolve URI objects
|
|
26897
|
-
* */
|
|
26898
|
-
class UriResourceService extends AbstractResourceService {
|
|
26899
|
-
constructor(provider, configService) {
|
|
26900
|
-
super('petrinet', provider, configService);
|
|
26901
|
-
}
|
|
26902
|
-
getRoot() {
|
|
26903
|
-
return this._resourceProvider.get$('uri/root', this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNode')));
|
|
26904
|
-
}
|
|
26905
|
-
getByLevel(level) {
|
|
26906
|
-
return this._resourceProvider.get$('uri/level/' + level, this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNodes')));
|
|
26907
|
-
}
|
|
26908
|
-
getNodesByParent(parentId) {
|
|
26909
|
-
return this._resourceProvider.get$('uri/parent/' + parentId, this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNodes')));
|
|
26910
|
-
}
|
|
26911
|
-
getNodeByUri(uriPath) {
|
|
26912
|
-
return this._resourceProvider.get$('uri/' + btoa(uriPath), this.SERVER_URL).pipe(map(r => this.changeType(r, 'uriNode')));
|
|
26913
|
-
}
|
|
26914
|
-
}
|
|
26915
|
-
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 });
|
|
26916
|
-
UriResourceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UriResourceService, providedIn: 'root' });
|
|
26917
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UriResourceService, decorators: [{
|
|
26918
|
-
type: Injectable,
|
|
26919
|
-
args: [{
|
|
26920
|
-
providedIn: 'root'
|
|
26921
|
-
}]
|
|
26922
|
-
}], ctorParameters: function () { return [{ type: ResourceProvider }, { type: ConfigurationService }]; } });
|
|
26923
|
-
|
|
26924
|
-
/**
|
|
26925
|
-
* Service for managing URIs
|
|
26926
|
-
* */
|
|
26927
|
-
class UriService {
|
|
26928
|
-
constructor(_logger, _resourceService, _caseResourceService, _activeGroupService, pageSize) {
|
|
26929
|
-
this._logger = _logger;
|
|
26930
|
-
this._resourceService = _resourceService;
|
|
26931
|
-
this._caseResourceService = _caseResourceService;
|
|
26932
|
-
this._activeGroupService = _activeGroupService;
|
|
26933
|
-
this.pageSize = pageSize;
|
|
26934
|
-
if (!pageSize) {
|
|
26935
|
-
this.pageSize = 20;
|
|
26936
|
-
}
|
|
26937
|
-
if (typeof this.pageSize === 'string') {
|
|
26938
|
-
this.pageSize = parseInt(this.pageSize);
|
|
26939
|
-
}
|
|
26940
|
-
this._rootLoading$ = new LoadingEmitter();
|
|
26941
|
-
this._parentLoading$ = new LoadingEmitter();
|
|
26942
|
-
this._activeNode$ = new BehaviorSubject(undefined);
|
|
26943
|
-
this.loadRoot();
|
|
26944
|
-
}
|
|
26945
|
-
ngOnDestroy() {
|
|
26946
|
-
this._rootLoading$.complete();
|
|
26947
|
-
this._parentLoading$.complete();
|
|
26948
|
-
this._activeNode$.complete();
|
|
26949
|
-
}
|
|
26950
|
-
get root() {
|
|
26951
|
-
return this._rootNode;
|
|
26952
|
-
}
|
|
26953
|
-
get rootLoaded$() {
|
|
26954
|
-
return this._rootLoading$;
|
|
26955
|
-
}
|
|
26956
|
-
isRoot(node) {
|
|
26957
|
-
return node.id === this._rootNode.id && node.uriPath === this._rootNode.uriPath;
|
|
26958
|
-
}
|
|
26959
|
-
get activeNode() {
|
|
26960
|
-
return this._activeNode$.getValue();
|
|
26961
|
-
}
|
|
26962
|
-
set activeNode(node) {
|
|
26963
|
-
if (node.parentId && !node.parent) {
|
|
26964
|
-
if (node.parentId === this._rootNode.id) {
|
|
26965
|
-
node.parent = this._rootNode;
|
|
26966
|
-
}
|
|
26967
|
-
else {
|
|
26968
|
-
this._parentLoading$.on();
|
|
26969
|
-
this.getNodeByPath(this.resolveParentPath(node)).subscribe(n => {
|
|
26970
|
-
node.parent = !n ? this._rootNode : n;
|
|
26971
|
-
this._parentLoading$.off();
|
|
26972
|
-
}, error => {
|
|
26973
|
-
this._logger.error(error);
|
|
26974
|
-
this._parentLoading$.off();
|
|
26975
|
-
});
|
|
26976
|
-
}
|
|
26977
|
-
}
|
|
26978
|
-
this._activeNode$.next(node);
|
|
26979
|
-
}
|
|
26980
|
-
get activeNode$() {
|
|
26981
|
-
return this._activeNode$;
|
|
26982
|
-
}
|
|
26983
|
-
get parentNodeLoading$() {
|
|
26984
|
-
return this._parentLoading$;
|
|
26985
|
-
}
|
|
26986
|
-
/**
|
|
26987
|
-
* Loads root ID into variable.
|
|
26988
|
-
* When root node is loaded and active node is not set yet the root node is set as active node
|
|
26989
|
-
* */
|
|
26990
|
-
loadRoot() {
|
|
26991
|
-
this._rootLoading$.on();
|
|
26992
|
-
this._resourceService.getRoot().subscribe(node => {
|
|
26993
|
-
if (!!node) {
|
|
26994
|
-
this._rootNode = node;
|
|
26995
|
-
if (!this.activeNode) {
|
|
26996
|
-
this.activeNode = this._rootNode;
|
|
26997
|
-
}
|
|
26998
|
-
}
|
|
26999
|
-
this._rootLoading$.off();
|
|
27000
|
-
}, error => {
|
|
27001
|
-
this._logger.error(error);
|
|
27002
|
-
this._rootLoading$.off();
|
|
27003
|
-
});
|
|
27004
|
-
}
|
|
27005
|
-
reset() {
|
|
27006
|
-
this.activeNode = this._rootNode;
|
|
27007
|
-
return this._rootNode;
|
|
27008
|
-
}
|
|
26518
|
+
var GroupNavigationConstants;
|
|
26519
|
+
(function (GroupNavigationConstants) {
|
|
27009
26520
|
/**
|
|
27010
|
-
*
|
|
27011
|
-
* @param path
|
|
26521
|
+
* Name of the component that indicates the position of the group specific navigation elements.
|
|
27012
26522
|
*/
|
|
27013
|
-
|
|
27014
|
-
return this._resourceService.getNodeByUri(path).pipe(map(n => this.capitalizeName(n)));
|
|
27015
|
-
}
|
|
26523
|
+
GroupNavigationConstants["GROUP_NAVIGATION_OUTLET"] = "groupNavigation";
|
|
27016
26524
|
/**
|
|
27017
|
-
*
|
|
27018
|
-
* @param node parent node
|
|
26525
|
+
* Name of the router param that is used to provide information about the selected filter to the group navigation view component
|
|
27019
26526
|
*/
|
|
27020
|
-
|
|
27021
|
-
if (!node)
|
|
27022
|
-
node = this.activeNode;
|
|
27023
|
-
return this._resourceService.getNodesByParent(node.id).pipe(map(nodes => {
|
|
27024
|
-
this.capitalizeNames(nodes);
|
|
27025
|
-
return nodes;
|
|
27026
|
-
}));
|
|
27027
|
-
}
|
|
26527
|
+
GroupNavigationConstants["GROUP_NAVIGATION_ROUTER_PARAM"] = "filterCaseId";
|
|
27028
26528
|
/**
|
|
27029
|
-
*
|
|
27030
|
-
* @param node parent node of cases
|
|
27031
|
-
* @param processIdentifiers optional search filter for process identifier to get only cases from the process
|
|
27032
|
-
* @param pageNumber optional parameter for load page on the index. Default value is 0 (the first page).
|
|
27033
|
-
* @param pageSize optional parameter for loaded page size. Defaults to value of injection token URI_NODE_CASES_PAGE_SIZE or to value "20".
|
|
26529
|
+
* Field id, that contains the tab name of the navigation item.
|
|
27034
26530
|
*/
|
|
27035
|
-
|
|
27036
|
-
if (!node)
|
|
27037
|
-
node = this.activeNode;
|
|
27038
|
-
const searchBody = {
|
|
27039
|
-
uriNodeId: node.id,
|
|
27040
|
-
};
|
|
27041
|
-
if (!!processIdentifiers) {
|
|
27042
|
-
searchBody.process = processIdentifiers.map(id => ({ identifier: id }));
|
|
27043
|
-
}
|
|
27044
|
-
// TODO active group is broken a given the wrong id
|
|
27045
|
-
// if (!!this._activeGroupService.activeGroup) {
|
|
27046
|
-
// searchBody.data = {};
|
|
27047
|
-
// searchBody.data['parentId'] = this._activeGroupService.activeGroup.stringId;
|
|
27048
|
-
// }
|
|
27049
|
-
let httpParams = new HttpParams()
|
|
27050
|
-
.set(PaginationParams.PAGE_SIZE, pageSize)
|
|
27051
|
-
.set(PaginationParams.PAGE_NUMBER, pageNumber);
|
|
27052
|
-
return this._caseResourceService.searchCases(SimpleFilter.fromCaseQuery(searchBody), httpParams);
|
|
27053
|
-
}
|
|
26531
|
+
GroupNavigationConstants["NAVIGATION_ENTRY_TITLE_FIELD_ID_SUFFIX"] = "tab_name";
|
|
27054
26532
|
/**
|
|
27055
|
-
*
|
|
27056
|
-
* @param node siblings node
|
|
26533
|
+
* Boolean field id, that determines if the navigation defines a tab icon.
|
|
27057
26534
|
*/
|
|
27058
|
-
|
|
27059
|
-
if (!node)
|
|
27060
|
-
node = this.activeNode;
|
|
27061
|
-
return this._resourceService.getNodesByParent(node.parentId).pipe(map(nodes => {
|
|
27062
|
-
this.capitalizeNames(nodes);
|
|
27063
|
-
return nodes;
|
|
27064
|
-
}));
|
|
27065
|
-
}
|
|
26535
|
+
GroupNavigationConstants["NAVIGATION_ENTRY_ICON_ENABLED_FIELD_ID_SUFFIX"] = "use_tab_icon";
|
|
27066
26536
|
/**
|
|
27067
|
-
*
|
|
27068
|
-
* @param level
|
|
27069
|
-
* @param parent optional parameter to filter nodes with common parent
|
|
26537
|
+
* Text field id, that contains the id of the used material icon.
|
|
27070
26538
|
*/
|
|
27071
|
-
|
|
27072
|
-
if (level === 0)
|
|
27073
|
-
return of([this.root]);
|
|
27074
|
-
return this._resourceService.getByLevel(level).pipe(map(nodes => {
|
|
27075
|
-
const ns = !!parent?.id ? nodes.filter(n => n.parentId === parent.id) : nodes;
|
|
27076
|
-
this.capitalizeNames(ns);
|
|
27077
|
-
return ns;
|
|
27078
|
-
}));
|
|
27079
|
-
}
|
|
27080
|
-
resolveParentPath(node) {
|
|
27081
|
-
if (!node)
|
|
27082
|
-
node = this.activeNode;
|
|
27083
|
-
const lastDelimiter = node.uriPath.lastIndexOf('/');
|
|
27084
|
-
if (lastDelimiter === -1)
|
|
27085
|
-
return 'root';
|
|
27086
|
-
return node.uriPath.substring(0, lastDelimiter);
|
|
27087
|
-
}
|
|
27088
|
-
splitNodePath(node) {
|
|
27089
|
-
return node?.uriPath.split('/').filter(s => s !== UriService.ROOT);
|
|
27090
|
-
}
|
|
27091
|
-
capitalizeNames(nodes) {
|
|
27092
|
-
if (!(nodes instanceof Array))
|
|
27093
|
-
return;
|
|
27094
|
-
nodes.forEach(n => this.capitalizeName(n));
|
|
27095
|
-
}
|
|
26539
|
+
GroupNavigationConstants["NAVIGATION_ENTRY_ICON_FIELD_ID_SUFFIX"] = "tab_icon";
|
|
27096
26540
|
/**
|
|
27097
|
-
*
|
|
27098
|
-
*
|
|
27099
|
-
|
|
27100
|
-
|
|
27101
|
-
|
|
27102
|
-
|
|
27103
|
-
|
|
27104
|
-
|
|
27105
|
-
|
|
27106
|
-
|
|
27107
|
-
|
|
27108
|
-
|
|
27109
|
-
|
|
27110
|
-
|
|
27111
|
-
|
|
27112
|
-
|
|
27113
|
-
|
|
27114
|
-
|
|
27115
|
-
|
|
27116
|
-
|
|
27117
|
-
|
|
27118
|
-
|
|
27119
|
-
|
|
27120
|
-
|
|
27121
|
-
|
|
27122
|
-
|
|
27123
|
-
|
|
27124
|
-
|
|
27125
|
-
|
|
27126
|
-
|
|
27127
|
-
|
|
26541
|
+
* TaskRef field, that contains taskId of filter task
|
|
26542
|
+
* */
|
|
26543
|
+
GroupNavigationConstants["ITEM_FIELD_ID_FILTER_TASKREF"] = "current_filter_preview";
|
|
26544
|
+
/**
|
|
26545
|
+
* Text field id, that contains title of create case button
|
|
26546
|
+
* */
|
|
26547
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CREATE_CASE_BUTTON_TITLE"] = "create_case_button_title";
|
|
26548
|
+
/**
|
|
26549
|
+
* Text field id, that contains icon name of create case button
|
|
26550
|
+
* */
|
|
26551
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CREATE_CASE_BUTTON_ICON"] = "create_case_button_icon";
|
|
26552
|
+
/**
|
|
26553
|
+
* EnumerationMap field, that contains selected search type for case view
|
|
26554
|
+
* */
|
|
26555
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_VIEW_SEARCH_TYPE"] = "case_view_search_type";
|
|
26556
|
+
/**
|
|
26557
|
+
* EnumerationMap field, that contains selected search type for task view
|
|
26558
|
+
* */
|
|
26559
|
+
GroupNavigationConstants["ITEM_FIELD_ID_TASK_VIEW_SEARCH_TYPE"] = "task_view_search_type";
|
|
26560
|
+
/**
|
|
26561
|
+
* Boolean field, that is true if user wants to merge base filter and custom filter
|
|
26562
|
+
* */
|
|
26563
|
+
GroupNavigationConstants["ITEM_FIELD_ID_MERGE_FILTERS"] = "merge_filters";
|
|
26564
|
+
/**
|
|
26565
|
+
* TaskRef field, that contains taskId of custom filter for task view
|
|
26566
|
+
* */
|
|
26567
|
+
GroupNavigationConstants["ITEM_FIELD_ID_ADDITIONAL_FILTER_TASKREF"] = "current_additional_filter_preview";
|
|
26568
|
+
/**
|
|
26569
|
+
* Boolean field, that is true if the user wants to see more menu for case item in case view
|
|
26570
|
+
* */
|
|
26571
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_SHOW_MORE_MENU"] = "case_show_more_menu";
|
|
26572
|
+
/**
|
|
26573
|
+
* Boolean field, that is true if no input for title in case creation is shown
|
|
26574
|
+
* */
|
|
26575
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_TITLE_IN_CREATION"] = "case_require_title_in_creation";
|
|
26576
|
+
/**
|
|
26577
|
+
* Text field, that contains banned processes in case creation as a value
|
|
26578
|
+
* */
|
|
26579
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_BANNED_PROCESS_CREATION"] = "case_banned_nets_in_creation";
|
|
26580
|
+
/**
|
|
26581
|
+
* Boolean field, that is true if the user wants to see more menu for task item in task view
|
|
26582
|
+
* */
|
|
26583
|
+
GroupNavigationConstants["ITEM_FIELD_ID_TASK_SHOW_MORE_MENU"] = "task_show_more_menu";
|
|
26584
|
+
/**
|
|
26585
|
+
* MultichoiceMap field, that contains selected header modes for case view as a value
|
|
26586
|
+
* */
|
|
26587
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_MODE"] = "case_headers_mode";
|
|
26588
|
+
/**
|
|
26589
|
+
* Boolean field, that is true if table mode can be applied in case view
|
|
26590
|
+
* */
|
|
26591
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_ALLOW_TABLE_MODE"] = "case_allow_header_table_mode";
|
|
26592
|
+
/**
|
|
26593
|
+
* EnumerationMap field, that contains selected default header mode for case view as a value
|
|
26594
|
+
* */
|
|
26595
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS_MODE"] = "case_headers_default_mode";
|
|
26596
|
+
/**
|
|
26597
|
+
* Boolean field, that is true to make mode menu in case view visible
|
|
26598
|
+
* */
|
|
26599
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_HEADERS_CHANGEABLE"] = "case_is_header_mode_changeable";
|
|
26600
|
+
/**
|
|
26601
|
+
* MultichoiceMap field, that contains selected header modes for task view as a value
|
|
26602
|
+
* */
|
|
26603
|
+
GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_MODE"] = "task_headers_mode";
|
|
26604
|
+
/**
|
|
26605
|
+
* Boolean field, that is true if table mode can be applied in task view
|
|
26606
|
+
* */
|
|
26607
|
+
GroupNavigationConstants["ITEM_FIELD_ID_TASK_ALLOW_TABLE_MODE"] = "task_allow_header_table_mode";
|
|
26608
|
+
/**
|
|
26609
|
+
* EnumerationMap field, that contains selected default header mode for task view as a value
|
|
26610
|
+
* */
|
|
26611
|
+
GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS_MODE"] = "task_headers_default_mode";
|
|
26612
|
+
/**
|
|
26613
|
+
* Boolean field, that is true to make mode menu in task view visible
|
|
26614
|
+
* */
|
|
26615
|
+
GroupNavigationConstants["ITEM_FIELD_ID_TASK_HEADERS_CHANGEABLE"] = "task_is_header_mode_changeable";
|
|
26616
|
+
/**
|
|
26617
|
+
* Boolean field, that is true to use default headers configuration for case view
|
|
26618
|
+
* */
|
|
26619
|
+
GroupNavigationConstants["ITEM_FIELD_ID_USE_CASE_DEFAULT_HEADERS"] = "use_case_default_headers";
|
|
26620
|
+
/**
|
|
26621
|
+
* Text field, that contains default header metadata separated by comma for case view as a value
|
|
26622
|
+
* */
|
|
26623
|
+
GroupNavigationConstants["ITEM_FIELD_ID_CASE_DEFAULT_HEADERS"] = "case_default_headers";
|
|
26624
|
+
/**
|
|
26625
|
+
* Boolean field, that is true to use default headers configuration for task view
|
|
26626
|
+
* */
|
|
26627
|
+
GroupNavigationConstants["ITEM_FIELD_ID_USE_TASK_DEFAULT_HEADERS"] = "use_task_default_headers";
|
|
26628
|
+
/**
|
|
26629
|
+
* Text field, that contains default header metadata separated by comma for task view as a value
|
|
26630
|
+
* */
|
|
26631
|
+
GroupNavigationConstants["ITEM_FIELD_ID_TASK_DEFAULT_HEADERS"] = "task_default_headers";
|
|
26632
|
+
/**
|
|
26633
|
+
* MultichoiceMap field, that contains allowed roles as value
|
|
26634
|
+
* */
|
|
26635
|
+
GroupNavigationConstants["ITEM_FIELD_ID_ALLOWED_ROLES"] = "allowed_roles";
|
|
26636
|
+
/**
|
|
26637
|
+
* MultichoiceMap field, that contains banned roles as value
|
|
26638
|
+
* */
|
|
26639
|
+
GroupNavigationConstants["ITEM_FIELD_ID_BANNED_ROLES"] = "banned_roles";
|
|
26640
|
+
/**
|
|
26641
|
+
* Text field, that contains icon identifier
|
|
26642
|
+
* */
|
|
26643
|
+
GroupNavigationConstants["ITEM_FIELD_ID_MENU_ICON"] = "menu_icon";
|
|
26644
|
+
/**
|
|
26645
|
+
* I18n field, that contains labels of menu item
|
|
26646
|
+
* */
|
|
26647
|
+
GroupNavigationConstants["ITEM_FIELD_ID_MENU_NAME"] = "menu_name";
|
|
26648
|
+
/**
|
|
26649
|
+
* Text field, that contains URI
|
|
26650
|
+
* */
|
|
26651
|
+
GroupNavigationConstants["ITEM_FIELD_ID_NODE_PATH"] = "nodePath";
|
|
26652
|
+
/**
|
|
26653
|
+
* Boolean field, that is true if item contains child items
|
|
26654
|
+
* */
|
|
26655
|
+
GroupNavigationConstants["ITEM_FIELD_ID_HAS_CHILDREN"] = "hasChildren";
|
|
26656
|
+
})(GroupNavigationConstants || (GroupNavigationConstants = {}));
|
|
27128
26657
|
|
|
27129
26658
|
/**
|
|
27130
26659
|
* Holds all identifiers of the Impersonation config process in an accessible manner
|
|
@@ -27296,21 +26825,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
27296
26825
|
args: [NAE_ADMIN_IMPERSONATE_DIALOG_COMPONENT]
|
|
27297
26826
|
}] }]; } });
|
|
27298
26827
|
|
|
27299
|
-
const
|
|
27300
|
-
'
|
|
26828
|
+
const MENU_IDENTIFIERS = [
|
|
26829
|
+
'preference_item',
|
|
27301
26830
|
];
|
|
27302
|
-
const
|
|
27303
|
-
const FILTER_DEFAULT_HEADERS_ID = 'default_headers';
|
|
26831
|
+
const SETTINGS_TRANSITION_ID = 'item_settings';
|
|
27304
26832
|
const LEFT_DRAWER_DEFAULT_WIDTH = 60;
|
|
27305
26833
|
const RIGHT_DRAWER_DEFAULT_WIDTH = 240;
|
|
27306
26834
|
const RIGHT_DRAWER_DEFAULT_MIN_WIDTH = 180;
|
|
27307
26835
|
const RIGHT_DRAWER_MAX_WIDTH = 460;
|
|
26836
|
+
const RIGHT_SIDE_NEW_PAGE_SIZE = 10;
|
|
26837
|
+
const RIGHT_SIDE_INIT_PAGE_SIZE = 20;
|
|
26838
|
+
var MenuOrder;
|
|
26839
|
+
(function (MenuOrder) {
|
|
26840
|
+
MenuOrder[MenuOrder["Ascending"] = 0] = "Ascending";
|
|
26841
|
+
MenuOrder[MenuOrder["Descending"] = 1] = "Descending";
|
|
26842
|
+
})(MenuOrder || (MenuOrder = {}));
|
|
27308
26843
|
class AbstractNavigationDoubleDrawerComponent {
|
|
27309
|
-
constructor(_router, _activatedRoute, _breakpoint, _languageService, _userService, _accessService, _log, _config, _uriService, _impersonationUserSelect, _impersonation, _dynamicRoutingService) {
|
|
26844
|
+
constructor(_router, _activatedRoute, _breakpoint, _languageService, _translateService, _userService, _accessService, _log, _config, _uriService, _impersonationUserSelect, _impersonation, _dynamicRoutingService) {
|
|
27310
26845
|
this._router = _router;
|
|
27311
26846
|
this._activatedRoute = _activatedRoute;
|
|
27312
26847
|
this._breakpoint = _breakpoint;
|
|
27313
26848
|
this._languageService = _languageService;
|
|
26849
|
+
this._translateService = _translateService;
|
|
27314
26850
|
this._userService = _userService;
|
|
27315
26851
|
this._accessService = _accessService;
|
|
27316
26852
|
this._log = _log;
|
|
@@ -27344,14 +26880,12 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27344
26880
|
disableClose: false,
|
|
27345
26881
|
width: RIGHT_DRAWER_DEFAULT_WIDTH,
|
|
27346
26882
|
};
|
|
27347
|
-
this.
|
|
27348
|
-
this.
|
|
27349
|
-
this.views = new Array();
|
|
26883
|
+
this.leftItems = new Array();
|
|
26884
|
+
this.rightItems = new Array();
|
|
27350
26885
|
this.leftLoading$ = new LoadingEmitter();
|
|
27351
26886
|
this.rightLoading$ = new LoadingEmitter();
|
|
27352
26887
|
this.nodeLoading$ = new LoadingEmitter();
|
|
27353
|
-
this.
|
|
27354
|
-
this.moreMenuItems = new Array();
|
|
26888
|
+
this.itemsOrder = MenuOrder.Ascending;
|
|
27355
26889
|
}
|
|
27356
26890
|
ngOnInit() {
|
|
27357
26891
|
this._breakpointSubscription = this._breakpoint.observe([Breakpoints.HandsetLandscape]).subscribe(() => {
|
|
@@ -27369,14 +26903,6 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27369
26903
|
this._currentNodeSubscription = this._uriService.activeNode$.subscribe(node => {
|
|
27370
26904
|
this.currentNode = node;
|
|
27371
26905
|
});
|
|
27372
|
-
const viewConfigurationPath = this._activatedRoute.snapshot.data[NAE_ROUTING_CONFIGURATION_PATH];
|
|
27373
|
-
if (!!viewConfigurationPath) {
|
|
27374
|
-
const viewConfiguration = this._config.getViewByPath(viewConfigurationPath);
|
|
27375
|
-
Object.entries(viewConfiguration.children).forEach(([key, childView]) => {
|
|
27376
|
-
this.resolveUriForChildViews(viewConfigurationPath + '/' + key, childView);
|
|
27377
|
-
this.resolveHiddenMenuItemFromChildViews(viewConfigurationPath + '/' + key, childView);
|
|
27378
|
-
});
|
|
27379
|
-
}
|
|
27380
26906
|
}
|
|
27381
26907
|
get currentNode() {
|
|
27382
26908
|
return this._currentNode;
|
|
@@ -27407,47 +26933,17 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27407
26933
|
this.rightLoading$.off();
|
|
27408
26934
|
}
|
|
27409
26935
|
if (this._uriService.isRoot(node)) {
|
|
27410
|
-
this.
|
|
26936
|
+
this.leftItems = [];
|
|
27411
26937
|
this.loadRightSide();
|
|
27412
26938
|
return;
|
|
27413
26939
|
}
|
|
27414
|
-
if (!this.
|
|
26940
|
+
if (!this.leftItems.find(item => item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.uriPath)) {
|
|
27415
26941
|
this.loadLeftSide();
|
|
27416
26942
|
}
|
|
27417
26943
|
this.loadRightSide();
|
|
27418
26944
|
}
|
|
27419
|
-
resolveUriForChildViews(configPath, childView) {
|
|
27420
|
-
if (!childView.processUri)
|
|
27421
|
-
return;
|
|
27422
|
-
if (!this._accessService.canAccessView(childView, configPath))
|
|
27423
|
-
return;
|
|
27424
|
-
if (!this._childCustomViews[childView.processUri]) {
|
|
27425
|
-
this._childCustomViews[childView.processUri] = {};
|
|
27426
|
-
}
|
|
27427
|
-
this._childCustomViews[childView.processUri][configPath] = {
|
|
27428
|
-
id: configPath,
|
|
27429
|
-
...childView,
|
|
27430
|
-
};
|
|
27431
|
-
}
|
|
27432
|
-
resolveHiddenMenuItemFromChildViews(configPath, childView) {
|
|
27433
|
-
if (!childView.navigation)
|
|
27434
|
-
return;
|
|
27435
|
-
if (!this._accessService.canAccessView(childView, configPath))
|
|
27436
|
-
return;
|
|
27437
|
-
// @ts-ignore
|
|
27438
|
-
if (!!(childView?.navigation?.hidden)) {
|
|
27439
|
-
this.moreMenuItems.push({
|
|
27440
|
-
id: configPath,
|
|
27441
|
-
...childView,
|
|
27442
|
-
});
|
|
27443
|
-
}
|
|
27444
|
-
}
|
|
27445
26945
|
ngOnDestroy() {
|
|
27446
26946
|
this._breakpointSubscription?.unsubscribe();
|
|
27447
|
-
this._leftNodesSubscription?.unsubscribe();
|
|
27448
|
-
this._rightNodesSubscription?.unsubscribe();
|
|
27449
|
-
this._filtersSubscription?.unsubscribe();
|
|
27450
|
-
this._rootSubscription?.unsubscribe();
|
|
27451
26947
|
this._currentNodeSubscription?.unsubscribe();
|
|
27452
26948
|
this.leftLoading$.complete();
|
|
27453
26949
|
this.rightLoading$.complete();
|
|
@@ -27538,73 +27034,111 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27538
27034
|
return;
|
|
27539
27035
|
this.currentNode = this._currentNode.parent;
|
|
27540
27036
|
}
|
|
27541
|
-
|
|
27542
|
-
this.currentNode = node;
|
|
27543
|
-
}
|
|
27544
|
-
onViewClick(view) {
|
|
27037
|
+
onItemClick(item) {
|
|
27545
27038
|
this._uriService.activeNode = this._currentNode;
|
|
27039
|
+
if (this.hasItemChildren(item)) {
|
|
27040
|
+
const path = item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value;
|
|
27041
|
+
this._uriService.getNodeByPath(path).subscribe(node => {
|
|
27042
|
+
this.currentNode = node;
|
|
27043
|
+
}, error => {
|
|
27044
|
+
this._log.error(error);
|
|
27045
|
+
});
|
|
27046
|
+
}
|
|
27047
|
+
}
|
|
27048
|
+
hasItemChildren(item) {
|
|
27049
|
+
return item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_HAS_CHILDREN)?.value;
|
|
27050
|
+
}
|
|
27051
|
+
isItemAndNodeEqual(item, node) {
|
|
27052
|
+
return item.resource.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.uriPath;
|
|
27546
27053
|
}
|
|
27547
27054
|
loadLeftSide() {
|
|
27548
27055
|
if (this._uriService.isRoot(this._currentNode)) {
|
|
27549
|
-
this.
|
|
27056
|
+
this.leftItems = [];
|
|
27550
27057
|
return;
|
|
27551
27058
|
}
|
|
27552
27059
|
this.leftLoading$.on();
|
|
27553
|
-
this.
|
|
27554
|
-
this.
|
|
27555
|
-
|
|
27556
|
-
|
|
27060
|
+
this._uriService.getCasesOfNode(this.currentNode.parent, MENU_IDENTIFIERS, 0, 1).subscribe(page => {
|
|
27061
|
+
page?.pagination?.totalElements === 0 ? of([]) : this._uriService.getCasesOfNode(this.currentNode.parent, MENU_IDENTIFIERS, 0, page.pagination.totalElements).pipe(map(p => p.content)).subscribe(result => {
|
|
27062
|
+
this.leftItems = result.filter(folder => folder.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_HAS_CHILDREN)?.value === true).map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
|
|
27063
|
+
this.leftItems.sort((a, b) => a?.navigation?.title.localeCompare(b?.navigation?.title));
|
|
27064
|
+
this.leftLoading$.off();
|
|
27065
|
+
}, error => {
|
|
27066
|
+
this._log.error(error);
|
|
27067
|
+
this.leftItems = [];
|
|
27068
|
+
this.leftLoading$.off();
|
|
27069
|
+
});
|
|
27557
27070
|
}, error => {
|
|
27558
27071
|
this._log.error(error);
|
|
27559
|
-
this.
|
|
27072
|
+
this.leftItems = [];
|
|
27560
27073
|
this.leftLoading$.off();
|
|
27561
27074
|
});
|
|
27562
27075
|
}
|
|
27563
27076
|
loadRightSide() {
|
|
27564
27077
|
this.rightLoading$.on();
|
|
27565
|
-
this.
|
|
27566
|
-
|
|
27567
|
-
|
|
27568
|
-
|
|
27569
|
-
|
|
27570
|
-
|
|
27571
|
-
|
|
27572
|
-
|
|
27573
|
-
|
|
27574
|
-
|
|
27575
|
-
|
|
27078
|
+
this.moreItems = [];
|
|
27079
|
+
this._uriService.getCasesOfNode(this.currentNode, MENU_IDENTIFIERS, 0, 1).subscribe(page => {
|
|
27080
|
+
this._log.debug('Number of items for uri ' + this._currentNode.uriPath + ': ' + page?.pagination?.totalElements);
|
|
27081
|
+
(page?.pagination?.totalElements === 0 ? of([]) : this._uriService.getCasesOfNode(this._currentNode, MENU_IDENTIFIERS, 0, page.pagination.totalElements).pipe(map(p => p.content))).subscribe(result => {
|
|
27082
|
+
result = result.sort((a, b) => a?.title.localeCompare(b?.title));
|
|
27083
|
+
if (result.length > RIGHT_SIDE_INIT_PAGE_SIZE) {
|
|
27084
|
+
const rawRightItems = result.splice(0, RIGHT_SIDE_INIT_PAGE_SIZE);
|
|
27085
|
+
this.rightItems = rawRightItems.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
|
|
27086
|
+
this.moreItems = result.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
|
|
27087
|
+
}
|
|
27088
|
+
else {
|
|
27089
|
+
this.rightItems = result.map(folder => this.resolveItemCaseToNavigationItem(folder)).filter(i => !!i);
|
|
27576
27090
|
}
|
|
27577
|
-
// @ts-ignore
|
|
27578
|
-
this.views.sort((a, b) => this.compareStrings(a?.navigation?.title, b?.navigation?.title));
|
|
27579
27091
|
this.rightLoading$.off();
|
|
27580
27092
|
}, error => {
|
|
27581
27093
|
this._log.error(error);
|
|
27582
|
-
this.
|
|
27583
|
-
this.
|
|
27094
|
+
this.rightItems = [];
|
|
27095
|
+
this.moreItems = [];
|
|
27584
27096
|
this.rightLoading$.off();
|
|
27585
27097
|
});
|
|
27586
27098
|
}, error => {
|
|
27587
27099
|
this._log.error(error);
|
|
27588
|
-
this.
|
|
27589
|
-
this.
|
|
27100
|
+
this.rightItems = [];
|
|
27101
|
+
this.moreItems = [];
|
|
27590
27102
|
this.rightLoading$.off();
|
|
27591
27103
|
});
|
|
27592
27104
|
}
|
|
27593
|
-
|
|
27105
|
+
loadMoreItems() {
|
|
27106
|
+
if (this.moreItems.length > RIGHT_SIDE_NEW_PAGE_SIZE) {
|
|
27107
|
+
this.rightItems.push(...this.moreItems.splice(0, RIGHT_SIDE_NEW_PAGE_SIZE));
|
|
27108
|
+
}
|
|
27109
|
+
else {
|
|
27110
|
+
this.rightItems.push(...this.moreItems);
|
|
27111
|
+
this.moreItems = [];
|
|
27112
|
+
}
|
|
27113
|
+
}
|
|
27114
|
+
isAscending() {
|
|
27115
|
+
return this.itemsOrder === MenuOrder.Ascending;
|
|
27116
|
+
}
|
|
27117
|
+
switchOrder() {
|
|
27118
|
+
this.itemsOrder = (this.itemsOrder + 1) % 2;
|
|
27119
|
+
let multiplier = 1;
|
|
27120
|
+
if (this.itemsOrder === MenuOrder.Descending) {
|
|
27121
|
+
multiplier = -1;
|
|
27122
|
+
}
|
|
27123
|
+
this.rightItems = this.rightItems.sort((a, b) => multiplier * a?.navigation?.title.localeCompare(b?.navigation?.title));
|
|
27124
|
+
this.leftItems = this.leftItems.sort((a, b) => multiplier * a?.navigation?.title.localeCompare(b?.navigation?.title));
|
|
27125
|
+
this.moreItems = this.moreItems.sort((a, b) => multiplier * a?.navigation?.title.localeCompare(b?.navigation?.title));
|
|
27126
|
+
}
|
|
27127
|
+
resolveItemCaseToNavigationItem(itemCase) {
|
|
27594
27128
|
const item = {
|
|
27595
27129
|
access: {},
|
|
27596
27130
|
navigation: {
|
|
27597
|
-
icon:
|
|
27598
|
-
title:
|
|
27131
|
+
icon: itemCase.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_MENU_ICON)?.value || this.filterIcon,
|
|
27132
|
+
title: this.getTranslation(itemCase.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_MENU_NAME)?.value) || itemCase.title,
|
|
27599
27133
|
},
|
|
27600
27134
|
routing: {
|
|
27601
|
-
path: this.
|
|
27135
|
+
path: this.getItemRoutingPath(itemCase),
|
|
27602
27136
|
},
|
|
27603
|
-
id:
|
|
27604
|
-
resource:
|
|
27137
|
+
id: itemCase.stringId,
|
|
27138
|
+
resource: itemCase,
|
|
27605
27139
|
};
|
|
27606
|
-
const resolvedRoles = this.resolveAccessRoles(
|
|
27607
|
-
const resolvedBannedRoles = this.resolveAccessRoles(
|
|
27140
|
+
const resolvedRoles = this.resolveAccessRoles(itemCase, GroupNavigationConstants.ITEM_FIELD_ID_ALLOWED_ROLES);
|
|
27141
|
+
const resolvedBannedRoles = this.resolveAccessRoles(itemCase, GroupNavigationConstants.ITEM_FIELD_ID_BANNED_ROLES);
|
|
27608
27142
|
if (!!resolvedRoles)
|
|
27609
27143
|
item.access['role'] = resolvedRoles;
|
|
27610
27144
|
if (!!resolvedBannedRoles)
|
|
@@ -27613,6 +27147,10 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27613
27147
|
return;
|
|
27614
27148
|
return item;
|
|
27615
27149
|
}
|
|
27150
|
+
getTranslation(value) {
|
|
27151
|
+
const locale = this._translateService.currentLang.split('-')[0];
|
|
27152
|
+
return locale in value.translations ? value.translations[locale] : value.defaultValue;
|
|
27153
|
+
}
|
|
27616
27154
|
resolveAccessRoles(filter, roleType) {
|
|
27617
27155
|
const allowedRoles = filter.immediateData.find(f => f.stringId === roleType)?.options;
|
|
27618
27156
|
if (!allowedRoles || Object.keys(allowedRoles).length === 0)
|
|
@@ -27627,17 +27165,11 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27627
27165
|
});
|
|
27628
27166
|
return roles;
|
|
27629
27167
|
}
|
|
27630
|
-
|
|
27631
|
-
const
|
|
27168
|
+
getItemRoutingPath(itemCase) {
|
|
27169
|
+
const transId = SETTINGS_TRANSITION_ID;
|
|
27170
|
+
const taskId = itemCase.tasks.find(taskPair => taskPair.transition === transId).task;
|
|
27632
27171
|
const url = this._dynamicRoutingService.route;
|
|
27633
|
-
return `/${url}/${
|
|
27634
|
-
}
|
|
27635
|
-
compareStrings(a, b) {
|
|
27636
|
-
if (!a && !b)
|
|
27637
|
-
return 0;
|
|
27638
|
-
if (a < b)
|
|
27639
|
-
return -1;
|
|
27640
|
-
return a > b ? 1 : 0;
|
|
27172
|
+
return `/${url}/${taskId}`;
|
|
27641
27173
|
}
|
|
27642
27174
|
/**
|
|
27643
27175
|
* Function to check whether the back button should be displayed
|
|
@@ -27646,20 +27178,17 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27646
27178
|
isOnZeroLevel() {
|
|
27647
27179
|
return !!this._currentNode?.level ? this._currentNode.level == 0 : true;
|
|
27648
27180
|
}
|
|
27649
|
-
|
|
27650
|
-
return this.
|
|
27651
|
-
}
|
|
27652
|
-
isRightNodesEmpty() {
|
|
27653
|
-
return this.rightNodes === undefined || this.rightNodes.length === 0;
|
|
27181
|
+
isLeftItemsEmpty() {
|
|
27182
|
+
return this.leftItems === undefined || this.leftItems.length === 0;
|
|
27654
27183
|
}
|
|
27655
|
-
|
|
27656
|
-
return this.
|
|
27184
|
+
isRightItemsEmpty() {
|
|
27185
|
+
return this.rightItems === undefined || this.rightItems.length === 0;
|
|
27657
27186
|
}
|
|
27658
27187
|
uriNodeTrackBy(index, node) {
|
|
27659
27188
|
return node.id;
|
|
27660
27189
|
}
|
|
27661
|
-
|
|
27662
|
-
return
|
|
27190
|
+
itemsTrackBy(index, item) {
|
|
27191
|
+
return item.id;
|
|
27663
27192
|
}
|
|
27664
27193
|
onResizeEvent(event) {
|
|
27665
27194
|
if (event.rectangle.width > RIGHT_DRAWER_MAX_WIDTH) {
|
|
@@ -27676,7 +27205,7 @@ class AbstractNavigationDoubleDrawerComponent {
|
|
|
27676
27205
|
// this.contentWidth.next(this.width);
|
|
27677
27206
|
}
|
|
27678
27207
|
}
|
|
27679
|
-
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 });
|
|
27208
|
+
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 });
|
|
27680
27209
|
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 });
|
|
27681
27210
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractNavigationDoubleDrawerComponent, decorators: [{
|
|
27682
27211
|
type: Component,
|
|
@@ -27684,7 +27213,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
27684
27213
|
selector: 'ncc-abstract-navigation-double-drawer',
|
|
27685
27214
|
template: '',
|
|
27686
27215
|
}]
|
|
27687
|
-
}], 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: [{
|
|
27216
|
+
}], 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: [{
|
|
27688
27217
|
type: Input
|
|
27689
27218
|
}], portalRightMenu: [{
|
|
27690
27219
|
type: Input
|
|
@@ -27787,7 +27316,6 @@ class GroupNavigationComponentResolverService {
|
|
|
27787
27316
|
result.next(new ComponentPortal(this.resolveViewComponent(taskData), null, Injector.create({
|
|
27788
27317
|
providers: [
|
|
27789
27318
|
{ provide: NAE_NAVIGATION_ITEM_TASK_DATA, useValue: taskData },
|
|
27790
|
-
{ provide: NAE_DEFAULT_HEADERS, useValue: this.resolveDefaultHeaders(taskData) },
|
|
27791
27319
|
],
|
|
27792
27320
|
parent: parentInjector
|
|
27793
27321
|
})));
|
|
@@ -27801,12 +27329,6 @@ class GroupNavigationComponentResolverService {
|
|
|
27801
27329
|
});
|
|
27802
27330
|
return result.asObservable();
|
|
27803
27331
|
}
|
|
27804
|
-
resolveDefaultHeaders(caze) {
|
|
27805
|
-
const defaultHeadersResponse = [].concat(...caze.map(dataGroup => dataGroup.fields)).find(field => field.stringId === FILTER_DEFAULT_HEADERS_ID)?.value; //ES2019
|
|
27806
|
-
if (!defaultHeadersResponse || Object.keys(defaultHeadersResponse).length === 0)
|
|
27807
|
-
return undefined;
|
|
27808
|
-
return defaultHeadersResponse.split(",");
|
|
27809
|
-
}
|
|
27810
27332
|
forwardError(result, error) {
|
|
27811
27333
|
result.error(error instanceof HttpErrorResponse ? error.error.message : error.message);
|
|
27812
27334
|
result.complete();
|
|
@@ -27920,17 +27442,320 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
27920
27442
|
type: Input
|
|
27921
27443
|
}] } });
|
|
27922
27444
|
|
|
27445
|
+
/**
|
|
27446
|
+
* Search component search mode
|
|
27447
|
+
*/
|
|
27448
|
+
var SearchMode;
|
|
27449
|
+
(function (SearchMode) {
|
|
27450
|
+
SearchMode[SearchMode["FULLTEXT"] = 0] = "FULLTEXT";
|
|
27451
|
+
SearchMode[SearchMode["ADVANCED"] = 1] = "ADVANCED";
|
|
27452
|
+
})(SearchMode || (SearchMode = {}));
|
|
27453
|
+
|
|
27454
|
+
/**
|
|
27455
|
+
* Extracts the item name and item icon (if any) rom a section of the navigation item task data.
|
|
27456
|
+
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
27457
|
+
* @param translateService is a service to translate label name
|
|
27458
|
+
*/
|
|
27459
|
+
function extractIconAndTitle(dataSection, translateService) {
|
|
27460
|
+
const result = { name: '' };
|
|
27461
|
+
if (dataSection.length === 0) {
|
|
27462
|
+
throw new Error('The provided task data does not belong to a Navigation menu item task. Icon and title cannot be extracted');
|
|
27463
|
+
}
|
|
27464
|
+
const nameField = getFieldFromDataGroups(dataSection, GroupNavigationConstants.NAVIGATION_ENTRY_TITLE_FIELD_ID_SUFFIX);
|
|
27465
|
+
if (nameField === undefined) {
|
|
27466
|
+
throw new Error('Navigation name could not be resolved');
|
|
27467
|
+
}
|
|
27468
|
+
const locale = translateService.currentLang.split('-')[0];
|
|
27469
|
+
result.name = locale in nameField.value.translations ? nameField.value.translations[locale] : nameField.value.defaultValue;
|
|
27470
|
+
const useIcon = getFieldFromDataGroups(dataSection, GroupNavigationConstants.NAVIGATION_ENTRY_ICON_ENABLED_FIELD_ID_SUFFIX);
|
|
27471
|
+
if (useIcon !== undefined && useIcon.value) {
|
|
27472
|
+
const icon = getFieldFromDataGroups(dataSection, GroupNavigationConstants.NAVIGATION_ENTRY_ICON_FIELD_ID_SUFFIX);
|
|
27473
|
+
if (icon === undefined) {
|
|
27474
|
+
this._log.error('Navigation entry icon could not be resolved, but is enabled. Icon was ignored');
|
|
27475
|
+
}
|
|
27476
|
+
else {
|
|
27477
|
+
result.icon = icon.value;
|
|
27478
|
+
}
|
|
27479
|
+
}
|
|
27480
|
+
return result;
|
|
27481
|
+
}
|
|
27482
|
+
/**
|
|
27483
|
+
* Based on provided parameter extracts allowed or banned roles into an Array of strings from a section of the navigation item task data.
|
|
27484
|
+
* Each item has format ROLE_IMPORT_ID:NET_IMPORT_ID
|
|
27485
|
+
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
27486
|
+
* @param roleFieldId ID of field containing banned or allowed role IDs
|
|
27487
|
+
* @returns an Array of string values representing role IDs
|
|
27488
|
+
*/
|
|
27489
|
+
function extractRoles(dataSection, roleFieldId) {
|
|
27490
|
+
if (dataSection.length === 0) {
|
|
27491
|
+
throw new Error('The provided task data does not belong to a Navigation menu item task. Role entries cannot be extracted');
|
|
27492
|
+
}
|
|
27493
|
+
const roleIds = getFieldFromDataGroups(dataSection, roleFieldId);
|
|
27494
|
+
if (roleIds === undefined) {
|
|
27495
|
+
throw new Error('Navigation entry role authorization field could not be resolved');
|
|
27496
|
+
}
|
|
27497
|
+
return roleIds.choices.map(choice => choice.key);
|
|
27498
|
+
}
|
|
27499
|
+
/**
|
|
27500
|
+
* Extracts the data and creates a filter object from the navigation item task data.
|
|
27501
|
+
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
27502
|
+
*/
|
|
27503
|
+
function extractFilterFromData(dataSection) {
|
|
27504
|
+
return extractFilterFromFilterField(extractFilterFieldFromData(dataSection));
|
|
27505
|
+
}
|
|
27506
|
+
/**
|
|
27507
|
+
* Extracts the filter field from the navigation item task data.
|
|
27508
|
+
* @param dataSection an array containing the data groups that correspond to a single navigation entry
|
|
27509
|
+
* @returns The extracted {@link FilterField} or `undefined` if it could not be extracted.
|
|
27510
|
+
*/
|
|
27511
|
+
function extractFilterFieldFromData(dataSection) {
|
|
27512
|
+
const filterField = getFieldFromDataGroups(dataSection, UserFilterConstants.FILTER_FIELD_ID);
|
|
27513
|
+
if (filterField === undefined || !(filterField instanceof FilterField)) {
|
|
27514
|
+
throw new Error(`Filter could not be extracted. The provided datagroups do not contain a filter field with ID '${UserFilterConstants.FILTER_FIELD_ID}'`);
|
|
27515
|
+
}
|
|
27516
|
+
return filterField;
|
|
27517
|
+
}
|
|
27518
|
+
/**
|
|
27519
|
+
* @returns a {@link SimpleFilter} containing the filter stored in the provided {@link FilterField}.
|
|
27520
|
+
* Throws an error if this is not possible.
|
|
27521
|
+
*/
|
|
27522
|
+
function extractFilterFromFilterField(filterField) {
|
|
27523
|
+
if (filterField === undefined || !(filterField instanceof FilterField)) {
|
|
27524
|
+
throw new Error('Filter could not be resolved');
|
|
27525
|
+
}
|
|
27526
|
+
return SimpleFilter.fromQuery({ query: filterField.value }, filterField.filterMetadata.filterType);
|
|
27527
|
+
}
|
|
27528
|
+
/**
|
|
27529
|
+
* Extracts the selected search type from enumeration field of the navigation item task data.
|
|
27530
|
+
* @returns a {@link SearchMode} containing {@link SearchMode.ADVANCED} or {@link SearchMode.FULLTEXT} or {@link undefined}
|
|
27531
|
+
* if unexpected value is found
|
|
27532
|
+
* */
|
|
27533
|
+
function extractSearchTypeFromData(dataSection, typeFieldId) {
|
|
27534
|
+
const typeField = getFieldFromDataGroups(dataSection, typeFieldId);
|
|
27535
|
+
if (typeField === undefined) {
|
|
27536
|
+
throw new Error('Navigation entry search type field could not be resolved');
|
|
27537
|
+
}
|
|
27538
|
+
switch (typeField.value) {
|
|
27539
|
+
case 'fulltext':
|
|
27540
|
+
return SearchMode.FULLTEXT;
|
|
27541
|
+
case 'fulltext_advanced':
|
|
27542
|
+
return SearchMode.ADVANCED;
|
|
27543
|
+
default:
|
|
27544
|
+
return undefined;
|
|
27545
|
+
}
|
|
27546
|
+
}
|
|
27547
|
+
/**
|
|
27548
|
+
* Extracts field value from data
|
|
27549
|
+
* @returns value of extracted field
|
|
27550
|
+
* @throws Error if no field is found
|
|
27551
|
+
* */
|
|
27552
|
+
function extractFieldValueFromData(dataSection, fieldId) {
|
|
27553
|
+
const field = getFieldFromDataGroups(dataSection, fieldId);
|
|
27554
|
+
if (field === undefined) {
|
|
27555
|
+
throw new Error(`Field ${fieldId} could not be resolved`);
|
|
27556
|
+
}
|
|
27557
|
+
return field.value;
|
|
27558
|
+
}
|
|
27559
|
+
|
|
27560
|
+
function addAllowedNets(allowedNets, existingAllowedNets) {
|
|
27561
|
+
if (!!allowedNets && allowedNets.length > 0) {
|
|
27562
|
+
existingAllowedNets.next([...allowedNets]);
|
|
27563
|
+
}
|
|
27564
|
+
}
|
|
27565
|
+
/**
|
|
27566
|
+
* Convenience method that can be used as an allowed nets factory for tabbed task views.
|
|
27567
|
+
* If no allowed nets are provided in the injected data then an {@link AllowedNetsService} with no allowed nets is created.
|
|
27568
|
+
* It has a dependency on this class and {@link NAE_TAB_DATA} injection token.
|
|
27569
|
+
*/
|
|
27570
|
+
function tabbedAllowedNetsServiceFactory(factory, tabData) {
|
|
27571
|
+
return factory.createFromArray(tabData?.allowedNets ?? []);
|
|
27572
|
+
}
|
|
27573
|
+
/**
|
|
27574
|
+
* Convenience method that can be used as an allowed nets factory for views that are loaded from filter process instances.
|
|
27575
|
+
* It has a dependency on this class and {@link NAE_NAVIGATION_ITEM_TASK_DATA} injection token.
|
|
27576
|
+
*/
|
|
27577
|
+
function navigationItemTaskAllowedNetsServiceFactory(factory, baseAllowedNets, navigationItemTaskData) {
|
|
27578
|
+
const filterField = getFieldFromDataGroups(navigationItemTaskData, UserFilterConstants.FILTER_FIELD_ID);
|
|
27579
|
+
const allowedNetsField = getFieldFromDataGroups(navigationItemTaskData, UserFilterConstants.ALLOWED_NETS_FIELD_ID);
|
|
27580
|
+
if (filterField === undefined) {
|
|
27581
|
+
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!`);
|
|
27582
|
+
}
|
|
27583
|
+
const nets = new BehaviorSubject(Array.from(new Set([...filterField.allowedNets])));
|
|
27584
|
+
if (filterField.filterMetadata.inheritAllowedNets) {
|
|
27585
|
+
baseAllowedNets.allowedNets$.subscribe(allowedNets => {
|
|
27586
|
+
const netSet = new Set(allowedNets);
|
|
27587
|
+
nets.next(Array.from(netSet));
|
|
27588
|
+
});
|
|
27589
|
+
}
|
|
27590
|
+
if (!!allowedNetsField) {
|
|
27591
|
+
addAllowedNets(allowedNetsField.value, nets);
|
|
27592
|
+
allowedNetsField.valueChanges().subscribe(allowedNets => {
|
|
27593
|
+
addAllowedNets(allowedNetsField.value, nets);
|
|
27594
|
+
});
|
|
27595
|
+
}
|
|
27596
|
+
return factory.createFromObservable(nets.asObservable());
|
|
27597
|
+
}
|
|
27598
|
+
/**
|
|
27599
|
+
* Simplifies the creation of {@link AllowedNetsService} instances
|
|
27600
|
+
*/
|
|
27601
|
+
class AllowedNetsServiceFactory {
|
|
27602
|
+
constructor(_processService, _petriNetResource, _configService, _log) {
|
|
27603
|
+
this._processService = _processService;
|
|
27604
|
+
this._petriNetResource = _petriNetResource;
|
|
27605
|
+
this._configService = _configService;
|
|
27606
|
+
this._log = _log;
|
|
27607
|
+
}
|
|
27608
|
+
/**
|
|
27609
|
+
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
27610
|
+
* @returns an instance of {@link AllowedNetsService} with all nets set as the `allowedNets`
|
|
27611
|
+
*/
|
|
27612
|
+
createWithAllNets() {
|
|
27613
|
+
return new AllowedNetsService(this._petriNetResource.getAll().pipe(switchMap(nets => {
|
|
27614
|
+
if (nets && Array.isArray(nets)) {
|
|
27615
|
+
return of(nets.map(n => n.identifier));
|
|
27616
|
+
}
|
|
27617
|
+
else {
|
|
27618
|
+
return of([]);
|
|
27619
|
+
}
|
|
27620
|
+
})), this._processService);
|
|
27621
|
+
}
|
|
27622
|
+
/**
|
|
27623
|
+
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
27624
|
+
* @param allowedNetsIdentifiers identifiers of the allowed nets
|
|
27625
|
+
*/
|
|
27626
|
+
createFromArray(allowedNetsIdentifiers) {
|
|
27627
|
+
return new AllowedNetsService(of(allowedNetsIdentifiers), this._processService);
|
|
27628
|
+
}
|
|
27629
|
+
/**
|
|
27630
|
+
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
27631
|
+
* @param webViewPath path to the view as specified in its configuration. No leading backslash.
|
|
27632
|
+
* Allowed nets are loaded from the configuration of the view.
|
|
27633
|
+
*/
|
|
27634
|
+
createFromConfig(webViewPath) {
|
|
27635
|
+
const view = this._configService.getViewByPath(webViewPath);
|
|
27636
|
+
if (view?.layout?.params === undefined) {
|
|
27637
|
+
throw new Error(`Can't load configuration for view with webPath: '${webViewPath}'`);
|
|
27638
|
+
}
|
|
27639
|
+
const viewParams = view.layout.params;
|
|
27640
|
+
if (viewParams.allowedNets === undefined) {
|
|
27641
|
+
this._log.warn(`No 'allowedNets' provided for view with webPath '${webViewPath}'`);
|
|
27642
|
+
}
|
|
27643
|
+
return new AllowedNetsService(of(viewParams.allowedNets ?? []), this._processService);
|
|
27644
|
+
}
|
|
27645
|
+
/**
|
|
27646
|
+
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
27647
|
+
* @param netIdentifiers$ observable containing the identifiers of the allowed nets.
|
|
27648
|
+
* When a new value is emitted the allowed nets will be updated.
|
|
27649
|
+
*/
|
|
27650
|
+
createFromObservable(netIdentifiers$) {
|
|
27651
|
+
return new AllowedNetsService(netIdentifiers$, this._processService);
|
|
27652
|
+
}
|
|
27653
|
+
/**
|
|
27654
|
+
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
27655
|
+
* @param filterCase a filter process instance
|
|
27656
|
+
* Allowed nets are set from filter process immediate data
|
|
27657
|
+
*/
|
|
27658
|
+
createFromFilterCase(filterCase) {
|
|
27659
|
+
const filterData = getImmediateData(filterCase, UserFilterConstants.FILTER_FIELD_ID);
|
|
27660
|
+
if (filterData === undefined) {
|
|
27661
|
+
throw new Error(`Cannot get filter from case '${filterCase.title}' with id '${filterCase.stringId}'`);
|
|
27662
|
+
}
|
|
27663
|
+
return new AllowedNetsService(of(filterData.allowedNets), this._processService);
|
|
27664
|
+
}
|
|
27665
|
+
}
|
|
27666
|
+
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 });
|
|
27667
|
+
AllowedNetsServiceFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AllowedNetsServiceFactory, providedIn: 'root' });
|
|
27668
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AllowedNetsServiceFactory, decorators: [{
|
|
27669
|
+
type: Injectable,
|
|
27670
|
+
args: [{
|
|
27671
|
+
providedIn: 'root'
|
|
27672
|
+
}]
|
|
27673
|
+
}], ctorParameters: function () { return [{ type: ProcessService }, { type: PetriNetResourceService }, { type: ConfigurationService }, { type: LoggerService }]; } });
|
|
27674
|
+
|
|
27675
|
+
class BaseAllowedNetsService {
|
|
27676
|
+
constructor() {
|
|
27677
|
+
this._baseAllowedNets = new BehaviorSubject([]);
|
|
27678
|
+
}
|
|
27679
|
+
ngOnDestroy() {
|
|
27680
|
+
this._baseAllowedNets.complete();
|
|
27681
|
+
if (this._sub !== undefined) {
|
|
27682
|
+
this._sub.unsubscribe();
|
|
27683
|
+
}
|
|
27684
|
+
}
|
|
27685
|
+
/**
|
|
27686
|
+
* Sets the new identifiers of the base allowed nets
|
|
27687
|
+
* @param nets new base net identifiers
|
|
27688
|
+
*/
|
|
27689
|
+
set allowedNets(nets) {
|
|
27690
|
+
this._baseAllowedNets.next(nets);
|
|
27691
|
+
}
|
|
27692
|
+
/**
|
|
27693
|
+
* @deprecated This method should not be used. Use {@link BaseAllowedNetsService#allowedNets$} instead
|
|
27694
|
+
* @returns the currently set allowed nets. Returns an empty array if no value was set.
|
|
27695
|
+
*/
|
|
27696
|
+
get allowedNets() {
|
|
27697
|
+
return this._baseAllowedNets.value;
|
|
27698
|
+
}
|
|
27699
|
+
/**
|
|
27700
|
+
* Subscribes to the provided `Observable` and forwards the emissions to the baseAllowedNets `Subject`.
|
|
27701
|
+
* If a new `Observable` is set, the previous Subscription is unsubscribed.
|
|
27702
|
+
* @param observableNets an observable emitting the new base net identifiers
|
|
27703
|
+
*/
|
|
27704
|
+
set allowedNets$(observableNets) {
|
|
27705
|
+
if (this._sub !== undefined) {
|
|
27706
|
+
this._sub.unsubscribe();
|
|
27707
|
+
}
|
|
27708
|
+
this._sub = observableNets.subscribe(nets => {
|
|
27709
|
+
this._baseAllowedNets.next(nets);
|
|
27710
|
+
});
|
|
27711
|
+
}
|
|
27712
|
+
/**
|
|
27713
|
+
* @returns an observable that emits the currently set base allowed nets and any subsequent values
|
|
27714
|
+
*/
|
|
27715
|
+
get allowedNets$() {
|
|
27716
|
+
return this._baseAllowedNets.asObservable();
|
|
27717
|
+
}
|
|
27718
|
+
}
|
|
27719
|
+
BaseAllowedNetsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseAllowedNetsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
27720
|
+
BaseAllowedNetsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseAllowedNetsService, providedIn: 'root' });
|
|
27721
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseAllowedNetsService, decorators: [{
|
|
27722
|
+
type: Injectable,
|
|
27723
|
+
args: [{
|
|
27724
|
+
providedIn: 'root'
|
|
27725
|
+
}]
|
|
27726
|
+
}], ctorParameters: function () { return []; } });
|
|
27727
|
+
|
|
27923
27728
|
/**
|
|
27924
27729
|
* This service is able to load the full saved filter including all of its ancestor filters.
|
|
27925
27730
|
*/
|
|
27926
27731
|
class FilterExtractionService {
|
|
27927
|
-
constructor(_filterRepository, _taskResourceService, _log) {
|
|
27732
|
+
constructor(_filterRepository, _taskResourceService, _factory, baseAllowedNets, _log) {
|
|
27928
27733
|
this._filterRepository = _filterRepository;
|
|
27929
27734
|
this._taskResourceService = _taskResourceService;
|
|
27735
|
+
this._factory = _factory;
|
|
27736
|
+
this.baseAllowedNets = baseAllowedNets;
|
|
27930
27737
|
this._log = _log;
|
|
27931
27738
|
}
|
|
27932
|
-
|
|
27933
|
-
const
|
|
27739
|
+
extractAdditionalFilterAllowedNets(dataSection) {
|
|
27740
|
+
const taskRefIndex = getFieldIndexFromDataGroups(dataSection, GroupNavigationConstants.ITEM_FIELD_ID_ADDITIONAL_FILTER_TASKREF);
|
|
27741
|
+
if (taskRefIndex === undefined) {
|
|
27742
|
+
return undefined;
|
|
27743
|
+
}
|
|
27744
|
+
const sliced = dataSection.slice(taskRefIndex.dataGroupIndex + 1);
|
|
27745
|
+
if (sliced.length == 0) {
|
|
27746
|
+
return undefined;
|
|
27747
|
+
}
|
|
27748
|
+
return navigationItemTaskAllowedNetsServiceFactory(this._factory, this.baseAllowedNets, sliced);
|
|
27749
|
+
}
|
|
27750
|
+
extractCompleteAdditionalFilterFromData(dataSection) {
|
|
27751
|
+
const taskRefIndex = getFieldIndexFromDataGroups(dataSection, GroupNavigationConstants.ITEM_FIELD_ID_ADDITIONAL_FILTER_TASKREF);
|
|
27752
|
+
if (taskRefIndex === undefined) {
|
|
27753
|
+
return undefined;
|
|
27754
|
+
}
|
|
27755
|
+
return this.extractCompleteFilterFromData(dataSection.slice(taskRefIndex.dataGroupIndex + 1));
|
|
27756
|
+
}
|
|
27757
|
+
extractCompleteFilterFromData(dataSection, fieldId = UserFilterConstants.FILTER_FIELD_ID) {
|
|
27758
|
+
const filterIndex = getFieldIndexFromDataGroups(dataSection, fieldId);
|
|
27934
27759
|
if (filterIndex === undefined) {
|
|
27935
27760
|
return undefined;
|
|
27936
27761
|
}
|
|
@@ -27942,7 +27767,7 @@ class FilterExtractionService {
|
|
|
27942
27767
|
throw new Error('Filter segment could not be extracted from filter field');
|
|
27943
27768
|
}
|
|
27944
27769
|
const parentFilter = this.extractCompleteFilterFromData(dataSection.slice(filterIndex.dataGroupIndex + 1));
|
|
27945
|
-
if (parentFilter !== undefined) {
|
|
27770
|
+
if (parentFilter !== undefined && parentFilter.type === filterSegment.type) {
|
|
27946
27771
|
return filterSegment.merge(parentFilter, MergeOperator.AND);
|
|
27947
27772
|
}
|
|
27948
27773
|
// Is the filter view rooted?
|
|
@@ -27974,16 +27799,21 @@ class FilterExtractionService {
|
|
|
27974
27799
|
return appOriginFilter;
|
|
27975
27800
|
}
|
|
27976
27801
|
}
|
|
27977
|
-
// the same
|
|
27802
|
+
// the same regex is used in a backend filter process action. Please keep them in sync
|
|
27978
27803
|
FilterExtractionService.UNTABBED_VIEW_ID_EXTRACTOR = '^.*?(-\\d+)?$';
|
|
27979
|
-
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 });
|
|
27804
|
+
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 });
|
|
27980
27805
|
FilterExtractionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterExtractionService, providedIn: 'root' });
|
|
27981
27806
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FilterExtractionService, decorators: [{
|
|
27982
27807
|
type: Injectable,
|
|
27983
27808
|
args: [{
|
|
27984
27809
|
providedIn: 'root'
|
|
27985
27810
|
}]
|
|
27986
|
-
}], ctorParameters: function () { return [{ type: FilterRepository }, { type: TaskResourceService }, { type: LoggerService }]; } });
|
|
27811
|
+
}], ctorParameters: function () { return [{ type: FilterRepository }, { type: TaskResourceService }, { type: AllowedNetsServiceFactory }, { type: BaseAllowedNetsService }, { type: LoggerService }]; } });
|
|
27812
|
+
|
|
27813
|
+
/**
|
|
27814
|
+
* Holds component for dynamic routing resolution of group navigation component resolver component by the {@link RoutingBuilderService}.
|
|
27815
|
+
*/
|
|
27816
|
+
const NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT = new InjectionToken('NaeGroupNavigationComponentResolverComponent');
|
|
27987
27817
|
|
|
27988
27818
|
var UriContentType;
|
|
27989
27819
|
(function (UriContentType) {
|
|
@@ -28285,6 +28115,15 @@ class ResultWithAfterActions {
|
|
|
28285
28115
|
}
|
|
28286
28116
|
}
|
|
28287
28117
|
|
|
28118
|
+
/**
|
|
28119
|
+
* Forces a re-render of the tree backed by the datasource
|
|
28120
|
+
*/
|
|
28121
|
+
function refreshTree(tree) {
|
|
28122
|
+
const d = tree.data;
|
|
28123
|
+
tree.data = null;
|
|
28124
|
+
tree.data = d;
|
|
28125
|
+
}
|
|
28126
|
+
|
|
28288
28127
|
class CaseTreeService {
|
|
28289
28128
|
constructor(_caseResourceService, _treeCaseViewService, _taskResourceService, _logger, _processService, _sideMenuService, _translateService, _optionSelectorComponent, _treeConfiguration) {
|
|
28290
28129
|
this._caseResourceService = _caseResourceService;
|
|
@@ -30345,15 +30184,6 @@ class ClausePredicate extends Predicate {
|
|
|
30345
30184
|
}
|
|
30346
30185
|
}
|
|
30347
30186
|
|
|
30348
|
-
/**
|
|
30349
|
-
* Search component search mode
|
|
30350
|
-
*/
|
|
30351
|
-
var SearchMode;
|
|
30352
|
-
(function (SearchMode) {
|
|
30353
|
-
SearchMode[SearchMode["FULLTEXT"] = 0] = "FULLTEXT";
|
|
30354
|
-
SearchMode[SearchMode["ADVANCED"] = 1] = "ADVANCED";
|
|
30355
|
-
})(SearchMode || (SearchMode = {}));
|
|
30356
|
-
|
|
30357
30187
|
/**
|
|
30358
30188
|
* This service is used to signal to inputs in advanced search components, whether they should autofocus, or not.
|
|
30359
30189
|
*
|
|
@@ -31956,6 +31786,26 @@ function navigationItemTaskCategoryFactory(categoryResolverService, navigationIt
|
|
|
31956
31786
|
return cats;
|
|
31957
31787
|
}
|
|
31958
31788
|
|
|
31789
|
+
function navigationItemCaseViewDefaultHeadersFactory(navigationItemTaskData) {
|
|
31790
|
+
return navigationItemDefaultHeadersFactory(navigationItemTaskData, GroupNavigationConstants.ITEM_FIELD_ID_USE_CASE_DEFAULT_HEADERS, GroupNavigationConstants.ITEM_FIELD_ID_CASE_DEFAULT_HEADERS);
|
|
31791
|
+
}
|
|
31792
|
+
function navigationItemTaskViewDefaultHeadersFactory(navigationItemTaskData) {
|
|
31793
|
+
return navigationItemDefaultHeadersFactory(navigationItemTaskData, GroupNavigationConstants.ITEM_FIELD_ID_USE_TASK_DEFAULT_HEADERS, GroupNavigationConstants.ITEM_FIELD_ID_TASK_DEFAULT_HEADERS);
|
|
31794
|
+
}
|
|
31795
|
+
function navigationItemDefaultHeadersFactory(navigationItemTaskData, useFieldId, defaultHeadersFieldId) {
|
|
31796
|
+
const isUse = extractFieldValueFromData(navigationItemTaskData, useFieldId);
|
|
31797
|
+
if (isUse) {
|
|
31798
|
+
const defaultHeaders = extractFieldValueFromData(navigationItemTaskData, defaultHeadersFieldId);
|
|
31799
|
+
if (defaultHeaders === undefined || defaultHeaders === "") {
|
|
31800
|
+
return undefined;
|
|
31801
|
+
}
|
|
31802
|
+
return defaultHeaders.split(',');
|
|
31803
|
+
}
|
|
31804
|
+
else {
|
|
31805
|
+
return undefined;
|
|
31806
|
+
}
|
|
31807
|
+
}
|
|
31808
|
+
|
|
31959
31809
|
class IsEmptyPipe {
|
|
31960
31810
|
/**
|
|
31961
31811
|
* Check if is value is empty.
|
|
@@ -33114,129 +32964,517 @@ class TestConfigurationService extends ConfigurationService {
|
|
|
33114
32964
|
groupNavigationRoute: 'config-route'
|
|
33115
32965
|
}
|
|
33116
32966
|
}
|
|
33117
|
-
});
|
|
32967
|
+
});
|
|
32968
|
+
}
|
|
32969
|
+
}
|
|
32970
|
+
|
|
32971
|
+
const TestCaseViewAllowedNetsFactory = (factory) => {
|
|
32972
|
+
return factory.createFromConfig('cases');
|
|
32973
|
+
};
|
|
32974
|
+
const TestTaskViewAllowedNetsFactory = (factory) => {
|
|
32975
|
+
return factory.createFromConfig('task');
|
|
32976
|
+
};
|
|
32977
|
+
const TestNoAllowedNetsFactory = (factory) => {
|
|
32978
|
+
return factory.createFromArray([]);
|
|
32979
|
+
};
|
|
32980
|
+
const TestCaseBaseFilterProvider = () => {
|
|
32981
|
+
return {
|
|
32982
|
+
filter: SimpleFilter.emptyCaseFilter()
|
|
32983
|
+
};
|
|
32984
|
+
};
|
|
32985
|
+
const TestTaskBaseFilterProvider = () => {
|
|
32986
|
+
return {
|
|
32987
|
+
filter: SimpleFilter.emptyTaskFilter()
|
|
32988
|
+
};
|
|
32989
|
+
};
|
|
32990
|
+
|
|
32991
|
+
class TestViewService extends ViewService {
|
|
32992
|
+
constructor(config, router, logger) {
|
|
32993
|
+
super([], config, router, logger);
|
|
32994
|
+
}
|
|
32995
|
+
}
|
|
32996
|
+
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 });
|
|
32997
|
+
TestViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService });
|
|
32998
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService, decorators: [{
|
|
32999
|
+
type: Injectable
|
|
33000
|
+
}], ctorParameters: function () { return [{ type: ConfigurationService }, { type: i2$3.Router }, { type: LoggerService }]; } });
|
|
33001
|
+
|
|
33002
|
+
/**
|
|
33003
|
+
* A utility class that mock any pageable endpoint that takes one parameter
|
|
33004
|
+
*/
|
|
33005
|
+
class MockEndpoint {
|
|
33006
|
+
constructor() {
|
|
33007
|
+
/**
|
|
33008
|
+
* The content that is queries by the requests.
|
|
33009
|
+
*/
|
|
33010
|
+
this.content = [];
|
|
33011
|
+
}
|
|
33012
|
+
/**
|
|
33013
|
+
* @param filter - a filtering argument. This mock ignores it.
|
|
33014
|
+
* @param params - pagination configuration. The mock extracts the `size` and `page` property to format the result properly.
|
|
33015
|
+
* @returns an `Observable` containing a properly formatted {@link Page} object.
|
|
33016
|
+
*
|
|
33017
|
+
* The `pagination` attributes are filled according to the request and the endpoints [content]{@link MockEndpoint#content}.
|
|
33018
|
+
*
|
|
33019
|
+
* If an empty {@link Page} should be returned the returned object has its `content` attribute set to some object
|
|
33020
|
+
* (to match backend and resource service behavior).
|
|
33021
|
+
* Otherwise the `content` attribute contains the corresponding subsection fo the [content]{@link MockEndpoint#content} array.
|
|
33022
|
+
*/
|
|
33023
|
+
search(filter, params) {
|
|
33024
|
+
const rp = this.getPagination(params);
|
|
33025
|
+
const result = this.content.slice(rp.pageSize * rp.pageNumber, rp.pageSize * (rp.pageNumber + 1));
|
|
33026
|
+
const resultPage = {
|
|
33027
|
+
pagination: {
|
|
33028
|
+
size: result.length,
|
|
33029
|
+
totalElements: this.content.length,
|
|
33030
|
+
totalPages: Math.ceil(this.content.length / rp.pageSize),
|
|
33031
|
+
number: rp.pageNumber
|
|
33032
|
+
}
|
|
33033
|
+
};
|
|
33034
|
+
Object.assign(resultPage, { content: result.length !== 0 ? result : {} });
|
|
33035
|
+
return of(resultPage);
|
|
33036
|
+
}
|
|
33037
|
+
getPagination(params) {
|
|
33038
|
+
return {
|
|
33039
|
+
pageSize: parseInt(params.get(PaginationParams.PAGE_SIZE), 10),
|
|
33040
|
+
pageNumber: parseInt(params.get(PaginationParams.PAGE_NUMBER), 10)
|
|
33041
|
+
};
|
|
33042
|
+
}
|
|
33043
|
+
}
|
|
33044
|
+
|
|
33045
|
+
/**
|
|
33046
|
+
* A module that provides the most common test dependencies, so that they don't have to be provided in each test.
|
|
33047
|
+
*
|
|
33048
|
+
* Provides the following:
|
|
33049
|
+
* - {@link AuthenticationMethodService} replaced with {@link MockAuthenticationMethodService}
|
|
33050
|
+
* - {@link ConfigurationService} replaced with {@link TestConfigurationService}
|
|
33051
|
+
*
|
|
33052
|
+
* Imports the following:
|
|
33053
|
+
* - [HttpClientTestingModule]{@link https://angular.io/api/common/http/testing/HttpClientTestingModule}
|
|
33054
|
+
*/
|
|
33055
|
+
class TestMockDependenciesModule {
|
|
33056
|
+
}
|
|
33057
|
+
TestMockDependenciesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestMockDependenciesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
33058
|
+
TestMockDependenciesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestMockDependenciesModule, imports: [HttpClientTestingModule] });
|
|
33059
|
+
TestMockDependenciesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestMockDependenciesModule, providers: [
|
|
33060
|
+
{ provide: AuthenticationMethodService, useClass: MockAuthenticationMethodService },
|
|
33061
|
+
{ provide: ConfigurationService, useClass: TestConfigurationService }
|
|
33062
|
+
], imports: [[
|
|
33063
|
+
HttpClientTestingModule
|
|
33064
|
+
]] });
|
|
33065
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestMockDependenciesModule, decorators: [{
|
|
33066
|
+
type: NgModule,
|
|
33067
|
+
args: [{
|
|
33068
|
+
declarations: [],
|
|
33069
|
+
imports: [
|
|
33070
|
+
HttpClientTestingModule
|
|
33071
|
+
],
|
|
33072
|
+
providers: [
|
|
33073
|
+
{ provide: AuthenticationMethodService, useClass: MockAuthenticationMethodService },
|
|
33074
|
+
{ provide: ConfigurationService, useClass: TestConfigurationService }
|
|
33075
|
+
]
|
|
33076
|
+
}]
|
|
33077
|
+
}] });
|
|
33078
|
+
|
|
33079
|
+
/**
|
|
33080
|
+
* Mock the {@link ProfileService}. By default all responses are successful. Responses can be customised.
|
|
33081
|
+
*/
|
|
33082
|
+
class MockProfileService {
|
|
33083
|
+
constructor() {
|
|
33084
|
+
this.changePasswordResponse = of({ success: 'success' });
|
|
33085
|
+
}
|
|
33086
|
+
changePassword(change) {
|
|
33087
|
+
return this.changePasswordResponse;
|
|
33088
|
+
}
|
|
33089
|
+
}
|
|
33090
|
+
|
|
33091
|
+
class ImportToAdd {
|
|
33092
|
+
constructor(className, fileImportPath) {
|
|
33093
|
+
this.className = className;
|
|
33094
|
+
this.fileImportPath = fileImportPath;
|
|
33095
|
+
}
|
|
33096
|
+
}
|
|
33097
|
+
|
|
33098
|
+
/**
|
|
33099
|
+
* @license
|
|
33100
|
+
* Copyright Google Inc. All Rights Reserved.
|
|
33101
|
+
*
|
|
33102
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
33103
|
+
* found in the LICENSE file at https://angular.io/license
|
|
33104
|
+
*
|
|
33105
|
+
* File copied from: angular_devkit/core/src/utils/strings.ts
|
|
33106
|
+
*/
|
|
33107
|
+
const STRING_DASHERIZE_REGEXP = (/[ _]/g);
|
|
33108
|
+
const STRING_DECAMELIZE_REGEXP = (/([a-z\d])([A-Z])/g);
|
|
33109
|
+
const STRING_CAMELIZE_REGEXP = (/(-|_|\.|\s)+(.)?/g);
|
|
33110
|
+
const STRING_UNDERSCORE_REGEXP_1 = (/([a-z\d])([A-Z]+)/g);
|
|
33111
|
+
const STRING_UNDERSCORE_REGEXP_2 = (/-|\s+/g);
|
|
33112
|
+
/**
|
|
33113
|
+
* Converts a camelized string into all lower case separated by underscores.
|
|
33114
|
+
*
|
|
33115
|
+
* ```javascript
|
|
33116
|
+
* decamelize('innerHTML'); // 'inner_html'
|
|
33117
|
+
* decamelize('action_name'); // 'action_name'
|
|
33118
|
+
* decamelize('css-class-name'); // 'css-class-name'
|
|
33119
|
+
* decamelize('my favorite items'); // 'my favorite items'
|
|
33120
|
+
* ```
|
|
33121
|
+
* @method decamelize
|
|
33122
|
+
* @param str The string to decamelize.
|
|
33123
|
+
* @return the decamelized string.
|
|
33124
|
+
*/
|
|
33125
|
+
function decamelize(str) {
|
|
33126
|
+
return str.replace(STRING_DECAMELIZE_REGEXP, '$1_$2').toLowerCase();
|
|
33127
|
+
}
|
|
33128
|
+
/**
|
|
33129
|
+
* Replaces underscores, spaces, or camelCase with dashes.
|
|
33130
|
+
* ```javascript
|
|
33131
|
+
* dasherize('innerHTML'); // 'inner-html'
|
|
33132
|
+
* dasherize('action_name'); // 'action-name'
|
|
33133
|
+
* dasherize('css-class-name'); // 'css-class-name'
|
|
33134
|
+
* dasherize('my favorite items'); // 'my-favorite-items'
|
|
33135
|
+
* ```
|
|
33136
|
+
* @method dasherize
|
|
33137
|
+
* @param str The string to dasherize.
|
|
33138
|
+
* @return the dasherized string.
|
|
33139
|
+
*/
|
|
33140
|
+
function dasherize(str) {
|
|
33141
|
+
return decamelize(str).replace(STRING_DASHERIZE_REGEXP, '-');
|
|
33142
|
+
}
|
|
33143
|
+
/**
|
|
33144
|
+
* Returns the lowerCamelCase form of a string.
|
|
33145
|
+
* ```javascript
|
|
33146
|
+
* camelize('innerHTML'); // 'innerHTML'
|
|
33147
|
+
* camelize('action_name'); // 'actionName'
|
|
33148
|
+
* camelize('css-class-name'); // 'cssClassName'
|
|
33149
|
+
* camelize('my favorite items'); // 'myFavoriteItems'
|
|
33150
|
+
* camelize('My Favorite Items'); // 'myFavoriteItems'
|
|
33151
|
+
* ```
|
|
33152
|
+
* @method camelize
|
|
33153
|
+
* @param str The string to camelize.
|
|
33154
|
+
* @return the camelized string.
|
|
33155
|
+
*/
|
|
33156
|
+
function camelize(str) {
|
|
33157
|
+
return str
|
|
33158
|
+
.replace(STRING_CAMELIZE_REGEXP, (_match, _separator, chr) => {
|
|
33159
|
+
return chr ? chr.toUpperCase() : '';
|
|
33160
|
+
})
|
|
33161
|
+
.replace(/^([A-Z])/, (match) => match.toLowerCase());
|
|
33162
|
+
}
|
|
33163
|
+
/**
|
|
33164
|
+
* Returns the UpperCamelCase form of a string.
|
|
33165
|
+
* ```javascript
|
|
33166
|
+
* 'innerHTML'.classify(); // 'InnerHTML'
|
|
33167
|
+
* 'action_name'.classify(); // 'ActionName'
|
|
33168
|
+
* 'css-class-name'.classify(); // 'CssClassName'
|
|
33169
|
+
* 'my favorite items'.classify(); // 'MyFavoriteItems'
|
|
33170
|
+
* ```
|
|
33171
|
+
* @method classify
|
|
33172
|
+
* @param str the string to classify
|
|
33173
|
+
* @return the classified string
|
|
33174
|
+
*/
|
|
33175
|
+
function classify(str) {
|
|
33176
|
+
return str.split('.').map(part => capitalize(camelize(part))).join('.');
|
|
33177
|
+
}
|
|
33178
|
+
/**
|
|
33179
|
+
* More general than decamelize. Returns the lower\_case\_and\_underscored
|
|
33180
|
+
* form of a string.
|
|
33181
|
+
* ```javascript
|
|
33182
|
+
* 'innerHTML'.underscore(); // 'inner_html'
|
|
33183
|
+
* 'action_name'.underscore(); // 'action_name'
|
|
33184
|
+
* 'css-class-name'.underscore(); // 'css_class_name'
|
|
33185
|
+
* 'my favorite items'.underscore(); // 'my_favorite_items'
|
|
33186
|
+
* ```
|
|
33187
|
+
* @method underscore
|
|
33188
|
+
* @param str The string to underscore.
|
|
33189
|
+
* @return the underscored string.
|
|
33190
|
+
*/
|
|
33191
|
+
function underscore(str) {
|
|
33192
|
+
return str
|
|
33193
|
+
.replace(STRING_UNDERSCORE_REGEXP_1, '$1_$2')
|
|
33194
|
+
.replace(STRING_UNDERSCORE_REGEXP_2, '_')
|
|
33195
|
+
.toLowerCase();
|
|
33196
|
+
}
|
|
33197
|
+
/**
|
|
33198
|
+
* Returns the Capitalized form of a string
|
|
33199
|
+
* ```javascript
|
|
33200
|
+
* 'innerHTML'.capitalize() // 'InnerHTML'
|
|
33201
|
+
* 'action_name'.capitalize() // 'Action_name'
|
|
33202
|
+
* 'css-class-name'.capitalize() // 'Css-class-name'
|
|
33203
|
+
* 'my favorite items'.capitalize() // 'My favorite items'
|
|
33204
|
+
* ```
|
|
33205
|
+
* @method capitalize
|
|
33206
|
+
* @param str The string to capitalize.
|
|
33207
|
+
* @return The capitalized string.
|
|
33208
|
+
*/
|
|
33209
|
+
function capitalize(str) {
|
|
33210
|
+
return str.charAt(0).toUpperCase() + str.substr(1);
|
|
33211
|
+
}
|
|
33212
|
+
/**
|
|
33213
|
+
* Calculate the levenshtein distance of two strings.
|
|
33214
|
+
* See https://en.wikipedia.org/wiki/Levenshtein_distance.
|
|
33215
|
+
* Based off https://gist.github.com/andrei-m/982927 (for using the faster dynamic programming
|
|
33216
|
+
* version).
|
|
33217
|
+
*
|
|
33218
|
+
* @param a String a.
|
|
33219
|
+
* @param b String b.
|
|
33220
|
+
* @returns A number that represents the distance between the two strings. The greater the number
|
|
33221
|
+
* the more distant the strings are from each others.
|
|
33222
|
+
*/
|
|
33223
|
+
function levenshtein(a, b) {
|
|
33224
|
+
if (a.length === 0) {
|
|
33225
|
+
return b.length;
|
|
33226
|
+
}
|
|
33227
|
+
if (b.length === 0) {
|
|
33228
|
+
return a.length;
|
|
33229
|
+
}
|
|
33230
|
+
const matrix = [];
|
|
33231
|
+
// increment along the first column of each row
|
|
33232
|
+
for (let i = 0; i <= b.length; i++) {
|
|
33233
|
+
matrix[i] = [i];
|
|
33234
|
+
}
|
|
33235
|
+
// increment each column in the first row
|
|
33236
|
+
for (let j = 0; j <= a.length; j++) {
|
|
33237
|
+
matrix[0][j] = j;
|
|
33238
|
+
}
|
|
33239
|
+
// Fill in the rest of the matrix
|
|
33240
|
+
for (let i = 1; i <= b.length; i++) {
|
|
33241
|
+
for (let j = 1; j <= a.length; j++) {
|
|
33242
|
+
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
|
33243
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
33244
|
+
}
|
|
33245
|
+
else {
|
|
33246
|
+
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
|
|
33247
|
+
matrix[i][j - 1] + 1, // insertion
|
|
33248
|
+
matrix[i - 1][j] + 1);
|
|
33249
|
+
}
|
|
33250
|
+
}
|
|
33118
33251
|
}
|
|
33252
|
+
return matrix[b.length][a.length];
|
|
33119
33253
|
}
|
|
33120
33254
|
|
|
33121
|
-
|
|
33122
|
-
|
|
33123
|
-
|
|
33124
|
-
|
|
33125
|
-
|
|
33126
|
-
|
|
33127
|
-
|
|
33128
|
-
|
|
33129
|
-
}
|
|
33130
|
-
|
|
33131
|
-
|
|
33132
|
-
|
|
33133
|
-
|
|
33134
|
-
}
|
|
33135
|
-
|
|
33136
|
-
|
|
33137
|
-
|
|
33138
|
-
|
|
33139
|
-
|
|
33140
|
-
|
|
33141
|
-
|
|
33142
|
-
|
|
33143
|
-
|
|
33255
|
+
class ViewClassInfo extends ImportToAdd {
|
|
33256
|
+
constructor(path, viewType, customComponentName) {
|
|
33257
|
+
super('', '');
|
|
33258
|
+
if (!customComponentName) {
|
|
33259
|
+
this.prefix = ViewClassInfo.convertPathToClassNamePrefix(path);
|
|
33260
|
+
const classSuffix = ViewClassInfo.resolveClassSuffixForView(viewType);
|
|
33261
|
+
this.nameWithoutComponent = `${classify(this.prefix)}${classSuffix}`;
|
|
33262
|
+
this.fileImportPath = `./views/${path}/${this.prefix}-${dasherize(classSuffix)}.component`;
|
|
33263
|
+
}
|
|
33264
|
+
else {
|
|
33265
|
+
this.prefix = '';
|
|
33266
|
+
this.nameWithoutComponent = classify(customComponentName);
|
|
33267
|
+
this.fileImportPath = `./views/${path}/${dasherize(customComponentName)}.component`;
|
|
33268
|
+
}
|
|
33269
|
+
this.className = `${this.nameWithoutComponent}Component`;
|
|
33270
|
+
}
|
|
33271
|
+
static convertPathToClassNamePrefix(path) {
|
|
33272
|
+
const regexDash = /-/g;
|
|
33273
|
+
return path.replace(regexDash, '_').replace(/\//g, '-').toLocaleLowerCase();
|
|
33274
|
+
}
|
|
33275
|
+
static resolveClassSuffixForView(view) {
|
|
33276
|
+
switch (view) {
|
|
33277
|
+
case 'login':
|
|
33278
|
+
return 'Login';
|
|
33279
|
+
case 'tabView':
|
|
33280
|
+
return 'TabView';
|
|
33281
|
+
case 'taskView':
|
|
33282
|
+
return 'TaskView';
|
|
33283
|
+
case 'caseView':
|
|
33284
|
+
return 'CaseView';
|
|
33285
|
+
case 'emptyView':
|
|
33286
|
+
return 'EmptyView';
|
|
33287
|
+
case 'sidenavView':
|
|
33288
|
+
return 'SidenavView';
|
|
33289
|
+
case 'doubleDrawerView':
|
|
33290
|
+
return 'DoubleDrawerView';
|
|
33291
|
+
case 'toolbarView':
|
|
33292
|
+
return 'ToolbarView';
|
|
33293
|
+
case 'sidenavAndToolbarView':
|
|
33294
|
+
return 'SidenavAndToolbarView';
|
|
33295
|
+
case 'groupView':
|
|
33296
|
+
return 'GroupView';
|
|
33297
|
+
case 'dashboard':
|
|
33298
|
+
return 'Dashboard';
|
|
33299
|
+
case 'treeCaseView':
|
|
33300
|
+
return 'TreeCaseView';
|
|
33301
|
+
case 'workflowView':
|
|
33302
|
+
return 'WorkflowView';
|
|
33303
|
+
case 'roleAssignmentView':
|
|
33304
|
+
return 'RoleAssignmentView';
|
|
33305
|
+
case 'ldapRoleAssignmentView':
|
|
33306
|
+
return 'LdapRoleAssignmentView';
|
|
33307
|
+
default:
|
|
33308
|
+
throw new Error(`Unknown view type '${view}'`);
|
|
33309
|
+
}
|
|
33144
33310
|
}
|
|
33145
33311
|
}
|
|
33146
|
-
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 });
|
|
33147
|
-
TestViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService });
|
|
33148
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestViewService, decorators: [{
|
|
33149
|
-
type: Injectable
|
|
33150
|
-
}], ctorParameters: function () { return [{ type: ConfigurationService }, { type: i2$3.Router }, { type: LoggerService }]; } });
|
|
33151
33312
|
|
|
33313
|
+
const NAE_ROUTING_CONFIGURATION_PATH = "configPath";
|
|
33152
33314
|
/**
|
|
33153
|
-
*
|
|
33315
|
+
* Uses the information from nae.json to construct the application's routing
|
|
33154
33316
|
*/
|
|
33155
|
-
class
|
|
33156
|
-
constructor() {
|
|
33157
|
-
|
|
33158
|
-
|
|
33159
|
-
|
|
33160
|
-
this.
|
|
33161
|
-
|
|
33162
|
-
|
|
33163
|
-
|
|
33164
|
-
|
|
33165
|
-
|
|
33166
|
-
|
|
33167
|
-
|
|
33168
|
-
|
|
33169
|
-
* If an empty {@link Page} should be returned the returned object has its `content` attribute set to some object
|
|
33170
|
-
* (to match backend and resource service behavior).
|
|
33171
|
-
* Otherwise the `content` attribute contains the corresponding subsection fo the [content]{@link MockEndpoint#content} array.
|
|
33172
|
-
*/
|
|
33173
|
-
search(filter, params) {
|
|
33174
|
-
const rp = this.getPagination(params);
|
|
33175
|
-
const result = this.content.slice(rp.pageSize * rp.pageNumber, rp.pageSize * (rp.pageNumber + 1));
|
|
33176
|
-
const resultPage = {
|
|
33177
|
-
pagination: {
|
|
33178
|
-
size: result.length,
|
|
33179
|
-
totalElements: this.content.length,
|
|
33180
|
-
totalPages: Math.ceil(this.content.length / rp.pageSize),
|
|
33181
|
-
number: rp.pageNumber
|
|
33317
|
+
class RoutingBuilderService {
|
|
33318
|
+
constructor(router, _configService, _viewService, _logger, _dynamicNavigationRouteService, _groupNavigationComponentResolverComponent) {
|
|
33319
|
+
this._configService = _configService;
|
|
33320
|
+
this._viewService = _viewService;
|
|
33321
|
+
this._logger = _logger;
|
|
33322
|
+
this._dynamicNavigationRouteService = _dynamicNavigationRouteService;
|
|
33323
|
+
this._groupNavigationComponentResolverComponent = _groupNavigationComponentResolverComponent;
|
|
33324
|
+
this._groupNavigationRouteGenerated = false;
|
|
33325
|
+
router.relativeLinkResolution = 'legacy';
|
|
33326
|
+
router.config.splice(0, router.config.length);
|
|
33327
|
+
for (const [pathSegment, view] of Object.entries(_configService.get().views)) {
|
|
33328
|
+
const route = this.constructRouteObject(view, pathSegment);
|
|
33329
|
+
if (route !== undefined) {
|
|
33330
|
+
router.config.push(route);
|
|
33182
33331
|
}
|
|
33183
|
-
}
|
|
33184
|
-
|
|
33185
|
-
return of(resultPage);
|
|
33332
|
+
}
|
|
33333
|
+
router.config.push(...this.defaultRoutesRedirects());
|
|
33186
33334
|
}
|
|
33187
|
-
|
|
33188
|
-
|
|
33189
|
-
|
|
33190
|
-
|
|
33335
|
+
constructRouteObject(view, configPath, ancestors = []) {
|
|
33336
|
+
const component = this.resolveComponentClass(view, configPath);
|
|
33337
|
+
if (component === undefined) {
|
|
33338
|
+
return undefined;
|
|
33339
|
+
}
|
|
33340
|
+
if (!view.routing) {
|
|
33341
|
+
this._logger.warn(`nae.json configuration is invalid. View at path '${configPath}'` +
|
|
33342
|
+
` must define a 'routing' attribute. Skipping this view for routing generation.`);
|
|
33343
|
+
return undefined;
|
|
33344
|
+
}
|
|
33345
|
+
const route = {
|
|
33346
|
+
path: view.routing.path,
|
|
33347
|
+
data: {
|
|
33348
|
+
[NAE_ROUTING_CONFIGURATION_PATH]: configPath
|
|
33349
|
+
},
|
|
33350
|
+
component
|
|
33191
33351
|
};
|
|
33352
|
+
if (view?.layout?.name === GroupNavigationConstants.GROUP_NAVIGATION_OUTLET) {
|
|
33353
|
+
if (this._groupNavigationRouteGenerated) {
|
|
33354
|
+
this._logger.warn(`Multiple groupNavigationOutlets are present in nae.json. Duplicate entry found at path ${configPath}`);
|
|
33355
|
+
}
|
|
33356
|
+
else {
|
|
33357
|
+
this._logger.debug(`GroupNavigationOutlet found in nae.json at path '${configPath}'`);
|
|
33358
|
+
}
|
|
33359
|
+
const pathNoParams = route.path;
|
|
33360
|
+
route.path = `${pathNoParams}/:${GroupNavigationConstants.GROUP_NAVIGATION_ROUTER_PARAM}`;
|
|
33361
|
+
route.canActivate = [AuthenticationGuardService];
|
|
33362
|
+
const parentPathSegments = ancestors.map(a => a.path);
|
|
33363
|
+
parentPathSegments.push(pathNoParams);
|
|
33364
|
+
this._dynamicNavigationRouteService.route = parentPathSegments.join('/');
|
|
33365
|
+
this._groupNavigationRouteGenerated = true;
|
|
33366
|
+
return route;
|
|
33367
|
+
}
|
|
33368
|
+
if (view.routing.match !== undefined && view.routing.match) {
|
|
33369
|
+
route['pathMatch'] = 'full';
|
|
33370
|
+
}
|
|
33371
|
+
route['canActivate'] = [];
|
|
33372
|
+
if (view.access === 'private'
|
|
33373
|
+
|| view.access.hasOwnProperty('role')
|
|
33374
|
+
|| view.access.hasOwnProperty('group')
|
|
33375
|
+
|| view.access.hasOwnProperty('authority')) {
|
|
33376
|
+
route['canActivate'].push(AuthenticationGuardService);
|
|
33377
|
+
}
|
|
33378
|
+
if (view.access.hasOwnProperty('role')) {
|
|
33379
|
+
route['canActivate'].push(RoleGuardService);
|
|
33380
|
+
}
|
|
33381
|
+
if (view.access.hasOwnProperty('authority')) {
|
|
33382
|
+
route['canActivate'].push(AuthorityGuardService);
|
|
33383
|
+
}
|
|
33384
|
+
if (view.access.hasOwnProperty('group')) {
|
|
33385
|
+
route['canActivate'].push(GroupGuardService);
|
|
33386
|
+
}
|
|
33387
|
+
if (!!view.children) {
|
|
33388
|
+
route['children'] = [];
|
|
33389
|
+
Object.entries(view.children).forEach(([configPathSegment, childView]) => {
|
|
33390
|
+
// TODO check if routes are constructed correctly regarding empty route segments
|
|
33391
|
+
const childRoute = this.constructRouteObject(childView, `${configPath}/${configPathSegment}`, [...ancestors, route]);
|
|
33392
|
+
if (childRoute !== undefined) {
|
|
33393
|
+
route['children'].push(childRoute);
|
|
33394
|
+
}
|
|
33395
|
+
});
|
|
33396
|
+
}
|
|
33397
|
+
if (view?.layout?.name === 'tabView') {
|
|
33398
|
+
if (!view.children) {
|
|
33399
|
+
route['children'] = [];
|
|
33400
|
+
}
|
|
33401
|
+
route['children'].push({
|
|
33402
|
+
path: '**',
|
|
33403
|
+
component
|
|
33404
|
+
});
|
|
33405
|
+
}
|
|
33406
|
+
return route;
|
|
33192
33407
|
}
|
|
33193
|
-
|
|
33194
|
-
|
|
33195
|
-
|
|
33196
|
-
|
|
33197
|
-
|
|
33198
|
-
|
|
33199
|
-
|
|
33200
|
-
|
|
33201
|
-
|
|
33202
|
-
|
|
33203
|
-
|
|
33204
|
-
|
|
33205
|
-
|
|
33206
|
-
|
|
33207
|
-
|
|
33208
|
-
|
|
33209
|
-
|
|
33210
|
-
|
|
33211
|
-
|
|
33212
|
-
], imports: [[
|
|
33213
|
-
HttpClientTestingModule
|
|
33214
|
-
]] });
|
|
33215
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TestMockDependenciesModule, decorators: [{
|
|
33216
|
-
type: NgModule,
|
|
33217
|
-
args: [{
|
|
33218
|
-
declarations: [],
|
|
33219
|
-
imports: [
|
|
33220
|
-
HttpClientTestingModule
|
|
33221
|
-
],
|
|
33222
|
-
providers: [
|
|
33223
|
-
{ provide: AuthenticationMethodService, useClass: MockAuthenticationMethodService },
|
|
33224
|
-
{ provide: ConfigurationService, useClass: TestConfigurationService }
|
|
33225
|
-
]
|
|
33226
|
-
}]
|
|
33227
|
-
}] });
|
|
33228
|
-
|
|
33229
|
-
/**
|
|
33230
|
-
* Mock the {@link ProfileService}. By default all responses are successful. Responses can be customised.
|
|
33231
|
-
*/
|
|
33232
|
-
class MockProfileService {
|
|
33233
|
-
constructor() {
|
|
33234
|
-
this.changePasswordResponse = of({ success: 'success' });
|
|
33408
|
+
resolveComponentClass(view, configPath) {
|
|
33409
|
+
let result;
|
|
33410
|
+
if (!!view.component) {
|
|
33411
|
+
result = this._viewService.resolveNameToClass(view.component.class);
|
|
33412
|
+
}
|
|
33413
|
+
else if (!!view.layout) {
|
|
33414
|
+
result = this.resolveComponentClassFromLayout(view, configPath);
|
|
33415
|
+
}
|
|
33416
|
+
else {
|
|
33417
|
+
this._logger.warn(`nae.json configuration is invalid. View at path '${configPath}'` +
|
|
33418
|
+
` must define either a 'layout' or a 'component' attribute. Skipping this view for routing generation.`);
|
|
33419
|
+
return undefined;
|
|
33420
|
+
}
|
|
33421
|
+
if (result === undefined) {
|
|
33422
|
+
this._logger.warn(`Some views from nae.json configuration have not been created in the project.` +
|
|
33423
|
+
` Run create-view schematic to rectify this. Skipping this view for routing generation.`);
|
|
33424
|
+
return undefined;
|
|
33425
|
+
}
|
|
33426
|
+
return result;
|
|
33235
33427
|
}
|
|
33236
|
-
|
|
33237
|
-
|
|
33428
|
+
resolveComponentClassFromLayout(view, configPath) {
|
|
33429
|
+
if (view.layout.name === GroupNavigationConstants.GROUP_NAVIGATION_OUTLET) {
|
|
33430
|
+
return this._groupNavigationComponentResolverComponent;
|
|
33431
|
+
}
|
|
33432
|
+
const className = RoutingBuilderService.parseClassNameFromView(view, configPath);
|
|
33433
|
+
return this._viewService.resolveNameToClass(className);
|
|
33434
|
+
}
|
|
33435
|
+
static parseClassNameFromView(view, configPath) {
|
|
33436
|
+
if (!!view.layout.componentName) {
|
|
33437
|
+
return `${classify(view.layout.componentName)}Component`;
|
|
33438
|
+
}
|
|
33439
|
+
else {
|
|
33440
|
+
const classInfo = new ViewClassInfo(configPath, view.layout.name, view.layout.componentName);
|
|
33441
|
+
return classInfo.className;
|
|
33442
|
+
}
|
|
33443
|
+
}
|
|
33444
|
+
defaultRoutesRedirects() {
|
|
33445
|
+
const result = [];
|
|
33446
|
+
const servicesConfig = this._configService.getServicesConfiguration();
|
|
33447
|
+
if (!!servicesConfig && !!servicesConfig.routing) {
|
|
33448
|
+
if (!!servicesConfig.routing.defaultRedirect) {
|
|
33449
|
+
result.push({
|
|
33450
|
+
path: '',
|
|
33451
|
+
redirectTo: servicesConfig.routing.defaultRedirect,
|
|
33452
|
+
pathMatch: 'full'
|
|
33453
|
+
});
|
|
33454
|
+
}
|
|
33455
|
+
if (!!servicesConfig.routing.wildcardRedirect) {
|
|
33456
|
+
result.push({
|
|
33457
|
+
path: '**',
|
|
33458
|
+
redirectTo: servicesConfig.routing.wildcardRedirect
|
|
33459
|
+
});
|
|
33460
|
+
}
|
|
33461
|
+
}
|
|
33462
|
+
return result;
|
|
33238
33463
|
}
|
|
33239
33464
|
}
|
|
33465
|
+
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 });
|
|
33466
|
+
RoutingBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, providedIn: 'root' });
|
|
33467
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RoutingBuilderService, decorators: [{
|
|
33468
|
+
type: Injectable,
|
|
33469
|
+
args: [{
|
|
33470
|
+
providedIn: 'root'
|
|
33471
|
+
}]
|
|
33472
|
+
}], ctorParameters: function () { return [{ type: i2$3.Router }, { type: ConfigurationService }, { type: ViewService }, { type: LoggerService }, { type: DynamicNavigationRouteProviderService }, { type: i0.Type, decorators: [{
|
|
33473
|
+
type: Optional
|
|
33474
|
+
}, {
|
|
33475
|
+
type: Inject,
|
|
33476
|
+
args: [NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT]
|
|
33477
|
+
}] }]; } });
|
|
33240
33478
|
|
|
33241
33479
|
/* SERVICES */
|
|
33242
33480
|
|
|
@@ -34595,174 +34833,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
34595
34833
|
type: Input
|
|
34596
34834
|
}] } });
|
|
34597
34835
|
|
|
34598
|
-
class BaseAllowedNetsService {
|
|
34599
|
-
constructor() {
|
|
34600
|
-
this._baseAllowedNets = new BehaviorSubject([]);
|
|
34601
|
-
}
|
|
34602
|
-
ngOnDestroy() {
|
|
34603
|
-
this._baseAllowedNets.complete();
|
|
34604
|
-
if (this._sub !== undefined) {
|
|
34605
|
-
this._sub.unsubscribe();
|
|
34606
|
-
}
|
|
34607
|
-
}
|
|
34608
|
-
/**
|
|
34609
|
-
* Sets the new identifiers of the base allowed nets
|
|
34610
|
-
* @param nets new base net identifiers
|
|
34611
|
-
*/
|
|
34612
|
-
set allowedNets(nets) {
|
|
34613
|
-
this._baseAllowedNets.next(nets);
|
|
34614
|
-
}
|
|
34615
|
-
/**
|
|
34616
|
-
* @deprecated This method should not be used. Use {@link BaseAllowedNetsService#allowedNets$} instead
|
|
34617
|
-
* @returns the currently set allowed nets. Returns an empty array if no value was set.
|
|
34618
|
-
*/
|
|
34619
|
-
get allowedNets() {
|
|
34620
|
-
return this._baseAllowedNets.value;
|
|
34621
|
-
}
|
|
34622
|
-
/**
|
|
34623
|
-
* Subscribes to the provided `Observable` and forwards the emissions to the baseAllowedNets `Subject`.
|
|
34624
|
-
* If a new `Observable` is set, the previous Subscription is unsubscribed.
|
|
34625
|
-
* @param observableNets an observable emitting the new base net identifiers
|
|
34626
|
-
*/
|
|
34627
|
-
set allowedNets$(observableNets) {
|
|
34628
|
-
if (this._sub !== undefined) {
|
|
34629
|
-
this._sub.unsubscribe();
|
|
34630
|
-
}
|
|
34631
|
-
this._sub = observableNets.subscribe(nets => {
|
|
34632
|
-
this._baseAllowedNets.next(nets);
|
|
34633
|
-
});
|
|
34634
|
-
}
|
|
34635
|
-
/**
|
|
34636
|
-
* @returns an observable that emits the currently set base allowed nets and any subsequent values
|
|
34637
|
-
*/
|
|
34638
|
-
get allowedNets$() {
|
|
34639
|
-
return this._baseAllowedNets.asObservable();
|
|
34640
|
-
}
|
|
34641
|
-
}
|
|
34642
|
-
BaseAllowedNetsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseAllowedNetsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
34643
|
-
BaseAllowedNetsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseAllowedNetsService, providedIn: 'root' });
|
|
34644
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseAllowedNetsService, decorators: [{
|
|
34645
|
-
type: Injectable,
|
|
34646
|
-
args: [{
|
|
34647
|
-
providedIn: 'root'
|
|
34648
|
-
}]
|
|
34649
|
-
}], ctorParameters: function () { return []; } });
|
|
34650
|
-
|
|
34651
|
-
function addAllowedNets(allowedNets, existingAllowedNets) {
|
|
34652
|
-
if (!!allowedNets && allowedNets.length > 0) {
|
|
34653
|
-
existingAllowedNets.next([...allowedNets]);
|
|
34654
|
-
}
|
|
34655
|
-
}
|
|
34656
|
-
/**
|
|
34657
|
-
* Convenience method that can be used as an allowed nets factory for tabbed task views.
|
|
34658
|
-
* If no allowed nets are provided in the injected data then an {@link AllowedNetsService} with no allowed nets is created.
|
|
34659
|
-
* It has a dependency on this class and {@link NAE_TAB_DATA} injection token.
|
|
34660
|
-
*/
|
|
34661
|
-
function tabbedAllowedNetsServiceFactory(factory, tabData) {
|
|
34662
|
-
return factory.createFromArray(tabData?.allowedNets ?? []);
|
|
34663
|
-
}
|
|
34664
|
-
/**
|
|
34665
|
-
* Convenience method that can be used as an allowed nets factory for views that are loaded from filter process instances.
|
|
34666
|
-
* It has a dependency on this class and {@link NAE_NAVIGATION_ITEM_TASK_DATA} injection token.
|
|
34667
|
-
*/
|
|
34668
|
-
function navigationItemTaskAllowedNetsServiceFactory(factory, baseAllowedNets, navigationItemTaskData) {
|
|
34669
|
-
const filterField = getFieldFromDataGroups(navigationItemTaskData, UserFilterConstants.FILTER_FIELD_ID);
|
|
34670
|
-
const allowedNetsField = getFieldFromDataGroups(navigationItemTaskData, UserFilterConstants.ALLOWED_NETS_FIELD_ID);
|
|
34671
|
-
if (filterField === undefined) {
|
|
34672
|
-
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!`);
|
|
34673
|
-
}
|
|
34674
|
-
const nets = new BehaviorSubject(Array.from(new Set([...filterField.allowedNets])));
|
|
34675
|
-
if (filterField.filterMetadata.inheritAllowedNets) {
|
|
34676
|
-
baseAllowedNets.allowedNets$.subscribe(allowedNets => {
|
|
34677
|
-
const netSet = new Set(allowedNets);
|
|
34678
|
-
nets.next(Array.from(netSet));
|
|
34679
|
-
});
|
|
34680
|
-
}
|
|
34681
|
-
if (!!allowedNetsField) {
|
|
34682
|
-
addAllowedNets(allowedNetsField.value, nets);
|
|
34683
|
-
allowedNetsField.valueChanges().subscribe(allowedNets => {
|
|
34684
|
-
addAllowedNets(allowedNetsField.value, nets);
|
|
34685
|
-
});
|
|
34686
|
-
}
|
|
34687
|
-
return factory.createFromObservable(nets.asObservable());
|
|
34688
|
-
}
|
|
34689
|
-
/**
|
|
34690
|
-
* Simplifies the creation of {@link AllowedNetsService} instances
|
|
34691
|
-
*/
|
|
34692
|
-
class AllowedNetsServiceFactory {
|
|
34693
|
-
constructor(_processService, _petriNetResource, _configService, _log) {
|
|
34694
|
-
this._processService = _processService;
|
|
34695
|
-
this._petriNetResource = _petriNetResource;
|
|
34696
|
-
this._configService = _configService;
|
|
34697
|
-
this._log = _log;
|
|
34698
|
-
}
|
|
34699
|
-
/**
|
|
34700
|
-
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
34701
|
-
* @returns an instance of {@link AllowedNetsService} with all nets set as the `allowedNets`
|
|
34702
|
-
*/
|
|
34703
|
-
createWithAllNets() {
|
|
34704
|
-
return new AllowedNetsService(this._petriNetResource.getAll().pipe(switchMap(nets => {
|
|
34705
|
-
if (nets && Array.isArray(nets)) {
|
|
34706
|
-
return of(nets.map(n => n.identifier));
|
|
34707
|
-
}
|
|
34708
|
-
else {
|
|
34709
|
-
return of([]);
|
|
34710
|
-
}
|
|
34711
|
-
})), this._processService);
|
|
34712
|
-
}
|
|
34713
|
-
/**
|
|
34714
|
-
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
34715
|
-
* @param allowedNetsIdentifiers identifiers of the allowed nets
|
|
34716
|
-
*/
|
|
34717
|
-
createFromArray(allowedNetsIdentifiers) {
|
|
34718
|
-
return new AllowedNetsService(of(allowedNetsIdentifiers), this._processService);
|
|
34719
|
-
}
|
|
34720
|
-
/**
|
|
34721
|
-
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
34722
|
-
* @param webViewPath path to the view as specified in its configuration. No leading backslash.
|
|
34723
|
-
* Allowed nets are loaded from the configuration of the view.
|
|
34724
|
-
*/
|
|
34725
|
-
createFromConfig(webViewPath) {
|
|
34726
|
-
const view = this._configService.getViewByPath(webViewPath);
|
|
34727
|
-
if (view?.layout?.params === undefined) {
|
|
34728
|
-
throw new Error(`Can't load configuration for view with webPath: '${webViewPath}'`);
|
|
34729
|
-
}
|
|
34730
|
-
const viewParams = view.layout.params;
|
|
34731
|
-
if (viewParams.allowedNets === undefined) {
|
|
34732
|
-
this._log.warn(`No 'allowedNets' provided for view with webPath '${webViewPath}'`);
|
|
34733
|
-
}
|
|
34734
|
-
return new AllowedNetsService(of(viewParams.allowedNets ?? []), this._processService);
|
|
34735
|
-
}
|
|
34736
|
-
/**
|
|
34737
|
-
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
34738
|
-
* @param netIdentifiers$ observable containing the identifiers of the allowed nets.
|
|
34739
|
-
* When a new value is emitted the allowed nets will be updated.
|
|
34740
|
-
*/
|
|
34741
|
-
createFromObservable(netIdentifiers$) {
|
|
34742
|
-
return new AllowedNetsService(netIdentifiers$, this._processService);
|
|
34743
|
-
}
|
|
34744
|
-
/**
|
|
34745
|
-
* Creates an instance of {@link AllowedNetsService} without having to provide all the dependencies yourself.
|
|
34746
|
-
* @param filterCase a filter process instance
|
|
34747
|
-
* Allowed nets are set from filter process immediate data
|
|
34748
|
-
*/
|
|
34749
|
-
createFromFilterCase(filterCase) {
|
|
34750
|
-
const filterData = getImmediateData(filterCase, UserFilterConstants.FILTER_FIELD_ID);
|
|
34751
|
-
if (filterData === undefined) {
|
|
34752
|
-
throw new Error(`Cannot get filter from case '${filterCase.title}' with id '${filterCase.stringId}'`);
|
|
34753
|
-
}
|
|
34754
|
-
return new AllowedNetsService(of(filterData.allowedNets), this._processService);
|
|
34755
|
-
}
|
|
34756
|
-
}
|
|
34757
|
-
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 });
|
|
34758
|
-
AllowedNetsServiceFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AllowedNetsServiceFactory, providedIn: 'root' });
|
|
34759
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AllowedNetsServiceFactory, decorators: [{
|
|
34760
|
-
type: Injectable,
|
|
34761
|
-
args: [{
|
|
34762
|
-
providedIn: 'root'
|
|
34763
|
-
}]
|
|
34764
|
-
}], ctorParameters: function () { return [{ type: ProcessService }, { type: PetriNetResourceService }, { type: ConfigurationService }, { type: LoggerService }]; } });
|
|
34765
|
-
|
|
34766
34836
|
/* SERVICES */
|
|
34767
34837
|
|
|
34768
34838
|
/* EVENT OUTCOMES */
|
|
@@ -34808,5 +34878,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
34808
34878
|
* Generated bundle index. Do not edit.
|
|
34809
34879
|
*/
|
|
34810
34880
|
|
|
34811
|
-
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 };
|
|
34881
|
+
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 };
|
|
34812
34882
|
//# sourceMappingURL=netgrif-components-core.mjs.map
|