From 780976243a1a02a2d4e9d279eb43ad668c54f2dc Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Sun, 24 Nov 2024 13:46:05 +0200 Subject: [PATCH] RED-10509: disabled stopPropagation when editing file attribute. --- ...ssier-overview-screen-header.component.html | 6 +++++- ...dossier-overview-screen-header.component.ts | 18 +++++++++--------- .../modules/dossier-overview/config.service.ts | 7 +++++-- libs/common-ui | 2 +- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.html b/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.html index 9ffab710e..5c26652bb 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.html +++ b/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.html @@ -1,6 +1,6 @@ @@ -21,6 +22,7 @@ [attr.help-mode-key]="'download_csv'" [disabled]="listingService.areSomeSelected$ | async" [icon]="'iqser:csv'" + [iqserDisableStopPropagation]="shouldDisableStopPropagation()" [tooltip]="'dossier-overview.header-actions.download-csv' | translate" > @@ -29,6 +31,7 @@ *ngIf="permissionsService.displayReanalyseBtn(dossier())" [disabled]="(listingService.areSomeSelected$ | async) || areRulesLocked()" [icon]="'iqser:refresh'" + [iqserDisableStopPropagation]="shouldDisableStopPropagation()" [tooltipClass]="'small warn'" [tooltip]=" (areRulesLocked() ? 'dossier-listing.rules.timeoutError' : 'dossier-overview.new-rule.toast.actions.reanalyse-all') @@ -43,6 +46,7 @@ [attr.help-mode-key]="'upload_document'" [buttonId]="'upload-document-btn'" [icon]="'iqser:upload'" + [iqserDisableStopPropagation]="shouldDisableStopPropagation()" [tooltip]="'dossier-overview.header-actions.upload-document' | translate" [type]="circleButtonTypes.primary" class="ml-14" diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.ts b/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.ts index c8e9b41ab..7c9a990dd 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.ts +++ b/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.ts @@ -1,6 +1,5 @@ -import { ChangeDetectionStrategy, Component, computed, EventEmitter, input, OnInit, Output } from '@angular/core'; +import { ChangeDetectionStrategy, Component, computed, EventEmitter, input, Output } from '@angular/core'; import { - ActionConfig, CircleButtonComponent, CircleButtonTypes, DisableStopPropagationDirective, @@ -23,12 +22,14 @@ import { PrimaryFileAttributeService } from '@services/primary-file-attribute.se import { Router } from '@angular/router'; import { Roles } from '@users/roles'; import { SortingService } from '@iqser/common-ui/lib/sorting'; -import { List, some } from '@iqser/common-ui/lib/utils'; +import { some } from '@iqser/common-ui/lib/utils'; import { AsyncPipe, NgIf } from '@angular/common'; import { TranslateModule } from '@ngx-translate/core'; import { FileDownloadBtnComponent } from '@shared/components/buttons/file-download-btn/file-download-btn.component'; import { ViewModeSelectionComponent } from '../view-mode-selection/view-mode-selection.component'; import { RulesService } from '../../../admin/services/rules.service'; +import { toSignal } from '@angular/core/rxjs-interop'; +import { FileAttributesService } from '@services/entity-services/file-attributes.service'; @Component({ selector: 'redaction-dossier-overview-screen-header [dossier] [upload]', @@ -46,18 +47,20 @@ import { RulesService } from '../../../admin/services/rules.service'; ], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class DossierOverviewScreenHeaderComponent implements OnInit { +export class DossierOverviewScreenHeaderComponent { readonly dossier = input(); @Output() readonly upload = new EventEmitter(); readonly circleButtonTypes = CircleButtonTypes; readonly roles = Roles; - actionConfigs: List; readonly downloadFilesDisabled$: Observable; readonly downloadComponentLogsDisabled$: Observable; readonly isDocumine = getConfig().IS_DOCUMINE; + readonly areSomeSelected = toSignal(this.listingService.areSomeSelected$); + readonly actionConfigs = computed(() => this.configService.actionConfig(this.dossier().id, this.areSomeSelected())); readonly areRulesLocked = computed(() => { return this._rulesService.currentTemplateRules().timeoutDetected; }); + readonly shouldDisableStopPropagation = computed(() => this._fileAttributesService.isEditingFileAttribute()); constructor( private readonly _toaster: Toaster, @@ -72,6 +75,7 @@ export class DossierOverviewScreenHeaderComponent implements OnInit { private readonly _loadingService: LoadingService, private readonly _primaryFileAttributeService: PrimaryFileAttributeService, private readonly _rulesService: RulesService, + private readonly _fileAttributesService: FileAttributesService, ) { const someNotProcessed$ = this.entitiesService.all$.pipe(some(file => !file.lastProcessed)); this.downloadFilesDisabled$ = combineLatest([this.listingService.areSomeSelected$, someNotProcessed$]).pipe( @@ -82,10 +86,6 @@ export class DossierOverviewScreenHeaderComponent implements OnInit { ); } - ngOnInit() { - this.actionConfigs = this.configService.actionConfig(this.dossier().id, this.listingService.areSomeSelected$); - } - async reanalyseDossier() { this._loadingService.start(); const rules = await firstValueFrom(this._rulesService.getFor(this.dossier().dossierTemplateId)); diff --git a/apps/red-ui/src/app/modules/dossier-overview/config.service.ts b/apps/red-ui/src/app/modules/dossier-overview/config.service.ts index b74de56a6..1bdc341ad 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/config.service.ts +++ b/apps/red-ui/src/app/modules/dossier-overview/config.service.ts @@ -47,6 +47,7 @@ import { annotationFilterChecker, RedactionFilterSorter, sortArray, sortByName } import { EditDossierDialogComponent } from '../shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-dialog.component'; import { DossiersDialogService } from '../shared-dossiers/services/dossiers-dialog.service'; import { BulkActionsService } from './services/bulk-actions.service'; +import { FileAttributesService } from '@services/entity-services/file-attributes.service'; @Injectable() export class ConfigService { @@ -68,6 +69,7 @@ export class ConfigService { private readonly _userPreferenceService: UserPreferenceService, private readonly _dossiersService: DossiersService, private readonly _iqserPermissionsService: IqserPermissionsService, + private readonly _fileAttributesService: FileAttributesService, ) { const previousListingMode = this._userPreferenceService.getFilesListingMode(); const listingMode = previousListingMode ? previousListingMode : ListingModes.table; @@ -113,7 +115,7 @@ export class ConfigService { }; } - actionConfig(dossierId: string, disabled$: Observable): List { + actionConfig(dossierId: string, disabled: boolean): List { return [ { id: 'editDossier', @@ -122,7 +124,8 @@ export class ConfigService { icon: 'iqser:edit', hide: !this.#currentUser.isManager && !this._iqserPermissionsService.has(Roles.dossiers.edit), helpModeKey: 'edit_dossier', - disabled$, + disableStopPropagation: this._fileAttributesService.isEditingFileAttribute(), + disabled, }, ]; } diff --git a/libs/common-ui b/libs/common-ui index 7c6f9fc25..ae0eebcc6 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 7c6f9fc25e499a7b58bc38a5a59f704c8eac758b +Subproject commit ae0eebcc6feceba4fe5c930d79eadd9b9a60b7e9