From 9d7797e2808371ebed354c9eda6253bb0bf1cb7c Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Thu, 14 Oct 2021 19:05:52 +0300 Subject: [PATCH] add reanalysis service --- .../page-exclusion.component.ts | 9 +-- ...dossier-overview-bulk-actions.component.ts | 6 +- .../shared/services/file-action.service.ts | 10 ++-- .../src/app/services/reanalysis.service.ts | 57 +++++++++++++++++++ .../red-ui/src/app/state/app-state.service.ts | 7 ++- libs/red-ui-http/src/lib/api.module.ts | 2 - 6 files changed, 74 insertions(+), 17 deletions(-) create mode 100644 apps/red-ui/src/app/services/reanalysis.service.ts diff --git a/apps/red-ui/src/app/modules/dossier/components/page-exclusion/page-exclusion.component.ts b/apps/red-ui/src/app/modules/dossier/components/page-exclusion/page-exclusion.component.ts index 6af347ea6..5060d4919 100644 --- a/apps/red-ui/src/app/modules/dossier/components/page-exclusion/page-exclusion.component.ts +++ b/apps/red-ui/src/app/modules/dossier/components/page-exclusion/page-exclusion.component.ts @@ -1,9 +1,10 @@ import { Component, EventEmitter, Input, OnChanges, Output, ViewChild } from '@angular/core'; import { PermissionsService } from '@services/permissions.service'; -import { PageRange, ReanalysisControllerService } from '@redaction/red-ui-http'; +import { PageRange } from '@redaction/red-ui-http'; import { InputWithActionComponent, LoadingService, Toaster } from '@iqser/common-ui'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { File } from '@models/file/file'; +import { ReanalysisService } from '@services/reanalysis.service'; @Component({ selector: 'redaction-page-exclusion', @@ -19,7 +20,7 @@ export class PageExclusionComponent implements OnChanges { constructor( readonly permissionsService: PermissionsService, - private readonly _reanalysisControllerService: ReanalysisControllerService, + private readonly _reanalysisService: ReanalysisService, private readonly _toaster: Toaster, private readonly _loadingService: LoadingService, ) {} @@ -56,7 +57,7 @@ export class PageExclusionComponent implements OnChanges { endPage, }; }); - await this._reanalysisControllerService + await this._reanalysisService .excludePages( { pageRanges: pageRanges, @@ -75,7 +76,7 @@ export class PageExclusionComponent implements OnChanges { async includePagesRange(range: PageRange): Promise { this._loadingService.start(); - await this._reanalysisControllerService + await this._reanalysisService .includePages( { pageRanges: [range], diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/bulk-actions/dossier-overview-bulk-actions.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/bulk-actions/dossier-overview-bulk-actions.component.ts index b2fbcef85..6e79c4ba3 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/bulk-actions/dossier-overview-bulk-actions.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/bulk-actions/dossier-overview-bulk-actions.component.ts @@ -1,6 +1,5 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { AppStateService } from '@state/app-state.service'; -import { ReanalysisControllerService } from '@redaction/red-ui-http'; import { PermissionsService } from '@services/permissions.service'; import { File } from '@models/file/file'; import { FileActionService } from '../../../../shared/services/file-action.service'; @@ -13,6 +12,7 @@ import { Dossier } from '@state/model/dossier'; import { LongPressEvent } from '@shared/directives/long-press.directive'; import { UserPreferenceService } from '@services/user-preference.service'; import { FileManagementService } from '../../../../shared/services/file-management.service'; +import { ReanalysisService } from '@services/reanalysis.service'; @Component({ selector: 'redaction-dossier-overview-bulk-actions', @@ -31,7 +31,7 @@ export class DossierOverviewBulkActionsComponent { private readonly _appStateService: AppStateService, private readonly _dialogService: DossiersDialogService, private readonly _fileManagementService: FileManagementService, - private readonly _reanalysisControllerService: ReanalysisControllerService, + private readonly _reanalysisService: ReanalysisService, private readonly _permissionsService: PermissionsService, private readonly _fileActionService: FileActionService, private readonly _loadingService: LoadingService, @@ -159,7 +159,7 @@ export class DossierOverviewBulkActionsComponent { reanalyse() { const fileIds = this.selectedFiles.filter(file => file.analysisRequired).map(file => file.fileId); - this._performBulkAction(this._reanalysisControllerService.reanalyzeFilesForDossier(fileIds, this.dossier.id)); + this._performBulkAction(this._reanalysisService.reanalyzeFilesForDossier(fileIds, this.dossier.id)); } ocr() { diff --git a/apps/red-ui/src/app/modules/dossier/shared/services/file-action.service.ts b/apps/red-ui/src/app/modules/dossier/shared/services/file-action.service.ts index cbcbfb73f..21ab6dcd3 100644 --- a/apps/red-ui/src/app/modules/dossier/shared/services/file-action.service.ts +++ b/apps/red-ui/src/app/modules/dossier/shared/services/file-action.service.ts @@ -1,7 +1,6 @@ import { Injectable } from '@angular/core'; import { AppStateService } from '@state/app-state.service'; import { UserService } from '@services/user.service'; -import { ReanalysisControllerService } from '@redaction/red-ui-http'; import { File } from '@models/file/file'; import { PermissionsService } from '@services/permissions.service'; import { DossiersDialogService } from '../../services/dossiers-dialog.service'; @@ -9,6 +8,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { FilesService } from '@services/entity-services/files.service'; import { ConfirmationDialogInput } from '@iqser/common-ui'; import { DossiersService } from '@services/entity-services/dossiers.service'; +import { ReanalysisService } from '@services/reanalysis.service'; @Injectable() export class FileActionService { @@ -17,17 +17,17 @@ export class FileActionService { private readonly _permissionsService: PermissionsService, private readonly _userService: UserService, private readonly _fileService: FilesService, - private readonly _reanalysisControllerService: ReanalysisControllerService, + private readonly _reanalysisService: ReanalysisService, private readonly _appStateService: AppStateService, private readonly _dossiersService: DossiersService, ) {} reanalyseFile(file = this._appStateService.activeFile) { - return this._reanalysisControllerService.reanalyzeFile(this._dossiersService.activeDossier.id, file.fileId, true); + return this._reanalysisService.reanalyzeFilesForDossier([file.fileId], this._dossiersService.activeDossier.id, true); } toggleAnalysis(file = this._appStateService.activeFile) { - return this._reanalysisControllerService.toggleAnalysis(file.dossierId, file.fileId, !file.excluded); + return this._reanalysisService.toggleAnalysis(file.dossierId, file.fileId, !file.excluded); } async assignToMe(files?: File[], callback?: Function) { @@ -78,7 +78,7 @@ export class FileActionService { } ocrFiles(files: File[]) { - return this._reanalysisControllerService.ocrFiles( + return this._reanalysisService.ocrFiles( files.map(f => f.fileId), this._dossiersService.activeDossierId, ); diff --git a/apps/red-ui/src/app/services/reanalysis.service.ts b/apps/red-ui/src/app/services/reanalysis.service.ts new file mode 100644 index 000000000..5d75a2e3c --- /dev/null +++ b/apps/red-ui/src/app/services/reanalysis.service.ts @@ -0,0 +1,57 @@ +import { Injectable, Injector } from '@angular/core'; +import { GenericService, List, QueryParam, RequiredParam, Validate } from '@iqser/common-ui'; +import { PageExclusionRequest } from '@redaction/red-ui-http'; + +@Injectable({ + providedIn: 'root', +}) +export class ReanalysisService extends GenericService { + constructor(protected readonly _injector: Injector) { + super(_injector, ''); + } + + @Validate() + excludePages(@RequiredParam() body: PageExclusionRequest, @RequiredParam() dossierId: string, @RequiredParam() fileId: string) { + return this._post(body, `exclude-pages/${dossierId}/${fileId}`); + } + + @Validate() + includePages(@RequiredParam() body: PageExclusionRequest, @RequiredParam() dossierId: string, @RequiredParam() fileId: string) { + return this._post(body, `include-pages/${dossierId}/${fileId}`); + } + + @Validate() + reanalyzeFilesForDossier(@RequiredParam() body: List, @RequiredParam() dossierId: string, force?: boolean) { + const queryParams: QueryParam[] = []; + if (force) { + queryParams.push({ key: 'force', value: force }); + } + + return this._post(body, `reanalyze/${dossierId}/bulk`, queryParams); + } + + @Validate() + toggleAnalysis(@RequiredParam() dossierId: string, @RequiredParam() fileId: string, excluded?: boolean) { + const queryParams: QueryParam[] = []; + if (excluded) { + queryParams.push({ key: 'excluded', value: excluded }); + } + + return this._post({}, `toggle-analysis/${dossierId}/${fileId}`, queryParams); + } + + @Validate() + ocrFiles(@RequiredParam() body: List, @RequiredParam() dossierId: string) { + return this._post(body, `ocr/reanalyze/${dossierId}/bulk`); + } + + @Validate() + reanalyzeDossier(@RequiredParam() dossierId: string, force?: boolean) { + const queryParams: QueryParam[] = []; + if (force) { + queryParams.push({ key: 'force', value: force }); + } + + return this._post({}, `reanalyze/${dossierId}`, queryParams); + } +} diff --git a/apps/red-ui/src/app/state/app-state.service.ts b/apps/red-ui/src/app/state/app-state.service.ts index 6dea2d22e..bfa0c53dd 100644 --- a/apps/red-ui/src/app/state/app-state.service.ts +++ b/apps/red-ui/src/app/state/app-state.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { Colors, IFile, ReanalysisControllerService } from '@redaction/red-ui-http'; +import { Colors, IFile } from '@redaction/red-ui-http'; import { ActivationEnd, Router } from '@angular/router'; import { UserService } from '@services/user.service'; import { forkJoin, Observable, of, Subject } from 'rxjs'; @@ -15,6 +15,7 @@ import { FilesService } from '@services/entity-services/files.service'; import { DictionaryService } from '@shared/services/dictionary.service'; import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; import { FileAttributesService } from '@services/entity-services/file-attributes.service'; +import { ReanalysisService } from '@services/reanalysis.service'; export interface AppState { activeFileId?: string; @@ -35,7 +36,7 @@ export class AppStateService { private readonly _userService: UserService, private readonly _dossiersService: DossiersService, private readonly _filesService: FilesService, - private readonly _reanalysisControllerService: ReanalysisControllerService, + private readonly _reanalysisService: ReanalysisService, private readonly _dictionaryService: DictionaryService, private readonly _dossierTemplatesService: DossierTemplatesService, private readonly _fileAttributesService: FileAttributesService, @@ -176,7 +177,7 @@ export class AppStateService { } async reanalyzeDossier({ id } = this._dossiersService.activeDossier) { - await this._reanalysisControllerService.reanalyzeDossier(id, true).toPromise(); + await this._reanalysisService.reanalyzeDossier(id, true).toPromise(); } async activateFile(dossierId: string, fileId: string) { diff --git a/libs/red-ui-http/src/lib/api.module.ts b/libs/red-ui-http/src/lib/api.module.ts index bee3a2f09..7f56ea79f 100644 --- a/libs/red-ui-http/src/lib/api.module.ts +++ b/libs/red-ui-http/src/lib/api.module.ts @@ -1,7 +1,6 @@ import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core'; import { Configuration } from './configuration'; import { HttpClient } from '@angular/common/http'; -import { ReanalysisControllerService } from './api/reanalysisController.service'; import { RedactionLogControllerService } from './api/redactionLogController.service'; import { ReportTemplateControllerService } from './api/reportTemplateController.service'; import { RulesControllerService } from './api/rulesController.service'; @@ -17,7 +16,6 @@ import { NotificationControllerService } from './api/notificationController.serv declarations: [], exports: [], providers: [ - ReanalysisControllerService, RedactionLogControllerService, ReportTemplateControllerService, RulesControllerService,