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 { Component, EventEmitter, Input, OnChanges, Output, ViewChild } from '@angular/core';
import { PermissionsService } from '@services/permissions.service'; 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 { InputWithActionComponent, LoadingService, Toaster } from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { File } from '@models/file/file'; import { File } from '@models/file/file';
import { ReanalysisService } from '@services/reanalysis.service';
@Component({ @Component({
selector: 'redaction-page-exclusion', selector: 'redaction-page-exclusion',
@ -19,7 +20,7 @@ export class PageExclusionComponent implements OnChanges {
constructor( constructor(
readonly permissionsService: PermissionsService, readonly permissionsService: PermissionsService,
private readonly _reanalysisControllerService: ReanalysisControllerService, private readonly _reanalysisService: ReanalysisService,
private readonly _toaster: Toaster, private readonly _toaster: Toaster,
private readonly _loadingService: LoadingService, private readonly _loadingService: LoadingService,
) {} ) {}
@ -56,7 +57,7 @@ export class PageExclusionComponent implements OnChanges {
endPage, endPage,
}; };
}); });
await this._reanalysisControllerService await this._reanalysisService
.excludePages( .excludePages(
{ {
pageRanges: pageRanges, pageRanges: pageRanges,
@ -75,7 +76,7 @@ export class PageExclusionComponent implements OnChanges {
async includePagesRange(range: PageRange): Promise<void> { async includePagesRange(range: PageRange): Promise<void> {
this._loadingService.start(); this._loadingService.start();
await this._reanalysisControllerService await this._reanalysisService
.includePages( .includePages(
{ {
pageRanges: [range], pageRanges: [range],

View File

@ -1,6 +1,5 @@
import { Component, EventEmitter, Input, Output } from '@angular/core'; import { Component, EventEmitter, Input, Output } from '@angular/core';
import { AppStateService } from '@state/app-state.service'; import { AppStateService } from '@state/app-state.service';
import { ReanalysisControllerService } from '@redaction/red-ui-http';
import { PermissionsService } from '@services/permissions.service'; import { PermissionsService } from '@services/permissions.service';
import { File } from '@models/file/file'; import { File } from '@models/file/file';
import { FileActionService } from '../../../../shared/services/file-action.service'; 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 { LongPressEvent } from '@shared/directives/long-press.directive';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@services/user-preference.service';
import { FileManagementService } from '../../../../shared/services/file-management.service'; import { FileManagementService } from '../../../../shared/services/file-management.service';
import { ReanalysisService } from '@services/reanalysis.service';
@Component({ @Component({
selector: 'redaction-dossier-overview-bulk-actions', selector: 'redaction-dossier-overview-bulk-actions',
@ -31,7 +31,7 @@ export class DossierOverviewBulkActionsComponent {
private readonly _appStateService: AppStateService, private readonly _appStateService: AppStateService,
private readonly _dialogService: DossiersDialogService, private readonly _dialogService: DossiersDialogService,
private readonly _fileManagementService: FileManagementService, private readonly _fileManagementService: FileManagementService,
private readonly _reanalysisControllerService: ReanalysisControllerService, private readonly _reanalysisService: ReanalysisService,
private readonly _permissionsService: PermissionsService, private readonly _permissionsService: PermissionsService,
private readonly _fileActionService: FileActionService, private readonly _fileActionService: FileActionService,
private readonly _loadingService: LoadingService, private readonly _loadingService: LoadingService,
@ -159,7 +159,7 @@ export class DossierOverviewBulkActionsComponent {
reanalyse() { reanalyse() {
const fileIds = this.selectedFiles.filter(file => file.analysisRequired).map(file => file.fileId); 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() { ocr() {

View File

@ -1,7 +1,6 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { AppStateService } from '@state/app-state.service'; import { AppStateService } from '@state/app-state.service';
import { UserService } from '@services/user.service'; import { UserService } from '@services/user.service';
import { ReanalysisControllerService } from '@redaction/red-ui-http';
import { File } from '@models/file/file'; import { File } from '@models/file/file';
import { PermissionsService } from '@services/permissions.service'; import { PermissionsService } from '@services/permissions.service';
import { DossiersDialogService } from '../../services/dossiers-dialog.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 { FilesService } from '@services/entity-services/files.service';
import { ConfirmationDialogInput } from '@iqser/common-ui'; import { ConfirmationDialogInput } from '@iqser/common-ui';
import { DossiersService } from '@services/entity-services/dossiers.service'; import { DossiersService } from '@services/entity-services/dossiers.service';
import { ReanalysisService } from '@services/reanalysis.service';
@Injectable() @Injectable()
export class FileActionService { export class FileActionService {
@ -17,17 +17,17 @@ export class FileActionService {
private readonly _permissionsService: PermissionsService, private readonly _permissionsService: PermissionsService,
private readonly _userService: UserService, private readonly _userService: UserService,
private readonly _fileService: FilesService, private readonly _fileService: FilesService,
private readonly _reanalysisControllerService: ReanalysisControllerService, private readonly _reanalysisService: ReanalysisService,
private readonly _appStateService: AppStateService, private readonly _appStateService: AppStateService,
private readonly _dossiersService: DossiersService, private readonly _dossiersService: DossiersService,
) {} ) {}
reanalyseFile(file = this._appStateService.activeFile) { 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) { 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) { async assignToMe(files?: File[], callback?: Function) {
@ -78,7 +78,7 @@ export class FileActionService {
} }
ocrFiles(files: File[]) { ocrFiles(files: File[]) {
return this._reanalysisControllerService.ocrFiles( return this._reanalysisService.ocrFiles(
files.map(f => f.fileId), files.map(f => f.fileId),
this._dossiersService.activeDossierId, 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 { 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 { ActivationEnd, Router } from '@angular/router';
import { UserService } from '@services/user.service'; import { UserService } from '@services/user.service';
import { forkJoin, Observable, of, Subject } from 'rxjs'; 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 { DictionaryService } from '@shared/services/dictionary.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { FileAttributesService } from '@services/entity-services/file-attributes.service'; import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { ReanalysisService } from '@services/reanalysis.service';
export interface AppState { export interface AppState {
activeFileId?: string; activeFileId?: string;
@ -35,7 +36,7 @@ export class AppStateService {
private readonly _userService: UserService, private readonly _userService: UserService,
private readonly _dossiersService: DossiersService, private readonly _dossiersService: DossiersService,
private readonly _filesService: FilesService, private readonly _filesService: FilesService,
private readonly _reanalysisControllerService: ReanalysisControllerService, private readonly _reanalysisService: ReanalysisService,
private readonly _dictionaryService: DictionaryService, private readonly _dictionaryService: DictionaryService,
private readonly _dossierTemplatesService: DossierTemplatesService, private readonly _dossierTemplatesService: DossierTemplatesService,
private readonly _fileAttributesService: FileAttributesService, private readonly _fileAttributesService: FileAttributesService,
@ -176,7 +177,7 @@ export class AppStateService {
} }
async reanalyzeDossier({ id } = this._dossiersService.activeDossier) { 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) { async activateFile(dossierId: string, fileId: string) {

View File

@ -1,7 +1,6 @@
import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core'; import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';
import { Configuration } from './configuration'; import { Configuration } from './configuration';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { ReanalysisControllerService } from './api/reanalysisController.service';
import { RedactionLogControllerService } from './api/redactionLogController.service'; import { RedactionLogControllerService } from './api/redactionLogController.service';
import { ReportTemplateControllerService } from './api/reportTemplateController.service'; import { ReportTemplateControllerService } from './api/reportTemplateController.service';
import { RulesControllerService } from './api/rulesController.service'; import { RulesControllerService } from './api/rulesController.service';
@ -17,7 +16,6 @@ import { NotificationControllerService } from './api/notificationController.serv
declarations: [], declarations: [],
exports: [], exports: [],
providers: [ providers: [
ReanalysisControllerService,
RedactionLogControllerService, RedactionLogControllerService,
ReportTemplateControllerService, ReportTemplateControllerService,
RulesControllerService, RulesControllerService,