RED-5898: Re-use dossier actions on archived dossiers listing

This commit is contained in:
Adina Țeudan 2023-01-17 06:23:17 +02:00
parent 6c24ab99c5
commit c351e3d809
10 changed files with 22 additions and 49 deletions

View File

@ -11,7 +11,13 @@ const routes: Routes = [
path: '',
pathMatch: 'full',
component: ArchivedDossiersScreenComponent,
data: { breadcrumbs: [BreadcrumbTypes.dossierTemplate] },
canActivate: [CompositeRouteGuard],
data: {
routeGuards: [DossierFilesGuard],
breadcrumbs: [BreadcrumbTypes.dossierTemplate],
reuse: true,
dossiersService: ARCHIVED_DOSSIERS_SERVICE,
},
},
{
path: `:${DOSSIER_ID}`,

View File

@ -3,7 +3,7 @@
</div>
<div class="cell">
<span class="small-label">{{ dossier.archivedTime | date: 'd MMM yyyy' }}</span>
<span class="small-label">{{ dossier.archivedTime | date : 'd MMM yyyy' }}</span>
</div>
<div class="cell user-column">
@ -13,20 +13,5 @@
<div class="cell">
<redaction-dossier-state [dossier]="dossier"></redaction-dossier-state>
<div class="action-buttons">
<iqser-circle-button
(action)="openEditDossierDialog($event, dossier.id)"
*allow="roles.dossiers.read; if: currentUser.isUser"
[icon]="(permissionsService.has$(roles.dossiers.edit) | async) && currentUser.isManager ? 'iqser:edit' : 'red:info'"
[iqserHelpMode]="'edit_dossier_dossier_info'"
[scrollableParentView]="scrollableParentView"
[tooltip]="
((permissionsService.has$(roles.dossiers.edit) | async) && currentUser.isManager
? 'dossier-listing.edit.action'
: 'dossier-listing.dossier-info.action'
) | translate
"
[type]="circleButtonTypes.dark"
></iqser-circle-button>
</div>
<redaction-dossiers-listing-actions [dossier]="dossier"></redaction-dossiers-listing-actions>
</div>

View File

@ -1,11 +1,8 @@
import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';
import { Dossier, DossierStats, User } from '@red/domain';
import { Dossier, DossierStats } from '@red/domain';
import { BehaviorSubject, Observable } from 'rxjs';
import { DossierStatsService } from '@services/dossiers/dossier-stats.service';
import { switchMap } from 'rxjs/operators';
import { CircleButtonTypes, getCurrentUser, IqserPermissionsService, ScrollableParentView, ScrollableParentViews } from '@iqser/common-ui';
import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service';
import { ROLES } from '@users/roles';
@Component({
selector: 'redaction-table-item [dossier]',
@ -13,33 +10,17 @@ import { ROLES } from '@users/roles';
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class TableItemComponent implements OnChanges {
readonly circleButtonTypes = CircleButtonTypes;
readonly roles = ROLES;
readonly currentUser = getCurrentUser<User>();
@Input() dossier!: Dossier;
readonly stats$: Observable<DossierStats>;
readonly #ngOnChanges$ = new BehaviorSubject<string>(undefined);
constructor(
readonly dossierStatsService: DossierStatsService,
readonly permissionsService: IqserPermissionsService,
private readonly _dialogService: DossiersDialogService,
) {
constructor(readonly dossierStatsService: DossierStatsService) {
this.stats$ = this.#ngOnChanges$.pipe(switchMap(dossierId => this.dossierStatsService.watch$(dossierId)));
}
get scrollableParentView(): ScrollableParentView {
return ScrollableParentViews.VIRTUAL_SCROLL;
}
ngOnChanges() {
if (this.dossier) {
this.#ngOnChanges$.next(this.dossier.id);
}
}
openEditDossierDialog($event: MouseEvent, dossierId: string): void {
this._dialogService.openDialog('editDossier', $event, { dossierId });
}
}

View File

@ -22,6 +22,6 @@
<div class="cell">
<redaction-dossier-state [dossier]="dossier"></redaction-dossier-state>
<redaction-dossiers-listing-actions [dossier]="dossier" [stats]="stats"></redaction-dossiers-listing-actions>
<redaction-dossiers-listing-actions [dossier]="dossier"></redaction-dossiers-listing-actions>
</div>
</ng-container>

View File

@ -1,6 +1,7 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import {
CompositeRouteGuard,
IqserButtonsModule,
IqserHelpModeModule,
IqserIconsModule,
@ -14,7 +15,6 @@ import {
import { TranslateModule } from '@ngx-translate/core';
import { DossiersListingScreenComponent } from './screen/dossiers-listing-screen.component';
import { RouterModule, Routes } from '@angular/router';
import { DossiersListingActionsComponent } from './components/dossiers-listing-actions/dossiers-listing-actions.component';
import { SharedModule } from '@shared/shared.module';
import { DossiersListingDetailsComponent } from './components/dossiers-listing-details/dossiers-listing-details.component';
import { ConfigService } from './config.service';
@ -30,15 +30,14 @@ const routes: Routes = [
path: '',
component: DossiersListingScreenComponent,
pathMatch: 'full',
canActivate: [DossierFilesGuard],
data: { reuse: true, dossiersService: ACTIVE_DOSSIERS_SERVICE },
canActivate: [CompositeRouteGuard],
data: { guards: [DossierFilesGuard], reuse: true, dossiersService: ACTIVE_DOSSIERS_SERVICE },
},
];
@NgModule({
declarations: [
DossiersListingScreenComponent,
DossiersListingActionsComponent,
DossiersListingDetailsComponent,
DossierWorkloadColumnComponent,
TableItemComponent,

View File

@ -1,8 +1,8 @@
import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';
import { PermissionsService } from '@services/permissions.service';
import { CircleButtonTypes, getCurrentUser, IqserPermissionsService, ScrollableParentView, ScrollableParentViews } from '@iqser/common-ui';
import { Dossier, DossierStats, File, User } from '@red/domain';
import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service';
import { Dossier, File, User } from '@red/domain';
import { DossiersDialogService } from '../../services/dossiers-dialog.service';
import { LongPressEvent } from '@shared/directives/long-press.directive';
import { UserPreferenceService } from '@users/user-preference.service';
import { FilesMapService } from '@services/files/files-map.service';
@ -11,7 +11,7 @@ import { firstValueFrom } from 'rxjs';
import { ROLES } from '@users/roles';
@Component({
selector: 'redaction-dossiers-listing-actions',
selector: 'redaction-dossiers-listing-actions [dossier]',
templateUrl: './dossiers-listing-actions.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
})
@ -25,7 +25,6 @@ export class DossiersListingActionsComponent implements OnChanges {
displayReanalyseBtn = false;
@Input() dossier: Dossier;
@Input() stats: DossierStats;
constructor(
private readonly _reanalysisService: ReanalysisService,

View File

@ -24,6 +24,7 @@ import {
IqserUsersModule,
} from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
import { DossiersListingActionsComponent } from './components/dossiers-listing-actions/dossiers-listing-actions.component';
const components = [
FileActionsComponent,
@ -34,6 +35,7 @@ const components = [
EditDossierTeamComponent,
FileActionsComponent,
DateColumnComponent,
DossiersListingActionsComponent,
];
const dialogs = [EditDossierDialogComponent, AssignReviewerApproverDialogComponent, DictionaryDetailsDialogComponent];
const services = [DossiersDialogService, FileAssignService];

View File

@ -65,6 +65,7 @@ export class PermissionsService {
displayReanalyseBtn(dossier: Dossier): boolean {
return (
dossier.isActive &&
this._iqserPermissionsService.has(ROLES.dossiers.reanalyze) &&
this.isApprover(dossier) &&
!!this._filesMapService.get(dossier.id).find(f => f.analysisRequired)

@ -1 +1 @@
Subproject commit c91f923bfa7f138fc865b6576fb8398ae0ac2e8f
Subproject commit f98109ca45147960805d1ddf28acc59fb50e4955