diff --git a/apps/red-ui/src/app/modules/archive/services/config.service.ts b/apps/red-ui/src/app/modules/archive/services/config.service.ts index 30ff32fa3..11510a593 100644 --- a/apps/red-ui/src/app/modules/archive/services/config.service.ts +++ b/apps/red-ui/src/app/modules/archive/services/config.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import { IFilterGroup, keyChecker, NestedFilter, TableColumnConfig } from '@iqser/common-ui'; import { Dossier, User } from '@red/domain'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { dossierMemberChecker, dossierTemplateChecker } from '@utils/index'; +import { dossierMemberChecker, dossierMemberQuickChecker, dossierOwnerQuickChecker, dossierTemplateChecker } from '@utils/index'; import { UserService } from '@users/user.service'; import { TranslateService } from '@ngx-translate/core'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; @@ -97,18 +97,22 @@ export class ConfigService { return filterGroups; } - _myDossiersChecker = (dw: Dossier) => dw.ownerId === this._currentUser.id; - private _quickFilters(entities: Dossier[]): NestedFilter[] { - const myDossiersLabel = this._translateService.instant('dossier-listing.quick-filters.my-dossiers'); + const userId = this._currentUser.id; return [ { - id: 'my-dossiers', - label: myDossiersLabel, - checker: this._myDossiersChecker, - disabled: entities.filter(this._myDossiersChecker).length === 0, + id: 'owner', + label: this._translateService.instant('dossier-listing.quick-filters.owner'), + checker: dossierOwnerQuickChecker(userId), + disabled: entities.filter(dossierOwnerQuickChecker(userId)).length === 0, helpModeKey: 'filter_dossier_list', }, + { + id: 'member', + label: this._translateService.instant('dossier-listing.quick-filters.member'), + checker: dossierMemberQuickChecker(userId), + disabled: entities.filter(dossierMemberQuickChecker(userId)).length === 0, + }, ].map(filter => new NestedFilter(filter)); } } diff --git a/apps/red-ui/src/app/modules/dossiers-listing/config.service.ts b/apps/red-ui/src/app/modules/dossiers-listing/config.service.ts index 3b9492258..1d096f64b 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/config.service.ts +++ b/apps/red-ui/src/app/modules/dossiers-listing/config.service.ts @@ -14,7 +14,13 @@ import { TranslateService } from '@ngx-translate/core'; import { UserPreferenceService } from '@users/user-preference.service'; import { UserService } from '@users/user.service'; import { workflowFileStatusTranslations } from '@translations/file-status-translations'; -import { dossierMemberChecker, dossierStateChecker, RedactionFilterSorter } from '../../utils'; +import { + dossierMemberChecker, + dossierMemberQuickChecker, + dossierOwnerQuickChecker, + dossierStateChecker, + RedactionFilterSorter, +} from '../../utils'; import { workloadTranslations } from '@translations/workload-translations'; import { DossierStatsService } from '@services/dossiers/dossier-stats.service'; import { DossierStatesMapService } from '@services/entity-services/dossier-states-map.service'; @@ -201,29 +207,25 @@ export class ConfigService { return filterGroups; } - private _dossierOwnerChecker = (dw: Dossier) => dw.ownerId === this._currentUser.id; - - private _dossierMemberChecker = (dw: Dossier) => - dw.memberIds.includes(this._currentUser.id) || dw.approverIds.includes(this._currentUser.id); - private _openAddDossierDialog(dossierTemplateId: string): void { this._dialogService.openDialog('addDossier', null, { dossierTemplateId }); } private _quickFilters(entities: Dossier[]): NestedFilter[] { + const userId = this._currentUser.id; return [ { id: 'owner', label: this._translateService.instant('dossier-listing.quick-filters.owner'), - checker: this._dossierOwnerChecker, - disabled: entities.filter(this._dossierOwnerChecker).length === 0, + checker: dossierOwnerQuickChecker(userId), + disabled: entities.filter(dossierOwnerQuickChecker(userId)).length === 0, helpModeKey: 'filter_dossier_list', }, { id: 'member', label: this._translateService.instant('dossier-listing.quick-filters.member'), - checker: this._dossierMemberChecker, - disabled: entities.filter(this._dossierMemberChecker).length === 0, + checker: dossierMemberQuickChecker(userId), + disabled: entities.filter(dossierMemberQuickChecker(userId)).length === 0, }, ].map(filter => new NestedFilter(filter)); } diff --git a/apps/red-ui/src/app/utils/filter-utils.ts b/apps/red-ui/src/app/utils/filter-utils.ts index a766e99c0..5d035dd7e 100644 --- a/apps/red-ui/src/app/utils/filter-utils.ts +++ b/apps/red-ui/src/app/utils/filter-utils.ts @@ -75,6 +75,10 @@ export const annotationFilterChecker = (file: File, filter: INestedFilter, curre export const dossierMemberChecker = (dw: Dossier, filter: INestedFilter) => dw.hasMember(filter.id); +export const dossierOwnerQuickChecker = (userId: string) => (dw: Dossier) => dw.ownerId === userId; + +export const dossierMemberQuickChecker = (userId: string) => (dw: Dossier) => dw.hasMember(userId); + export const dossierTemplateChecker = (dw: Dossier, filter: INestedFilter) => dw.dossierTemplateId === filter.id; export const dossierStateChecker = (dw: Dossier, filter: INestedFilter) =>