RED-5273: load files when entering dossiers list
This commit is contained in:
parent
3a29cc4f2a
commit
bf015b28a2
@ -107,7 +107,9 @@ const routes: Routes = [
|
||||
pathMatch: 'full',
|
||||
loadChildren: () =>
|
||||
import('./modules/dossiers-listing/dossiers-listing.module').then(m => m.DossiersListingModule),
|
||||
data: { breadcrumbs: [BreadcrumbTypes.dossierTemplate] },
|
||||
data: {
|
||||
breadcrumbs: [BreadcrumbTypes.dossierTemplate],
|
||||
},
|
||||
},
|
||||
],
|
||||
canActivate: [CompositeRouteGuard],
|
||||
|
||||
@ -23,16 +23,31 @@ export class DossierFilesGuard implements CanActivate {
|
||||
const token: ProviderToken<DossiersService> = route.data.dossiersService;
|
||||
const dossiersService: DossiersService = this._injector.get<DossiersService>(token);
|
||||
|
||||
await firstValueFrom(this._dictionaryService.loadDossierDictionary(dossierTemplateId, dossierId));
|
||||
if (!dossierId && dossierTemplateId) {
|
||||
const dossiers = dossiersService.all.filter(dossier => dossier.dossierTemplateId === dossierTemplateId);
|
||||
await Promise.all(dossiers.map(dossier => this.loadDossierData(dossier.dossierId, dossierTemplateId)));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!dossiersService.has(dossierId)) {
|
||||
await this._router.navigate(['/main', dossierTemplateId]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!this._filesMapService.has(dossierId)) {
|
||||
await firstValueFrom(this._filesService.loadAll(dossierId));
|
||||
}
|
||||
await this.loadDossierData(dossierId, dossierTemplateId);
|
||||
return true;
|
||||
}
|
||||
|
||||
async loadDossierData(dossierId: string, dossierTemplateId: string) {
|
||||
const promises = [];
|
||||
|
||||
const dictionary$ = this._dictionaryService.loadDossierDictionary(dossierTemplateId, dossierId);
|
||||
promises.push(firstValueFrom(dictionary$));
|
||||
|
||||
if (!this._filesMapService.has(dossierId)) {
|
||||
promises.push(firstValueFrom(this._filesService.loadAll(dossierId)));
|
||||
}
|
||||
|
||||
return Promise.all(promises);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { CircleButtonTypes, List, ScrollableParentView, ScrollableParentViews, StatusBarConfig } from '@iqser/common-ui';
|
||||
import { CircleButtonTypes, ScrollableParentView, ScrollableParentViews } from '@iqser/common-ui';
|
||||
import { UserService } from '@users/user.service';
|
||||
import { Dossier, DossierStats, File } from '@red/domain';
|
||||
import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service';
|
||||
@ -8,7 +8,6 @@ import { LongPressEvent } from '@shared/directives/long-press.directive';
|
||||
import { UserPreferenceService } from '@users/user-preference.service';
|
||||
import { FilesMapService } from '@services/files/files-map.service';
|
||||
import { ReanalysisService } from '@services/reanalysis.service';
|
||||
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
|
||||
import { firstValueFrom } from 'rxjs';
|
||||
|
||||
@Component({
|
||||
@ -21,7 +20,6 @@ export class DossiersListingActionsComponent implements OnChanges {
|
||||
readonly currentUser = this._userService.currentUser;
|
||||
|
||||
analysisForced: boolean;
|
||||
statusBarConfig: List<StatusBarConfig<string>>;
|
||||
files: File[];
|
||||
displayReanalyseBtn = false;
|
||||
|
||||
@ -31,7 +29,6 @@ export class DossiersListingActionsComponent implements OnChanges {
|
||||
constructor(
|
||||
private readonly _reanalysisService: ReanalysisService,
|
||||
private readonly _userService: UserService,
|
||||
private readonly _activeDossiersService: ActiveDossiersService,
|
||||
readonly permissionsService: PermissionsService,
|
||||
readonly filesMapService: FilesMapService,
|
||||
private readonly _dialogService: DossiersDialogService,
|
||||
|
||||
@ -20,13 +20,16 @@ import { TableItemComponent } from './components/table-item/table-item.component
|
||||
import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module';
|
||||
import { DossierWorkloadColumnComponent } from './components/dossier-workload-column/dossier-workload-column.component';
|
||||
import { DossierDocumentsStatusComponent } from './components/dossier-documents-status/dossier-documents-status.component';
|
||||
import { DossierFilesGuard } from '@guards/dossier-files-guard';
|
||||
import { ACTIVE_DOSSIERS_SERVICE } from '../../tokens';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
component: DossiersListingScreenComponent,
|
||||
pathMatch: 'full',
|
||||
data: { reuse: true },
|
||||
canActivate: [DossierFilesGuard],
|
||||
data: { reuse: true, dossiersService: ACTIVE_DOSSIERS_SERVICE },
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user