added dossier status filters

This commit is contained in:
Edi Cziszter 2022-02-17 12:43:34 +02:00
parent 5634da6b64
commit d0896e8f2c
3 changed files with 29 additions and 3 deletions

View File

@ -6,10 +6,11 @@ import { TranslateService } from '@ngx-translate/core';
import { UserPreferenceService } from '@services/user-preference.service';
import { UserService } from '@services/user.service';
import { workflowFileStatusTranslations } from '../../translations/file-status-translations';
import { dossierMemberChecker, dossierTemplateChecker, RedactionFilterSorter } from '@utils/index';
import { dossierMemberChecker, dossierStateChecker, dossierTemplateChecker, RedactionFilterSorter } from '@utils/index';
import { workloadTranslations } from '../../translations/workload-translations';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { DossierStatsService } from '@services/entity-services/dossier-stats.service';
import { DossierStateService } from '../../../../services/entity-services/dossier-state.service';
@Injectable()
export class ConfigService {
@ -19,6 +20,7 @@ export class ConfigService {
private readonly _userService: UserService,
private readonly _dossierTemplatesService: DossierTemplatesService,
private readonly _dossierStatsService: DossierStatsService,
private readonly _dossierStateService: DossierStateService,
) {}
get tableConfig(): TableColumnConfig<Dossier>[] {
@ -61,12 +63,16 @@ export class ConfigService {
const allDistinctPeople = new Set<string>();
const allDistinctNeedsWork = new Set<string>();
const allDistinctDossierTemplates = new Set<string>();
const allDistinctDossierStates = new Set<string>();
const filterGroups: IFilterGroup[] = [];
entities?.forEach(entry => {
entry.memberIds.forEach(f => allDistinctPeople.add(f));
allDistinctDossierTemplates.add(entry.dossierTemplateId);
if (entry.dossierStatusId) {
allDistinctDossierStates.add(entry.dossierStatusId);
}
const stats = this._dossierStatsService.get(entry.dossierId);
if (!stats) {
@ -89,6 +95,23 @@ export class ConfigService {
}
});
const dossierStatesFilters = [...allDistinctDossierStates].map(
id =>
new NestedFilter({
id: id,
label: this._dossierStateService.find(id).name,
}),
);
filterGroups.push({
slug: 'dossierStatesFilters',
label: this._translateService.instant('filters.dossier-status'),
icon: 'red:status',
hide: dossierStatesFilters.length <= 1,
filters: dossierStatesFilters,
checker: dossierStateChecker,
});
const statusFilters = [...allDistinctFileStatus].map(
status =>
new NestedFilter({
@ -99,7 +122,7 @@ export class ConfigService {
filterGroups.push({
slug: 'statusFilters',
label: this._translateService.instant('filters.status'),
label: this._translateService.instant('filters.documents-status'),
icon: 'red:status',
filters: statusFilters.sort((a, b) => StatusSorter[a.id] - StatusSorter[b.id]),
checker: (dossier: Dossier, filter: INestedFilter) => this._dossierStatusChecker(dossier, filter),

View File

@ -77,6 +77,8 @@ export const dossierMemberChecker = (dw: Dossier, filter: INestedFilter) => dw.h
export const dossierTemplateChecker = (dw: Dossier, filter: INestedFilter) => dw.dossierTemplateId === filter.id;
export const dossierStateChecker = (dw: Dossier, filter: INestedFilter) => dw.dossierStatusId === filter.id;
export const dossierApproverChecker = (dw: Dossier, filter: INestedFilter) => dw.approverIds.includes(filter.id);
export const userTypeFilters: { [key in UserType]: (user: User) => boolean } = {

View File

@ -1294,7 +1294,8 @@
"filter-by": "Filter:",
"needs-work": "Workload",
"people": "Dossier Member(s)",
"status": "Status"
"documents-status": "Documents Status",
"dossier-status": "Dossier Status"
},
"general-config-screen": {
"actions": {