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',
|
pathMatch: 'full',
|
||||||
loadChildren: () =>
|
loadChildren: () =>
|
||||||
import('./modules/dossiers-listing/dossiers-listing.module').then(m => m.DossiersListingModule),
|
import('./modules/dossiers-listing/dossiers-listing.module').then(m => m.DossiersListingModule),
|
||||||
data: { breadcrumbs: [BreadcrumbTypes.dossierTemplate] },
|
data: {
|
||||||
|
breadcrumbs: [BreadcrumbTypes.dossierTemplate],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
canActivate: [CompositeRouteGuard],
|
canActivate: [CompositeRouteGuard],
|
||||||
|
|||||||
@ -23,16 +23,31 @@ export class DossierFilesGuard implements CanActivate {
|
|||||||
const token: ProviderToken<DossiersService> = route.data.dossiersService;
|
const token: ProviderToken<DossiersService> = route.data.dossiersService;
|
||||||
const dossiersService: DossiersService = this._injector.get<DossiersService>(token);
|
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)) {
|
if (!dossiersService.has(dossierId)) {
|
||||||
await this._router.navigate(['/main', dossierTemplateId]);
|
await this._router.navigate(['/main', dossierTemplateId]);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this._filesMapService.has(dossierId)) {
|
await this.loadDossierData(dossierId, dossierTemplateId);
|
||||||
await firstValueFrom(this._filesService.loadAll(dossierId));
|
|
||||||
}
|
|
||||||
return true;
|
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 { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';
|
||||||
import { PermissionsService } from '@services/permissions.service';
|
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 { UserService } from '@users/user.service';
|
||||||
import { Dossier, DossierStats, File } from '@red/domain';
|
import { Dossier, DossierStats, File } from '@red/domain';
|
||||||
import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service';
|
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 { UserPreferenceService } from '@users/user-preference.service';
|
||||||
import { FilesMapService } from '@services/files/files-map.service';
|
import { FilesMapService } from '@services/files/files-map.service';
|
||||||
import { ReanalysisService } from '@services/reanalysis.service';
|
import { ReanalysisService } from '@services/reanalysis.service';
|
||||||
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
|
|
||||||
import { firstValueFrom } from 'rxjs';
|
import { firstValueFrom } from 'rxjs';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@ -21,7 +20,6 @@ export class DossiersListingActionsComponent implements OnChanges {
|
|||||||
readonly currentUser = this._userService.currentUser;
|
readonly currentUser = this._userService.currentUser;
|
||||||
|
|
||||||
analysisForced: boolean;
|
analysisForced: boolean;
|
||||||
statusBarConfig: List<StatusBarConfig<string>>;
|
|
||||||
files: File[];
|
files: File[];
|
||||||
displayReanalyseBtn = false;
|
displayReanalyseBtn = false;
|
||||||
|
|
||||||
@ -31,7 +29,6 @@ export class DossiersListingActionsComponent implements OnChanges {
|
|||||||
constructor(
|
constructor(
|
||||||
private readonly _reanalysisService: ReanalysisService,
|
private readonly _reanalysisService: ReanalysisService,
|
||||||
private readonly _userService: UserService,
|
private readonly _userService: UserService,
|
||||||
private readonly _activeDossiersService: ActiveDossiersService,
|
|
||||||
readonly permissionsService: PermissionsService,
|
readonly permissionsService: PermissionsService,
|
||||||
readonly filesMapService: FilesMapService,
|
readonly filesMapService: FilesMapService,
|
||||||
private readonly _dialogService: DossiersDialogService,
|
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 { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module';
|
||||||
import { DossierWorkloadColumnComponent } from './components/dossier-workload-column/dossier-workload-column.component';
|
import { DossierWorkloadColumnComponent } from './components/dossier-workload-column/dossier-workload-column.component';
|
||||||
import { DossierDocumentsStatusComponent } from './components/dossier-documents-status/dossier-documents-status.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 = [
|
const routes: Routes = [
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
component: DossiersListingScreenComponent,
|
component: DossiersListingScreenComponent,
|
||||||
pathMatch: 'full',
|
pathMatch: 'full',
|
||||||
data: { reuse: true },
|
canActivate: [DossierFilesGuard],
|
||||||
|
data: { reuse: true, dossiersService: ACTIVE_DOSSIERS_SERVICE },
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user