RED-5273: load files when entering dossiers list

This commit is contained in:
Dan Percic 2022-10-12 01:09:37 +03:00
parent 3a29cc4f2a
commit bf015b28a2
4 changed files with 27 additions and 10 deletions

View File

@ -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],

View File

@ -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);
}
}

View File

@ -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,

View File

@ -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 },
},
];