@netgrif/components-core 7.0.0-beta.1 → 7.0.0-beta.2

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.
Files changed (29) hide show
  1. package/esm2022/assets/i18n/de.json +1 -0
  2. package/esm2022/assets/i18n/en.json +1 -0
  3. package/esm2022/assets/i18n/sk.json +1 -0
  4. package/esm2022/lib/data-fields/enumeration-field/enumeration-caseref-field/abstract-enumeration-caseref-field.component.mjs +3 -3
  5. package/esm2022/lib/data-fields/file-field/file-default-field/abstract-file-default-field.component.mjs +2 -2
  6. package/esm2022/lib/data-fields/file-list-field/file-list-default-field/abstract-file-list-default-field.component.mjs +2 -2
  7. package/esm2022/lib/data-fields/models/abstract-file-field-default-component.mjs +9 -1
  8. package/esm2022/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.mjs +4 -4
  9. package/esm2022/lib/navigation/model/uri-resource.mjs +1 -1
  10. package/esm2022/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +11 -11
  11. package/esm2022/lib/navigation/service/uri.service.mjs +10 -10
  12. package/esm2022/lib/resources/engine-endpoint/public/public-task-resource.service.mjs +2 -2
  13. package/esm2022/lib/side-menu/content-components/import-net/abstract-import-net.component.mjs +2 -2
  14. package/esm2022/lib/task-content/services/task-content.service.mjs +14 -48
  15. package/esm2022/lib/user/services/user.service.mjs +11 -4
  16. package/esm2022/lib/view/case-view/components/case-list-paginator/abstract-case-list-paginator.component.mjs +3 -1
  17. package/esm2022/lib/view/case-view/service/case-view-service.mjs +23 -2
  18. package/fesm2022/netgrif-components-core.mjs +86 -79
  19. package/fesm2022/netgrif-components-core.mjs.map +1 -1
  20. package/lib/data-fields/enumeration-field/enumeration-caseref-field/abstract-enumeration-caseref-field.component.d.ts +1 -1
  21. package/lib/data-fields/models/abstract-file-field-default-component.d.ts +1 -0
  22. package/lib/navigation/model/uri-resource.d.ts +1 -2
  23. package/lib/task-content/services/task-content.service.d.ts +2 -4
  24. package/lib/user/services/user.service.d.ts +3 -1
  25. package/lib/view/case-view/service/case-view-service.d.ts +2 -0
  26. package/package.json +1 -1
  27. package/src/assets/i18n/de.json +1 -0
  28. package/src/assets/i18n/en.json +1 -0
  29. package/src/assets/i18n/sk.json +1 -0
@@ -1300,6 +1300,7 @@ var en = {
1300
1300
  noNets: "No allowed Nets",
1301
1301
  createCase: "Successful create new case",
1302
1302
  defaultCaseName: "with default case name",
1303
+ errorCreate: "Error while creating case ",
1303
1304
  createCaseError: "A new case was created, but an error occurred while executing actions"
1304
1305
  },
