RED-5994: update file statuses
This commit is contained in:
parent
e234ee19d1
commit
3551771bd0
@ -1,4 +1,4 @@
|
||||
import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
||||
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
||||
import {
|
||||
DonutChartConfig,
|
||||
Dossier,
|
||||
@ -25,9 +25,9 @@ import {
|
||||
} from '@iqser/common-ui';
|
||||
import { workflowFileStatusTranslations } from '@translations/file-status-translations';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { combineLatestWith, firstValueFrom, Observable } from 'rxjs';
|
||||
import { combineLatestWith, firstValueFrom } from 'rxjs';
|
||||
import { DossierStatsService } from '@services/dossiers/dossier-stats.service';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { map, tap } from 'rxjs/operators';
|
||||
import { DossiersService } from '@services/dossiers/dossiers.service';
|
||||
import { FilesMapService } from '@services/files/files-map.service';
|
||||
import { ROLES } from '@users/roles';
|
||||
@ -36,8 +36,6 @@ interface DossierDetailsContext {
|
||||
needsWorkFilters: INestedFilter[] | undefined;
|
||||
dossier: Dossier;
|
||||
dossierStats: DossierStats;
|
||||
filesChanged: boolean;
|
||||
chartConfig: void;
|
||||
statusConfig: ProgressBarConfigModel[];
|
||||
}
|
||||
|
||||
@ -45,9 +43,8 @@ interface DossierDetailsContext {
|
||||
selector: 'redaction-dossier-details',
|
||||
templateUrl: './dossier-details.component.html',
|
||||
styleUrls: ['./dossier-details.component.scss'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class DossierDetailsComponent extends ContextComponent<DossierDetailsContext> implements OnInit {
|
||||
export class DossierDetailsComponent extends ContextComponent<DossierDetailsContext> {
|
||||
@Input() dossierAttributes: DossierAttributeWithValue[];
|
||||
@Output() readonly toggleCollapse = new EventEmitter();
|
||||
|
||||
@ -56,15 +53,9 @@ export class DossierDetailsComponent extends ContextComponent<DossierDetailsCont
|
||||
readonly currentUser = getCurrentUser<User>();
|
||||
readonly collapseTooltip = _('dossier-details.collapse');
|
||||
readonly expandTooltip = _('dossier-details.expand');
|
||||
readonly needsWorkFilters$ = this.filterService.getFilterModels$('needsWorkFilters');
|
||||
readonly dossier$: Observable<Dossier>;
|
||||
readonly dossierStats$: Observable<DossierStats>;
|
||||
readonly filesChanged$: Observable<boolean>;
|
||||
readonly chartConfig$: Observable<void>;
|
||||
readonly statusConfig$: Observable<ProgressBarConfigModel[]>;
|
||||
chartConfig: DonutChartConfig[] = [];
|
||||
#currentChartSubtitleIndex = 0;
|
||||
readonly #dossierId: string;
|
||||
readonly #dossierId = getParam(DOSSIER_ID);
|
||||
|
||||
constructor(
|
||||
private readonly _toaster: Toaster,
|
||||
@ -76,32 +67,28 @@ export class DossierDetailsComponent extends ContextComponent<DossierDetailsCont
|
||||
readonly translateChartService: TranslateChartService,
|
||||
) {
|
||||
super();
|
||||
this.#dossierId = getParam(DOSSIER_ID);
|
||||
this.dossier$ = _dossiersService.getEntityChanged$(this.#dossierId).pipe(shareLast());
|
||||
this.dossierStats$ = dossierStatsService.watch$(this.#dossierId).pipe(shareLast());
|
||||
this.filesChanged$ = _filesMapService.watchChanged$(this.#dossierId).pipe(shareLast());
|
||||
this.chartConfig$ = this.dossierStats$.pipe(
|
||||
combineLatestWith(this.filesChanged$),
|
||||
map(([stats]) => this.#calculateChartConfig(stats)),
|
||||
const dossier$ = _dossiersService.getEntityChanged$(this.#dossierId).pipe(shareLast());
|
||||
const filesChanged$ = _filesMapService.watchChanged$(this.#dossierId).pipe(shareLast());
|
||||
const dossierStats$ = dossierStatsService.watch$(this.#dossierId).pipe(shareLast());
|
||||
const dossierStatsWithEffects$ = dossierStats$.pipe(
|
||||
combineLatestWith(filesChanged$),
|
||||
tap(([stats]) => this.#calculateChartConfig(stats)),
|
||||
map(([stats]) => stats),
|
||||
);
|
||||
this.statusConfig$ = this.dossierStats$.pipe(map(stats => this.#calculateStatusConfig(stats)));
|
||||
const statusConfig$ = dossierStats$.pipe(map(stats => this.#calculateStatusConfig(stats)));
|
||||
|
||||
super._initContext({
|
||||
needsWorkFilters: filterService.getFilterModels$('needsWorkFilters'),
|
||||
dossier: dossier$,
|
||||
dossierStats: dossierStatsWithEffects$,
|
||||
statusConfig: statusConfig$,
|
||||
});
|
||||
}
|
||||
|
||||
get managers() {
|
||||
return this._userService.all.filter(u => u.isManager).map(u => u.id);
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
super._initContext({
|
||||
needsWorkFilters: this.needsWorkFilters$,
|
||||
dossier: this.dossier$,
|
||||
dossierStats: this.dossierStats$,
|
||||
filesChanged: this.filesChanged$,
|
||||
chartConfig: this.chartConfig$,
|
||||
statusConfig: this.statusConfig$,
|
||||
});
|
||||
}
|
||||
|
||||
async assignOwner(user: User | string, dossier: Dossier) {
|
||||
const owner = typeof user === 'string' ? this._userService.find(user) : user;
|
||||
const dossierRequest: IDossierRequest = { ...dossier, ownerId: owner.id };
|
||||
|
||||
@ -13,19 +13,20 @@ export const processingFileStatusTranslations: { [key in ProcessingFileStatus]:
|
||||
ANALYSE: _('file-status.analyse'),
|
||||
NER_ANALYZING: _('file-status.ner-analyzing'),
|
||||
PROCESSED: _('file-status.processed'),
|
||||
DELETED: _('file-status.deleted'),
|
||||
ERROR: _('file-status.error'),
|
||||
FULLREPROCESS: _('file-status.full-reprocess'),
|
||||
FULL_PROCESSING: _('file-status.full-processing'),
|
||||
IMAGE_ANALYZING: _('file-status.image-analyzing'),
|
||||
INDEXING: _('file-status.indexing'),
|
||||
OCR_PROCESSING: _('file-status.ocr-processing'),
|
||||
OCR_PROCESSING_QUEUED: _('file-status.ocr-processing'),
|
||||
PROCESSING: _('file-status.processing'),
|
||||
REPROCESS: _('file-status.reprocess'),
|
||||
SURROUNDING_TEXT_PROCESSING: _('file-status.processing'),
|
||||
UNPROCESSED: _('file-status.unprocessed'),
|
||||
PRE_PROCESSING: _('file-status.full-processing'),
|
||||
PRE_PROCESSING_QUEUED: _('file-status.full-processing'),
|
||||
PRE_PROCESSED: _('file-status.processed'),
|
||||
PRE_PROCESSING_FAILED: _('file-status.error'),
|
||||
TABLE_PARSING_ANALYZING: _('file-status.table-parsing-analyzing'),
|
||||
FIGURE_DETECTION_ANALYZING: _('file-status.figure-detection-analyzing'),
|
||||
};
|
||||
|
||||
@ -1414,8 +1414,8 @@
|
||||
"file-status": {
|
||||
"analyse": "",
|
||||
"approved": "Genehmigt",
|
||||
"deleted": "Gelöscht",
|
||||
"error": "Reanalyse erforderlich",
|
||||
"figure-detection-analyzing": "",
|
||||
"full-processing": "",
|
||||
"full-reprocess": "Wird analysiert",
|
||||
"image-analyzing": "Bildanalyse",
|
||||
|
||||
@ -1414,8 +1414,8 @@
|
||||
"file-status": {
|
||||
"analyse": "Analyzing",
|
||||
"approved": "Approved",
|
||||
"deleted": "Deleted",
|
||||
"error": "Re-processing required",
|
||||
"figure-detection-analyzing": "",
|
||||
"full-processing": "Processing",
|
||||
"full-reprocess": "Processing",
|
||||
"image-analyzing": "Image Analyzing",
|
||||
|
||||
@ -1414,8 +1414,8 @@
|
||||
"file-status": {
|
||||
"analyse": "",
|
||||
"approved": "Genehmigt",
|
||||
"deleted": "Gelöscht",
|
||||
"error": "Reanalyse erforderlich",
|
||||
"figure-detection-analyzing": "",
|
||||
"full-processing": "",
|
||||
"full-reprocess": "Wird analysiert",
|
||||
"image-analyzing": "Bildanalyse",
|
||||
|
||||
@ -1414,8 +1414,8 @@
|
||||
"file-status": {
|
||||
"analyse": "Analyzing",
|
||||
"approved": "Approved",
|
||||
"deleted": "Deleted",
|
||||
"error": "Re-processing required",
|
||||
"figure-detection-analyzing": "",
|
||||
"full-processing": "Processing",
|
||||
"full-reprocess": "Processing",
|
||||
"image-analyzing": "Image Analyzing",
|
||||
|
||||
@ -114,9 +114,7 @@ export class File extends Entity<IFile> implements IFile {
|
||||
this.numberOfAnalyses = file.numberOfAnalyses;
|
||||
this.processingStatus = file.processingStatus;
|
||||
this.workflowStatus = file.workflowStatus;
|
||||
this.isError =
|
||||
this.processingStatus === ProcessingFileStatuses.ERROR ||
|
||||
this.processingStatus === ProcessingFileStatuses.PRE_PROCESSING_FAILED;
|
||||
this.isError = this.processingStatus === ProcessingFileStatuses.ERROR;
|
||||
this.isUnprocessed = this.processingStatus === ProcessingFileStatuses.UNPROCESSED;
|
||||
this.numberOfPages = this.isError ? 0 : file.numberOfPages ?? 0;
|
||||
this.rulesVersion = file.rulesVersion;
|
||||
|
||||
@ -14,37 +14,38 @@ export type WorkflowFileStatus = keyof typeof WorkflowFileStatuses;
|
||||
|
||||
export const ProcessingFileStatuses = {
|
||||
ANALYSE: 'ANALYSE',
|
||||
DELETED: 'DELETED',
|
||||
ERROR: 'ERROR',
|
||||
FULLREPROCESS: 'FULLREPROCESS',
|
||||
FULL_PROCESSING: 'FULL_PROCESSING',
|
||||
IMAGE_ANALYZING: 'IMAGE_ANALYZING',
|
||||
INDEXING: 'INDEXING',
|
||||
NER_ANALYZING: 'NER_ANALYZING',
|
||||
OCR_PROCESSING_QUEUED: 'OCR_PROCESSING_QUEUED',
|
||||
OCR_PROCESSING: 'OCR_PROCESSING',
|
||||
PROCESSED: 'PROCESSED',
|
||||
PROCESSING: 'PROCESSING',
|
||||
REPROCESS: 'REPROCESS',
|
||||
SURROUNDING_TEXT_PROCESSING: 'SURROUNDING_TEXT_PROCESSING',
|
||||
UNPROCESSED: 'UNPROCESSED',
|
||||
FULL_PROCESSING: 'FULL_PROCESSING',
|
||||
PRE_PROCESSING_QUEUED: 'PRE_PROCESSING_QUEUED',
|
||||
PRE_PROCESSING: 'PRE_PROCESSING',
|
||||
PRE_PROCESSED: 'PRE_PROCESSED',
|
||||
PRE_PROCESSING_FAILED: 'PRE_PROCESSING_FAILED',
|
||||
FIGURE_DETECTION_ANALYZING: 'FIGURE_DETECTION_ANALYZING',
|
||||
TABLE_PARSING_ANALYZING: 'TABLE_PARSING_ANALYZING',
|
||||
} as const;
|
||||
|
||||
export type ProcessingFileStatus = keyof typeof ProcessingFileStatuses;
|
||||
|
||||
export const isProcessingStatuses: List<ProcessingFileStatus> = [
|
||||
ProcessingFileStatuses.REPROCESS,
|
||||
ProcessingFileStatuses.ANALYSE,
|
||||
ProcessingFileStatuses.FULLREPROCESS,
|
||||
ProcessingFileStatuses.REPROCESS,
|
||||
ProcessingFileStatuses.SURROUNDING_TEXT_PROCESSING,
|
||||
ProcessingFileStatuses.OCR_PROCESSING,
|
||||
ProcessingFileStatuses.IMAGE_ANALYZING,
|
||||
ProcessingFileStatuses.NER_ANALYZING,
|
||||
ProcessingFileStatuses.INDEXING,
|
||||
ProcessingFileStatuses.PROCESSING,
|
||||
ProcessingFileStatuses.ANALYSE,
|
||||
ProcessingFileStatuses.FULL_PROCESSING,
|
||||
ProcessingFileStatuses.PRE_PROCESSING,
|
||||
ProcessingFileStatuses.TABLE_PARSING_ANALYZING,
|
||||
@ -52,13 +53,14 @@ export const isProcessingStatuses: List<ProcessingFileStatus> = [
|
||||
|
||||
export const isFullProcessingStatuses: List<ProcessingFileStatus> = [
|
||||
ProcessingFileStatuses.ANALYSE,
|
||||
ProcessingFileStatuses.DELETED,
|
||||
ProcessingFileStatuses.UNPROCESSED,
|
||||
ProcessingFileStatuses.FULLREPROCESS,
|
||||
ProcessingFileStatuses.IMAGE_ANALYZING,
|
||||
ProcessingFileStatuses.NER_ANALYZING,
|
||||
ProcessingFileStatuses.OCR_PROCESSING_QUEUED,
|
||||
ProcessingFileStatuses.OCR_PROCESSING,
|
||||
ProcessingFileStatuses.UNPROCESSED,
|
||||
ProcessingFileStatuses.FULL_PROCESSING,
|
||||
ProcessingFileStatuses.PRE_PROCESSING_QUEUED,
|
||||
ProcessingFileStatuses.PRE_PROCESSING,
|
||||
ProcessingFileStatuses.TABLE_PARSING_ANALYZING,
|
||||
] as const;
|
||||
@ -84,10 +86,12 @@ export const PROCESSING_STATES: ProcessingFileStatus[] = [
|
||||
ProcessingFileStatuses.NER_ANALYZING,
|
||||
ProcessingFileStatuses.PROCESSING,
|
||||
ProcessingFileStatuses.SURROUNDING_TEXT_PROCESSING,
|
||||
ProcessingFileStatuses.TABLE_PARSING_ANALYZING,
|
||||
ProcessingFileStatuses.FULL_PROCESSING,
|
||||
ProcessingFileStatuses.PRE_PROCESSING_QUEUED,
|
||||
ProcessingFileStatuses.PRE_PROCESSING,
|
||||
ProcessingFileStatuses.TABLE_PARSING_ANALYZING,
|
||||
];
|
||||
|
||||
export const PROCESSED_STATES: ProcessingFileStatus[] = [ProcessingFileStatuses.PROCESSED];
|
||||
|
||||
export const OCR_STATES: ProcessingFileStatus[] = [ProcessingFileStatuses.OCR_PROCESSING];
|
||||
export const OCR_STATES: ProcessingFileStatus[] = [ProcessingFileStatuses.OCR_PROCESSING, ProcessingFileStatuses.OCR_PROCESSING_QUEUED];
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user