add reanalysis service

This commit is contained in:
Dan Percic 2021-10-14 19:05:52 +03:00
parent 741c2d7fd6
commit 9d7797e280
6 changed files with 74 additions and 17 deletions

View File

@ -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<void> {
this._loadingService.start();
await this._reanalysisControllerService
await this._reanalysisService
.includePages(
{
pageRanges: [range],

View File

@ -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() {

View File

@ -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,
);

View File

@ -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<unknown> {
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);
}
}

View File

@ -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) {

View File

@ -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,