remove file stats from dossier

This commit is contained in:
Dan Percic 2021-11-12 13:21:36 +02:00
parent a3e44b3d85
commit 9bd98a0c46
4 changed files with 45 additions and 59 deletions

View File

@ -1,18 +1,12 @@
import { Injectable, TemplateRef } from '@angular/core';
import { ButtonConfig, IFilterGroup, keyChecker, NestedFilter, TableColumnConfig } from '@iqser/common-ui';
import { ButtonConfig, IFilterGroup, INestedFilter, keyChecker, NestedFilter, TableColumnConfig } from '@iqser/common-ui';
import { Dossier, StatusSorter, User } from '@red/domain';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { TranslateService } from '@ngx-translate/core';
import { UserPreferenceService } from '@services/user-preference.service';
import { UserService } from '@services/user.service';
import { fileStatusTranslations } from '../../translations/file-status-translations';
import {
annotationFilterChecker,
dossierMemberChecker,
dossierStatusChecker,
dossierTemplateChecker,
RedactionFilterSorter,
} from '@utils/index';
import { dossierMemberChecker, dossierTemplateChecker, RedactionFilterSorter } from '@utils/index';
import { workloadTranslations } from '../../translations/workload-translations';
import { AppStateService } from '@state/app-state.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
@ -89,29 +83,27 @@ export class ConfigService {
const filterGroups: IFilterGroup[] = [];
entities?.forEach(entry => {
// all people
entry.memberIds.forEach(f => allDistinctPeople.add(f));
// Needs work
entry.files.forEach(file => {
allDistinctFileStatus.add(file.status);
if (file.analysisRequired) {
allDistinctNeedsWork.add('analysis');
}
if (entry.hintsOnly) {
allDistinctNeedsWork.add('hint');
}
if (entry.hasRedactions) {
allDistinctNeedsWork.add('redaction');
}
if (entry.hasSuggestions) {
allDistinctNeedsWork.add('suggestion');
}
if (entry.hasNone) {
allDistinctNeedsWork.add('none');
}
});
allDistinctDossierTemplates.add(entry.dossierTemplateId);
if (!entry.stats) {
return;
}
Object.keys(entry.stats?.fileCountPerWorkflowStatus).forEach(status => allDistinctFileStatus.add(status));
if (entry.stats.hasHintsNoRedactionsFilePresent) {
allDistinctNeedsWork.add('hint');
}
if (entry.stats.hasRedactionsFilePresent) {
allDistinctNeedsWork.add('redaction');
}
if (entry.stats.hasSuggestionsFilePresent) {
allDistinctNeedsWork.add('suggestion');
}
if (entry.stats.hasNoFlagsFilePresent) {
allDistinctNeedsWork.add('none');
}
});
const statusFilters = [...allDistinctFileStatus].map(
@ -127,7 +119,7 @@ export class ConfigService {
label: this._translateService.instant('filters.status'),
icon: 'red:status',
filters: statusFilters.sort((a, b) => StatusSorter[a.id] - StatusSorter[b.id]),
checker: dossierStatusChecker,
checker: this._dossierStatusChecker,
});
const peopleFilters = [...allDistinctPeople].map(
@ -160,7 +152,7 @@ export class ConfigService {
icon: 'red:needs-work',
filterTemplate: needsWorkFilterTemplate,
filters: needsWorkFilters.sort((a, b) => RedactionFilterSorter[a.id] - RedactionFilterSorter[b.id]),
checker: annotationFilterChecker,
checker: this._annotationFilterChecker,
matchAll: true,
});
@ -206,4 +198,26 @@ export class ConfigService {
return filterGroups;
}
private _dossierStatusChecker = (dossier: Dossier, filter: INestedFilter) => dossier.stats.fileCountPerWorkflowStatus[filter.id];
private _annotationFilterChecker = (dossier: Dossier, filter: INestedFilter) => {
switch (filter.id) {
// case 'analysis': {
// return stats.reanalysisRequired;
// }
case 'suggestion': {
return dossier.stats.hasSuggestionsFilePresent;
}
case 'redaction': {
return dossier.stats.hasRedactionsFilePresent;
}
case 'hint': {
return dossier.stats.hasHintsNoRedactionsFilePresent;
}
case 'none': {
return dossier.stats.hasNoFlagsFilePresent;
}
}
};
}

View File

@ -73,8 +73,6 @@ export const annotationFilterChecker = (file: File, filter: INestedFilter) => {
}
};
export const dossierStatusChecker = (dw: Dossier, filter: INestedFilter) => dw.hasStatus(filter.id);
export const dossierMemberChecker = (dw: Dossier, filter: INestedFilter) => dw.hasMember(filter.id);
export const dossierTemplateChecker = (dw: Dossier, filter: INestedFilter) => dw.dossierTemplateId === filter.id;

View File

@ -13,7 +13,6 @@ export class DossierStats implements IDossierStats {
readonly numberOfPages: number;
readonly numberOfFiles: number;
readonly hasNone: boolean;
readonly hasFiles: boolean;
constructor(stats: IDossierStats) {
@ -28,7 +27,6 @@ export class DossierStats implements IDossierStats {
this.numberOfPages = stats.numberOfPages;
this.numberOfFiles = stats.numberOfFiles;
this.hasNone = !this.hasSuggestionsFilePresent && !this.hasRedactionsFilePresent && !this.hasHintsNoRedactionsFilePresent;
this.hasFiles = this.numberOfFiles > 0;
}
}

View File

@ -26,13 +26,6 @@ export class Dossier implements IDossier, IListable {
readonly watermarkEnabled: boolean;
readonly hasReviewers: boolean;
readonly reanalysisRequired = this.files.some(file => file.analysisRequired);
readonly hintsOnly: boolean;
readonly hasRedactions: boolean;
readonly hasSuggestions: boolean;
readonly hasNone: boolean;
readonly stats$: Observable<DossierStats>;
private readonly _stats$: BehaviorSubject<DossierStats>;
@ -57,23 +50,6 @@ export class Dossier implements IDossier, IListable {
this._stats$ = new BehaviorSubject<DossierStats>(stats);
this.stats$ = this._stats$.asObservable();
let hintsOnly = false;
let hasRedactions = false;
let hasSuggestions = false;
let hasPendingOrProcessing = false;
this.files.forEach(f => {
hintsOnly = hintsOnly || f.hintsOnly;
hasRedactions = hasRedactions || f.hasRedactions;
hasSuggestions = hasSuggestions || f.hasSuggestions;
hasPendingOrProcessing = hasPendingOrProcessing || f.isPending || f.isProcessing;
});
this.hintsOnly = hintsOnly;
this.hasRedactions = hasRedactions;
this.hasSuggestions = hasSuggestions;
this.hasNone = !this.hasSuggestions && !this.hasRedactions && !this.hintsOnly;
}
get id(): string {