DM-360 - Remove OCR workload in document and Stop auto-analysis button

This commit is contained in:
Valentin Mihai 2023-07-27 20:07:25 +03:00
parent 62fe3fb048
commit 6bd2ea477b
3 changed files with 33 additions and 7 deletions

View File

@ -3,7 +3,7 @@ import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { AnnotationProcessingService } from '../../services/annotation-processing.service'; import { AnnotationProcessingService } from '../../services/annotation-processing.service';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import scrollIntoView from 'scroll-into-view-if-needed'; import scrollIntoView from 'scroll-into-view-if-needed';
import { CircleButtonTypes, IconButtonTypes } from '@iqser/common-ui'; import { CircleButtonTypes, getConfig, IconButtonTypes } from '@iqser/common-ui';
import { combineLatest, delay, Observable } from 'rxjs'; import { combineLatest, delay, Observable } from 'rxjs';
import { map } from 'rxjs/operators'; import { map } from 'rxjs/operators';
import { ExcludedPagesService } from '../../services/excluded-pages.service'; import { ExcludedPagesService } from '../../services/excluded-pages.service';
@ -24,6 +24,7 @@ import { PageRotationService } from '../../../pdf-viewer/services/page-rotation.
import { getLocalStorageDataByFileId } from '@utils/local-storage'; import { getLocalStorageDataByFileId } from '@utils/local-storage';
import { FilterService, INestedFilter } from '@iqser/common-ui/lib/filtering'; import { FilterService, INestedFilter } from '@iqser/common-ui/lib/filtering';
import { AutoUnsubscribe, bool, Debounce, IqserEventTarget } from '@iqser/common-ui/lib/utils'; import { AutoUnsubscribe, bool, Debounce, IqserEventTarget } from '@iqser/common-ui/lib/utils';
import { UserPreferenceService } from '@users/user-preference.service';
const COMMAND_KEY_ARRAY = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Escape']; const COMMAND_KEY_ARRAY = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Escape'];
const ALL_HOTKEY_ARRAY = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown']; const ALL_HOTKEY_ARRAY = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'];
@ -46,6 +47,8 @@ export class FileWorkloadComponent extends AutoUnsubscribe implements OnInit, On
this.viewModeService.isEarmarks() ? _('file-preview.tabs.highlights.label') : _('file-preview.tabs.annotations.label'), this.viewModeService.isEarmarks() ? _('file-preview.tabs.highlights.label') : _('file-preview.tabs.annotations.label'),
); );
readonly currentPageIsExcluded = computed(() => this.state.file().excludedPages.includes(this.pdf.currentPage())); readonly currentPageIsExcluded = computed(() => this.state.file().excludedPages.includes(this.pdf.currentPage()));
readonly #isDocumine = getConfig().IS_DOCUMINE;
readonly #devMode = this._userPreferenceService.areDevFeaturesEnabled;
constructor( constructor(
readonly filterService: FilterService, readonly filterService: FilterService,
@ -65,6 +68,7 @@ export class FileWorkloadComponent extends AutoUnsubscribe implements OnInit, On
private readonly _annotationProcessingService: AnnotationProcessingService, private readonly _annotationProcessingService: AnnotationProcessingService,
private readonly _suggestionsService: SuggestionsService, private readonly _suggestionsService: SuggestionsService,
private readonly _pageRotationService: PageRotationService, private readonly _pageRotationService: PageRotationService,
private readonly _userPreferenceService: UserPreferenceService,
) { ) {
super(); super();
@ -358,6 +362,10 @@ export class FileWorkloadComponent extends AutoUnsubscribe implements OnInit, On
annotations = this._suggestionsService.filterWorkloadSuggestionsInPreview(annotations); annotations = this._suggestionsService.filterWorkloadSuggestionsInPreview(annotations);
} }
if (this.#isDocumine && !this.#devMode) {
annotations = annotations.filter(a => !a.isOCR);
}
this.displayedAnnotations = this._annotationProcessingService.filterAndGroupAnnotations(annotations, primary, secondary); this.displayedAnnotations = this._annotationProcessingService.filterAndGroupAnnotations(annotations, primary, secondary);
const pagesThatDisplayAnnotations = [...this.displayedAnnotations.keys()]; const pagesThatDisplayAnnotations = [...this.displayedAnnotations.keys()];
const enabledFilters = this.filterService.enabledFlatFilters; const enabledFilters = this.filterService.enabledFlatFilters;

View File