1305
1306
  user: {
@@ -1837,6 +1838,7 @@ var sk = {
1837
1838
  noNets: "Žiadne povolené siete",
1838
1839
  createCase: "Úspešne vytvorený nový prípad",
1839
1840
  defaultCaseName: "s prednastaveným názvom prípadu",
1841
+ errorCreate: "Chyba pri vytváraní prípadu ",
1840
1842
  createCaseError: "Nový prípad vytvorený, nastala však chyba pri vykonávaní akcií"
1841
1843
  },
1842
1844
  user: {
@@ -2374,6 +2376,7 @@ var de = {
2374
2376
  noNets: "Es gibt keine erlaubte Netze",
2375
2377
  createCase: "Neuen Fall würde erfolgreich erzeugt",
2376
2378
  defaultCaseName: "mit einem Standardfallnamen",
2379
+ errorCreate: "Fehler beim Erstellen des Falles ",
2377
2380
  createCaseError: "Neuer Fall wurde erstellt, aber beim Ausführen von Aktionen ist ein Fehler aufgetreten"
2378
2381
  },
2379
2382
  user: {
@@ -3317,6 +3320,7 @@ class UserService {
3317
3320
  _subAuth;
3318
3321
  _subAnonym;
3319
3322
  _publicLoadCalled;
3323
+ GLOBAL_ROLE_PREFIX = 'global_';
3320
3324
  constructor(_authService, _userResource, _userTransform, _log, _session, _anonymousService) {
3321
3325
  this._authService = _authService;
3322
3326
  this._userResource = _userResource;
@@ -3404,16 +3408,22 @@ class UserService {
3404
3408
  return user.roles.some(r => r.stringId === roleStringId);
3405
3409
  }
3406
3410
  /**
3407
- * Checks whether the user has role with the specified identifier in a process with the specified identifier (any version)
3411
+ * Checks whether the user has a role with the specified identifier in a process with the specified identifier (any version),
3412
+ * or if the role is global (with prefix 'global_').
3408
3413
  * @param roleIdentifier identifier (import ID) of the role we want to check
3409
3414
  * @param netIdentifier identifier (import ID) of the process the role is defined in
3410
3415
  */
3411
3416
  hasRoleByIdentifier(roleIdentifier, netIdentifier) {
3412
3417
  const user = this._user.getSelfOrImpersonated();
3413
- if (!roleIdentifier || !netIdentifier || !user.roles) {
3418
+ if (!roleIdentifier || !user.roles) {
3414
3419
  return false;
3415
3420
  }
3416
- return user.roles.some(r => r.netImportId === netIdentifier && r.importId === roleIdentifier);
3421
+ return user.roles.some(r => {
3422
+ const matchesRole = r.importId === roleIdentifier;
3423
+ const isGlobalRole = r.importId.startsWith(this.GLOBAL_ROLE_PREFIX);
3424
+ const matchesNet = r.netImportId === netIdentifier;
3425
+ return matchesRole && (isGlobalRole || matchesNet);
3426
+ });
3417
3427
  }
3418
3428
  /**
3419
3429
  * Checks whether the user has role with the specified name in a process with the specified identifier (any version)
@@ -6462,12 +6472,12 @@ class AbstractEnumerationCaseRefComponent extends AbstractCaseRefBaseFieldCompon
6462
6472
  this._subComp.unsubscribe();
6463
6473
  }
6464
6474
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractEnumerationCaseRefComponent, deps: [{ token: i0.Injector }, { token: i0.Type }, { token: DATA_FIELD_PORTAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
6465
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AbstractEnumerationCaseRefComponent, selector: "ncc-abstract-case-ref-default", usesInheritance: true, ngImport: i0, template: '', isInline: true });
6475
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AbstractEnumerationCaseRefComponent, selector: "ncc-abstract-enumeration-case-ref-default", usesInheritance: true, ngImport: i0, template: '', isInline: true });
6466
6476
  }
6467
6477
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractEnumerationCaseRefComponent, decorators: [{
6468
6478
  type: Component,
6469
6479
  args: [{
6470
- selector: 'ncc-abstract-case-ref-default',
6480
+ selector: 'ncc-abstract-enumeration-case-ref-default',
6471
6481
  template: ''
6472
6482
  }]
6473
6483
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.Type }, { type: undefined, decorators: [{
@@ -6693,6 +6703,14 @@ class AbstractFileFieldDefaultComponent extends AbstractBaseDataFieldComponent {
6693
6703
  resolveParentTaskId() {
6694
6704
  return !!this.dataField.parentTaskId ? this.dataField.parentTaskId : this.taskId;
6695
6705
  }
6706
+ resolveMaxSizeMessage() {
6707
+ if (this.dataField?.component?.properties?.maxSizeMessage) {
6708
+ this._snackbar.openErrorSnackBar(this._translate.instant(this.dataField?.component?.properties?.maxSizeMessage));
6709
+ }
6710
+ else {
6711
+ this._snackbar.openErrorSnackBar(this._translate.instant('dataField.snackBar.maxFilesSizeExceeded') + this.dataField.maxUploadSizeInBytes * 0.000001 + 'MB');
6712
+ }
6713
+ }
6696
6714
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractFileFieldDefaultComponent, deps: [{ token: LoggerService }, { token: SnackBarService }, { token: i1$2.TranslateService }, { token: DATA_FIELD_PORTAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
6697
6715
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AbstractFileFieldDefaultComponent, selector: "ncc-abstract-file-field-default-component", inputs: { taskId: "taskId" }, viewQueries: [{ propertyName: "fileUploadEl", first: true, predicate: ["fileUploadInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });
6698
6716
  }
@@ -8341,7 +8359,7 @@ class AbstractFileDefaultFieldComponent extends AbstractFileFieldDefaultComponen
8341
8359
  if (this.dataField.maxUploadSizeInBytes &&
8342
8360
  this.dataField.maxUploadSizeInBytes < this.fileUploadEl.nativeElement.files.item(0).size) {
8343
8361
  this._log.error('File cannot be uploaded. Maximum size of file exceeded.');
8344
- this._snackbar.openErrorSnackBar(this._translate.instant('dataField.snackBar.maxFilesSizeExceeded') + this.dataField.maxUploadSizeInBytes);
8362
+ this.resolveMaxSizeMessage();
8345
8363
  this.fileUploadEl.nativeElement.value = '';
8346
8364
  return;
8347
8365
  }
@@ -8774,7 +8792,7 @@ class AbstractFileListDefaultFieldComponent extends AbstractFileFieldDefaultComp
8774
8792
  if (this.dataField.maxUploadSizeInBytes &&
8775
8793
  this.dataField.maxUploadSizeInBytes < sum) {
8776
8794
  this._log.error('Files cannot be uploaded. Maximum size of files exceeded.');
8777
- this._snackbar.openErrorSnackBar(this._translate.instant('dataField.snackBar.maxFilesSizeExceeded') + this.dataField.maxUploadSizeInBytes);
8795
+ this.resolveMaxSizeMessage();
8778
8796
  this.fileUploadEl.nativeElement.value = '';
8779
8797
  return;
8780
8798
  }
@@ -16222,19 +16240,18 @@ class TaskContentService {
16222
16240
  if (!this._task || !this._task.dataGroups) {
16223
16241
  return;
16224
16242
  }
16225
- // todo actions owner zbytočný?
16226
16243
  const frontendActions = chFields.taskId === this.task.stringId && chFields[TaskContentService.FRONTEND_ACTIONS_KEY];
16227
16244
  Object.keys(chFields).forEach(changedField => {
16228
- if (this.isFieldInTask(chFields.taskId, changedField)) {
16245
+ if (chFields.taskId === this._task.stringId && this.isFieldInTask(chFields.taskId, changedField)) {
16229
16246
  this.updateField(chFields, this.taskFieldsIndex[chFields.taskId].fields[changedField], frontendActions);
16230
16247
  }
16231
- else if (!!this.getReferencedTaskId(changedField)) {
16232
- this.updateReferencedField(chFields, this.taskFieldsIndex[this.getReferencedTaskId(changedField)].fields[changedField], frontendActions);
16248
+ else if (!!this.getReferencedTaskId(changedField, chFields)) {
16249
+ this.updateField(chFields, this.taskFieldsIndex[this.getReferencedTaskId(changedField, chFields)].fields[changedField], frontendActions, true);
16233
16250
  }
16234
16251
  });
16235
16252
  this.$shouldCreate.next(this._task.dataGroups);
16236
16253
  }
16237
- updateField(chFields, field, frontendActions) {
16254
+ updateField(chFields, field, frontendActions, referenced = false) {
16238
16255
  if (this._fieldConverterService.resolveType(field) === FieldTypeResource.TASK_REF) {
16239
16256
  this._taskDataReloadRequest$.next(frontendActions ? frontendActions : undefined);
16240
16257
  return;
@@ -16249,15 +16266,15 @@ class TaskContentService {
16249
16266
  field.valueWithoutChange(this._fieldConverterService.formatValueFromBackend(field, updatedField[key]));
16250
16267
  break;
16251
16268
  case 'behavior':
16252
- if (updatedField.behavior[this._task.transitionId]) {
16253
- // TODO NGSD-489 fix behavior resolution
16269
+ if (!referenced && updatedField.behavior[this._task.transitionId]) {
16254
16270
  field.behavior = updatedField.behavior[this._task.transitionId];
16255
16271
  }
16256
- else {
16257
- const transitionId = this.getReferencedTransitionId(field.stringId);
16272
+ else if (referenced) {
16273
+ const taskId = this.getReferencedTaskId(field.stringId, chFields);
16274
+ const taskRef = this.findTaskRefId(taskId, this.taskFieldsIndex[this._task.stringId].fields);
16275
+ const transitionId = this.taskFieldsIndex[taskId].transitionId;
16258
16276
  if (!!transitionId && transitionId !== '' && updatedField.behavior[transitionId])
16259
- field.behavior = updatedField.behavior[transitionId];
16260
- break;
16277
+ field.behavior = taskRef.behavior.editable ? updatedField.behavior[transitionId] : taskRef.behavior;
16261
16278
  }
16262
16279
  break;
16263
16280
  case 'choices':
@@ -16295,49 +16312,16 @@ class TaskContentService {
16295
16312
  field.update();
16296
16313
  });
16297
16314
  }
16298
- updateReferencedField(chFields, field, frontendActions) {
16299
- if (this._fieldConverterService.resolveType(field) === FieldTypeResource.TASK_REF) {
16300
- this._taskDataReloadRequest$.next(frontendActions ? frontendActions : undefined);
16301
- return;
16302
- }
16303
- const updatedField = chFields[field.stringId];
16304
- Object.keys(updatedField).forEach(key => {
16305
- switch (key) {
16306
- case 'behavior': {
16307
- const taskId = this.getReferencedTaskId(field.stringId);
16308
- const taskRef = this.findTaskRefId(taskId, this.taskFieldsIndex[this._task.stringId].fields);
16309
- const transitionId = this.taskFieldsIndex[taskId].transitionId;
16310
- if (!!transitionId && transitionId !== '' && updatedField.behavior[transitionId])
16311
- field.behavior = taskRef.behavior.editable ? updatedField.behavior[transitionId] : taskRef.behavior;
16312
- break;
16313
- }
16314
- case 'value':
16315
- field.valueWithoutChange(this._fieldConverterService.formatValueFromBackend(field, updatedField[key]));
16316
- break;
16317
- default:
16318
- field[key] = updatedField[key];
16319
- }
16320
- field.update();
16321
- });
16322
- }
16323
16315
  isFieldInTask(taskId, changedField) {
16324
16316
  return !!taskId
16325
16317
  && !!this.taskFieldsIndex[taskId]
16326
16318
  && !!this.taskFieldsIndex[taskId].fields
16327
16319
  && !!this.taskFieldsIndex[taskId].fields[changedField];
16328
16320
  }
16329
- getReferencedTaskId(changedField) {
16321
+ getReferencedTaskId(changedField, chFields) {
16330
16322
  return !!this.taskFieldsIndex ?
16331
- Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && Object.keys(this.taskFieldsIndex[taskId].fields).includes(changedField)) : undefined;
16332
- }
16333
- getReferencedTransitionId(changedField) {
16334
- if (!!this.taskFieldsIndex) {
16335
- const taskFieldsIndexId = this.getReferencedTaskId(changedField);
16336
- if (!!this.taskFieldsIndex[taskFieldsIndexId]) {
16337
- return this.taskFieldsIndex[taskFieldsIndexId].transitionId;
16338
- }
16339
- }
16340
- return undefined;
16323
+ (Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && taskId === chFields.taskId && Object.keys(this.taskFieldsIndex[taskId].fields).includes(changedField))
16324
+ || Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && Object.keys(this.taskFieldsIndex[taskId].fields).includes(changedField))) : undefined;
16341
16325
  }
16342
16326
  findTaskRefId(taskId, fields) {
16343
16327
  let taskRefId = Object.values(fields).find(f => f instanceof TaskRefField && f.value.includes(taskId));
@@ -19645,6 +19629,7 @@ class CaseViewService extends AbstractSortableViewComponent {
19645
19629
  _endOfData;
19646
19630
  _pagination;
19647
19631
  _newCaseConfiguration;
19632
+ _paginationView = false;
19648
19633
  constructor(_allowedNetsService, _dialog, _caseResourceService, _log, _snackBarService, _searchService, _translate, _user, _processService, resolver, _newCaseComponent, newCaseConfig, _permissionService) {
19649
19634
  super(resolver);
19650
19635
  this._allowedNetsService = _allowedNetsService;
@@ -19691,6 +19676,9 @@ class CaseViewService extends AbstractSortableViewComponent {
19691
19676
  this._loading$.off(pageLoadResult.requestContext.filter);
19692
19677
  }
19693
19678
  Object.assign(this._pagination, pageLoadResult.requestContext.pagination);
19679
+ if (this._paginationView) {
19680
+ return pageLoadResult.cases;
19681
+ }
19694
19682
  return { ...acc, ...pageLoadResult.cases };
19695
19683
  }, {}));
19696
19684
  this._cases$ = casesMap.pipe(map(v => Object.values(v)));
@@ -19715,6 +19703,9 @@ class CaseViewService extends AbstractSortableViewComponent {
19715
19703
  get activeFilter() {
19716
19704
  return this._searchService.activeFilter;
19717
19705
  }
19706
+ set paginationView(value) {
19707
+ this._paginationView = value;
19708
+ }
19718
19709
  loadPage(requestContext) {
19719
19710
  if (requestContext === null || requestContext.pageNumber < 0) {
19720
19711
  return of({ cases: {}, requestContext });
@@ -19803,6 +19794,12 @@ class CaseViewService extends AbstractSortableViewComponent {
19803
19794
  }) {
19804
19795
  const myCase = new Subject();
19805
19796
  this.getNewCaseAllowedNets(newCaseCreationConfiguration.blockNets).subscribe((nets) => {
19797
+ if (!nets || nets.length === 0) {
19798
+ const errorMessage = this._translate.instant('side-menu.new-case.noNets');
19799
+ this._snackBarService.openErrorSnackBar(errorMessage);
19800
+ this._log.error('No nets available for case creation. Ensure the allowed nets configuration is correct.');
19801
+ return;
19802
+ }
19806
19803
  this._caseResourceService.createCase({
19807
19804
  title: null,
19808
19805
  color: 'panel-primary-icon',
@@ -19813,7 +19810,15 @@ class CaseViewService extends AbstractSortableViewComponent {
19813
19810
  this.reload();
19814
19811
  myCase.next(response.outcome.aCase);
19815
19812
  myCase.complete();
19816
- }, error => this._snackBarService.openErrorSnackBar(error.message ? error.message : error));
19813
+ }, error => {
19814
+ const errorMessage = error.message ? error.message : this._translate.instant('side-menu.new-case.createCaseError');
19815
+ this._snackBarService.openErrorSnackBar(errorMessage);
19816
+ this._log.error('Error occurred during case creation: ' + errorMessage);
19817
+ });
19818
+ }, error => {
19819
+ const errorMessage = error.message || this._translate.instant('side-menu.new-case.errorCreate');
19820
+ this._log.error('Failed to fetch allowed nets. Error: ' + errorMessage);
19821
+ this._snackBarService.openErrorSnackBar(errorMessage);
19817
19822
  });
19818
19823
  return myCase;
19819
19824
  }
@@ -24208,14 +24213,14 @@ class UriService {
24208
24213
  return this._rootLoading$;
24209
24214
  }
24210
24215
  isRoot(node) {
24211
- return node.id === this._rootNode.id && node.uriPath === this._rootNode.uriPath;
24216
+ return node.path === this._rootNode.path;
24212
24217
  }
24213
24218
  get activeNode() {
24214
24219
  return this._activeNode$.getValue();
24215
24220
  }
24216
24221
  set activeNode(node) {
24217
24222
  if (node.parentId && !node.parent) {
24218
- if (node.parentId === this._rootNode.id) {
24223
+ if (node.parentId === this._rootNode.path) {
24219
24224
  node.parent = this._rootNode;
24220
24225
  }
24221
24226
  else {
@@ -24274,7 +24279,7 @@ class UriService {
24274
24279
  getChildNodes(node) {
24275
24280
  if (!node)
24276
24281
  node = this.activeNode;
24277
- return this._resourceService.getNodesByParent(node.id).pipe(map(nodes => {
24282
+ return this._resourceService.getNodesByParent(node.path).pipe(map(nodes => {
24278
24283
  this.capitalizeNames(nodes);
24279
24284
  return nodes;
24280
24285
  }));
@@ -24290,7 +24295,7 @@ class UriService {
24290
24295
  if (!node)
24291
24296
  node = this.activeNode;
24292
24297
  const searchBody = {
24293
- uriNodeId: node.id,
24298
+ uriNodeId: node.path,
24294
24299
  };
24295
24300
  if (!!processIdentifiers) {
24296
24301
  searchBody.process = processIdentifiers.map(id => ({ identifier: id }));
@@ -24316,7 +24321,7 @@ class UriService {
24316
24321
  }
24317
24322
  const searchBody = {
24318
24323
  data: {
24319
- [GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH]: node.uriPath
24324
+ [GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH]: node.path
24320
24325
  },
24321
24326
  process: { identifier: "preference_item" }
24322
24327
  };
@@ -24346,7 +24351,7 @@ class UriService {
24346
24351
  if (level === 0)
24347
24352
  return of([this.root]);
24348
24353
  return this._resourceService.getByLevel(level).pipe(map(nodes => {
24349
- const ns = !!parent?.id ? nodes.filter(n => n.parentId === parent.id) : nodes;
24354
+ const ns = !!parent?.path ? nodes.filter(n => n.parentId === parent.path) : nodes;
24350
24355
  this.capitalizeNames(ns);
24351
24356
  return ns;
24352
24357
  }));
@@ -24354,13 +24359,13 @@ class UriService {
24354
24359
  resolveParentPath(node) {
24355
24360
  if (!node)
24356
24361
  node = this.activeNode;
24357
- const lastDelimiter = node.uriPath.lastIndexOf('/');
24362
+ const lastDelimiter = node.path.lastIndexOf('/');
24358
24363
  if (lastDelimiter === 0)
24359
24364
  return '/';
24360
- return node.uriPath.substring(0, lastDelimiter);
24365
+ return node.path.substring(0, lastDelimiter);
24361
24366
  }
24362
24367
  splitNodePath(node) {
24363
- return node?.uriPath.split('/').filter(s => s !== UriService.ROOT);
24368
+ return node?.path.split('/').filter(s => s !== UriService.ROOT);
24364
24369
  }
24365
24370
  capitalizeNames(nodes) {
24366
24371
  if (!(nodes instanceof Array))
@@ -24497,7 +24502,7 @@ class AbstractImportNetComponent {
24497
24502
  uploadFile(file) {
24498
24503
  const fileFormData = new FormData();
24499
24504
  fileFormData.append('file', file.data);
24500
- fileFormData.append('uriNodeId', this._uriService.activeNode.id);
24505
+ fileFormData.append('uriNodeId', this._uriService.activeNode.path);
24501
24506
  fileFormData.append('meta', this.releaseTypeControl.value.toString().toUpperCase());
24502
24507
  file.inProgress = true;
24503
24508
  file.completed = false;
@@ -28092,7 +28097,7 @@ class PublicTaskResourceService extends TaskResourceService {
28092
28097
  * GET
28093
28098
  */
28094
28099
  downloadFile(taskId, params) {
28095
- const url = `task/${taskId}/file${params?.has("fileName") ? '/named' : ''}`;
28100
+ const url = `public/task/${taskId}/file${params?.has("fileName") ? '/named' : ''}`;
28096
28101
  return this._resourceProvider.getBlob$(url, this.SERVER_URL, params).pipe(map(event => {
28097
28102
  switch (event.type) {
28098
28103
  case HttpEventType.DownloadProgress:
@@ -29718,7 +29723,7 @@ class AbstractNavigationDoubleDrawerComponent {
29718
29723
  return;
29719
29724
  }
29720
29725
  if (node.parentId && !node.parent) {
29721
- if (node.parentId === this._uriService.root.id) {
29726
+ if (this._uriService.isRoot(node)) {
29722
29727
  node.parent = this._uriService.root;
29723
29728
  }
29724
29729
  else {
@@ -29747,7 +29752,7 @@ class AbstractNavigationDoubleDrawerComponent {
29747
29752
  this.loadRightSide();
29748
29753
  }
29749
29754
  else {
29750
- if (!this.leftItems.find(item => item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.uriPath)) {
29755
+ if (!this.leftItems.find(item => item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.path)) {
29751
29756
  this.loadLeftSide();
29752
29757
  }
29753
29758
  this.loadRightSide();
@@ -29852,7 +29857,7 @@ class AbstractNavigationDoubleDrawerComponent {
29852
29857
  onItemClick(item) {
29853
29858
  if (item.resource === undefined) {
29854
29859
  // custom view represented only in nae.json
29855
- if (item.processUri === this.currentNode.uriPath) {
29860
+ if (item.processUri === this.currentNode.path) {
29856
29861
  this._uriService.activeNode = this._currentNode;
29857
29862
  }
29858
29863
  else {
@@ -29868,7 +29873,7 @@ class AbstractNavigationDoubleDrawerComponent {
29868
29873
  this._log.error(error);
29869
29874
  });
29870
29875
  }
29871
- else if (!path.includes(this.currentNode.uriPath)) {
29876
+ else if (!path.includes(this.currentNode.path)) {
29872
29877
  this._uriService.activeNode = this._currentNode.parent;
29873
29878
  }
29874
29879
  else {
@@ -29880,7 +29885,7 @@ class AbstractNavigationDoubleDrawerComponent {
29880
29885
  return item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_HAS_CHILDREN)?.value;
29881
29886
  }
29882
29887
  isItemAndNodeEqual(item, node) {
29883
- return item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.uriPath;
29888
+ return item.resource?.immediateData.find(f => f.stringId === GroupNavigationConstants.ITEM_FIELD_ID_NODE_PATH)?.value === node.path;
29884
29889
  }
29885
29890
  loadLeftSide() {
29886
29891
  if (this._uriService.isRoot(this._currentNode)) {
@@ -29998,13 +30003,13 @@ class AbstractNavigationDoubleDrawerComponent {
29998
30003
  this.leftItems.sort((a, b) => multiplier * a?.navigation?.title.localeCompare(b?.navigation?.title));
29999
30004
  }
30000
30005
  resolveCustomViewsInRightSide() {
30001
- if (!!this._childCustomViews[this._currentNode.uriPath]) {
30002
- this.rightItems.push(...Object.values(this._childCustomViews[this._currentNode.uriPath]));
30006
+ if (!!this._childCustomViews[this._currentNode.path]) {
30007
+ this.rightItems.push(...Object.values(this._childCustomViews[this._currentNode.path]));
30003
30008
  }
30004
30009
  }
30005
30010
  resolveCustomViewsInLeftSide() {
30006
- if (!!this._childCustomViews[this._currentNode.parent.uriPath]) {
30007
- this.leftItems.push(...Object.values(this._childCustomViews[this._currentNode.parent.uriPath]));
30011
+ if (!!this._childCustomViews[this._currentNode.parent.path]) {
30012
+ this.leftItems.push(...Object.values(this._childCustomViews[this._currentNode.parent.path]));
30008
30013
  }
30009
30014
  }
30010
30015
  resolveItemCaseToNavigationItem(itemCase) {
@@ -30074,7 +30079,7 @@ class AbstractNavigationDoubleDrawerComponent {
30074
30079
  return this.rightItems === undefined || this.rightItems.length === 0;
30075
30080
  }
30076
30081
  uriNodeTrackBy(index, node) {
30077
- return node.id;
30082
+ return node.path;
30078
30083
  }
30079
30084
  itemsTrackBy(index, item) {
30080
30085
  return item.id;
@@ -30381,7 +30386,7 @@ class AbstractBreadcrumbsComponent {
30381
30386
  this.nicePathSubscription = this.nicePath.subscribe(np => {
30382
30387
  if (!!np) {
30383
30388
  const path = np;
30384
- if (path?.length > this.partsAfterDots + 1 && this._uriService.activeNode?.uriPath.length > this.lengthOfPath && !this._showPaths) {
30389
+ if (path?.length > this.partsAfterDots + 1 && this._uriService.activeNode?.path.length > this.lengthOfPath && !this._showPaths) {
30385
30390
  const newPath = [path[0], AbstractBreadcrumbsComponent.DOTS];
30386
30391
  for (let i = path.length - this.partsAfterDots; i < path.length; i++) {
30387
30392
  newPath.push(path[i]);
@@ -30397,7 +30402,7 @@ class AbstractBreadcrumbsComponent {
30397
30402
  if (!this.redirectOnClick) {
30398
30403
  return;
30399
30404
  }
30400
- this._router.navigate(this.redirectUrls.get(this._uriService.activeNode.uriPath)).then(r => { });
30405
+ this._router.navigate(this.redirectUrls.get(this._uriService.activeNode.path)).then(r => { });
30401
30406
  }
30402
30407
  reset() {
30403
30408
  this.filterName = undefined;
@@ -30428,7 +30433,7 @@ class AbstractBreadcrumbsComponent {
30428
30433
  });
30429
30434
  }
30430
30435
  resultCounter(count, tmp) {
30431
- if (tmp?.length > this.partsAfterDots + 1 && this._uriService.activeNode?.uriPath.length > this.lengthOfPath && !this._showPaths) {
30436
+ if (tmp?.length > this.partsAfterDots + 1 && this._uriService.activeNode?.path.length > this.lengthOfPath && !this._showPaths) {
30432
30437
  return tmp.length - this.partsAfterDots + (count - 2);
30433
30438
  }
30434
30439
  return count;
@@ -32584,6 +32589,8 @@ class AbstractCaseListPaginatorComponent extends AbstractDefaultCaseListComponen
32584
32589
  this._caseViewService = _caseViewService;
32585
32590
  this._log = _log;
32586
32591
  this.route = route;
32592
+ this._caseViewService.nextPagePagination(this.pageSize, this.pageIndex);
32593
+ this._caseViewService.paginationView = true;
32587
32594
  this.cases$ = this._caseViewService.cases$.pipe(tap(() => {
32588
32595
  this.length = this._caseViewService.pagination.totalElements;
32589
32596
  this.pageIndex = this._caseViewService.pagination.number;