@ -5,6 +5,7 @@ import { DossiersDialogService } from '../../services/dossiers-dialog.service';
import { import {
CircleButtonType, CircleButtonType,
CircleButtonTypes, CircleButtonTypes,
getConfig,
IConfirmationDialogData, IConfirmationDialogData,
IqserPermissionsService, IqserPermissionsService,
LoadingService, LoadingService,
@ -50,6 +51,7 @@ export class FileActionsComponent implements OnChanges {
@Input() fileActionsHelpModeKey: 'document_features_in_dossier' | 'editor_document_features' = 'document_features_in_dossier'; @Input() fileActionsHelpModeKey: 'document_features_in_dossier' | 'editor_document_features' = 'document_features_in_dossier';
readonly circleButtonTypes = CircleButtonTypes; readonly circleButtonTypes = CircleButtonTypes;
readonly currentUser = getCurrentUser<User>(); readonly currentUser = getCurrentUser<User>();
readonly #isDocumine = getConfig().IS_DOCUMINE;
toggleTooltip?: string; toggleTooltip?: string;
assignTooltip?: string; assignTooltip?: string;
buttonType?: CircleButtonType; buttonType?: CircleButtonType;
@ -427,7 +429,7 @@ export class FileActionsComponent implements OnChanges {
this.showDelete = this._permissionsService.canSoftDeleteFile(this.file, this.dossier); this.showDelete = this._permissionsService.canSoftDeleteFile(this.file, this.dossier);
this.showOCR = this._permissionsService.canOcrFile(this.file, this.dossier); this.showOCR = this._permissionsService.canOcrFile(this.file, this.dossier);
this.canReanalyse = this._permissionsService.canReanalyseFile(this.file, this.dossier); this.canReanalyse = this._permissionsService.canReanalyseFile(this.file, this.dossier);
this.canDisableAutoAnalysis = this._permissionsService.canDisableAutoAnalysis([this.file], this.dossier); this.canDisableAutoAnalysis = !this.#isDocumine && this._permissionsService.canDisableAutoAnalysis([this.file], this.dossier);
this.canEnableAutoAnalysis = this._permissionsService.canEnableAutoAnalysis([this.file], this.dossier); this.canEnableAutoAnalysis = this._permissionsService.canEnableAutoAnalysis([this.file], this.dossier);
this.showStatusBar = !this.file.isError && !this.file.isUnprocessed && this.isDossierOverviewList; this.showStatusBar = !this.file.isError && !this.file.isUnprocessed && this.isDossierOverviewList;

View File

@ -1,15 +1,27 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { UserService } from '@users/user.service'; import { UserService } from '@users/user.service';
import { DashboardStats, Dictionary, Dossier, DOSSIERS_ARCHIVE, DossierTemplate, File, IComment, IDossier } from '@red/domain'; import {
DashboardStats,
Dictionary,
Dossier,
DOSSIERS_ARCHIVE,
DossierTemplate,
File,
IComment,
IDossier,
ProcessingFileStatuses,
WorkflowFileStatuses,
} from '@red/domain';
import { FilesMapService } from '@services/files/files-map.service'; import { FilesMapService } from '@services/files/files-map.service';
import { FeaturesService } from '@services/features.service'; import { FeaturesService } from '@services/features.service';
import { IqserPermissionsService } from '@iqser/common-ui'; import { getConfig, IqserPermissionsService } from '@iqser/common-ui';
import { Roles } from '@users/roles'; import { Roles } from '@users/roles';
import { UserPreferenceService } from '@users/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { DossierDictionariesMapService } from '@services/entity-services/dossier-dictionaries-map.service'; import { DossierDictionariesMapService } from '@services/entity-services/dossier-dictionaries-map.service';
@Injectable({ providedIn: 'root' }) @Injectable({ providedIn: 'root' })
export class PermissionsService { export class PermissionsService {
readonly #isDocumine = getConfig().IS_DOCUMINE;
constructor( constructor(
private readonly _userService: UserService, private readonly _userService: UserService,
private readonly _filesMapService: FilesMapService, private readonly _filesMapService: FilesMapService,
@ -397,9 +409,13 @@ export class PermissionsService {
} }
#canEnableAutoAnalysis(file: File, dossier: Dossier): boolean { #canEnableAutoAnalysis(file: File, dossier: Dossier): boolean {
return ( const canEnable = dossier.isActive && this.isFileAssignee(file) && !file.isApproved && !!file.lastProcessed;
dossier.isActive && file.excludedFromAutomaticAnalysis && this.isFileAssignee(file) && !file.isApproved && !!file.lastProcessed
); if (this.#isDocumine) {
return canEnable && file.processingStatus === ProcessingFileStatuses.ERROR;
}
return canEnable && file.excludedFromAutomaticAnalysis;
} }
#canDisableAutoAnalysis(file: File, dossier: Dossier): boolean { #canDisableAutoAnalysis(file: File, dossier: Dossier): boolean {