diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/deltagare-card.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/deltagare-card.component.html
index 630b053..1fd1079 100644
--- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/deltagare-card.component.html
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/deltagare-card.component.html
@@ -6,9 +6,12 @@
Tillbaka till deltagarlistan
{{contactInformation.fullName }}
-
+
= this.deltagareCardService.activeTab$;
+
private _reportsParams$ = new BehaviorSubject({ page: 1, limit: 20 });
private _activeFeatures: Feature[] = environment.activeFeatures;
- private _activeTab$ = new BehaviorSubject('0');
- activeTab$: Observable = this._activeTab$.asObservable();
private _userRoles: Role[] = this.userService.userRolesSnapshot;
- currentGenomforandeReferens$: Observable = this.activatedRoute.params.pipe(
- map(params => params.genomforandeReferens as string),
- distinctUntilChanged(
- ([prevGenomforandeReferens], [currGenomforandeReferens]) => prevGenomforandeReferens === currGenomforandeReferens
- ),
- map(genomforandeReferens => +genomforandeReferens)
- );
- contactInformation$: Observable = this.currentGenomforandeReferens$.pipe(
- switchMap(genomforandeReferens => this.deltagareCardService.fetchContactInformation$(genomforandeReferens)),
- shareReplay(1)
- );
- avropInformation$: Observable = this.currentGenomforandeReferens$.pipe(
- switchMap(genomforandeReferens => this.deltagareCardService.fetchAvropInformation$(genomforandeReferens)),
- shareReplay(1)
- );
- workExperiences$: Observable = this.currentGenomforandeReferens$.pipe(
- switchMap(genomforandeReferens => this.deltagareCardService.fetchWorkExperiences$(genomforandeReferens)),
- shareReplay(1)
- );
- highestEducation$: Observable = this.currentGenomforandeReferens$.pipe(
- switchMap(genomforandeReferens => this.deltagareCardService.fetchHighestEducation$(genomforandeReferens)),
- shareReplay(1)
- );
- educations$: Observable = this.currentGenomforandeReferens$.pipe(
- switchMap(genomforandeReferens => this.deltagareCardService.fetchEducations$(genomforandeReferens)),
- shareReplay(1)
- );
- driversLicense$: Observable = this.currentGenomforandeReferens$.pipe(
- switchMap(genomforandeReferens => this.deltagareCardService.fetchDriversLicense$(genomforandeReferens)),
- shareReplay(1)
- );
- workLanguages$: Observable = this.currentGenomforandeReferens$.pipe(
- switchMap(genomforandeReferens => this.deltagareCardService.fetchWorkLanguages$(genomforandeReferens)),
- shareReplay(1)
- );
- disabilities$: Observable = this.currentGenomforandeReferens$.pipe(
- switchMap(genomforandeReferens => this.deltagareCardService.fetchDisabilities$(genomforandeReferens)),
- shareReplay(1)
- );
+ contactInformation$: Observable = this.deltagareCardService.contactInformation$;
+ avropInformation$: Observable = this.deltagareCardService.avropInformation$;
+ workExperiences$: Observable = this.deltagareCardService.workExperiences$;
+ highestEducation$: Observable = this.deltagareCardService.highestEducation$;
+ educations$: Observable = this.deltagareCardService.educations$;
+ driversLicense$: Observable = this.deltagareCardService.driversLicense$;
+ workLanguages$: Observable = this.deltagareCardService.workLanguages$;
+ disabilities$: Observable = this.deltagareCardService.disabilities$;
availableHandledare$: Observable = this.avropInformation$.pipe(
filter(() => !!this.handledarePickerVisible),
distinctUntilChanged((prevAvrop, currAvrop) => prevAvrop.id === currAvrop.id),
switchMap(avropInformation => this.handledareService.fetchAvailableHandledare$([avropInformation.id]))
);
- reportsData$: Observable = combineLatest([this._reportsParams$, this.currentGenomforandeReferens$]).pipe(
- switchMap(([params, genomforandeReferens]) =>
- this.deltagareCardService.fetchReports$(genomforandeReferens, params)
- ),
+ reportsData$: Observable = this._reportsParams$.pipe(
+ switchMap(params => this.deltagareCardService.fetchReports$(params)),
shareReplay(1)
);
tab0Loading$: Observable = combineLatest([this.contactInformation$, this.avropInformation$]).pipe(
@@ -113,7 +81,14 @@ export class DeltagareCardComponent {
private deltagareCardService: DeltagareCardService,
private handledareService: HandledareService,
private userService: UserService
- ) { }
+ ) {
+ super();
+ super.unsubscribeOnDestroy(
+ this.activatedRoute.params.subscribe(params => {
+ this.deltagareCardService.setGenomforandereferens(params.genomforandeReferens as string);
+ })
+ );
+ }
get deltagareTjanstVisible(): boolean {
return this._userRoles?.some(
@@ -143,8 +118,8 @@ export class DeltagareCardComponent {
);
}
- setActiveTab(tab: number): void {
- this._activeTab$.next(tab.toString());
+ setActiveTab(tabId: string): void {
+ this.deltagareCardService.setActiveTab(tabId);
}
setNewPage(page: number): void {
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/deltagare-card.service.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/deltagare-card.service.ts
index 8442133..96c0094 100644
--- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/deltagare-card.service.ts
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/deltagare-card.service.ts
@@ -10,50 +10,81 @@ import { ReportsData } from '@msfa-models/report.model';
import { WorkExperience } from '@msfa-models/work-experience.model';
import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service';
import { HandledareService } from '@msfa-services/handledare.service';
-import { Observable } from 'rxjs';
-import { mapTo, switchMap } from 'rxjs/operators';
+import { BehaviorSubject, combineLatest, Observable } from 'rxjs';
+import { filter, map, mapTo, shareReplay, switchMap } from 'rxjs/operators';
@Injectable()
export class DeltagareCardService {
+ private _activeTab$ = new BehaviorSubject('0');
+ activeTab$: Observable = this._activeTab$.asObservable();
+
+ private _genomforandeReferensFromParams$ = new BehaviorSubject(null);
+
+ currentGenomforandeReferens$: Observable = this._genomforandeReferensFromParams$.pipe(
+ filter(gr => !!gr),
+ map(genomforandeReferens => +genomforandeReferens)
+ );
avropNeedsUpdate$: Observable = this.handledareService.lastSavedHandledare$.pipe(mapTo(undefined as void));
+ contactInformation$: Observable = this.currentGenomforandeReferens$.pipe(
+ switchMap(genomforandeReferens => this.deltagareApiService.fetchContactInformation$(genomforandeReferens)),
+ shareReplay(1)
+ );
+
+ avropInformation$: Observable = combineLatest([
+ this.currentGenomforandeReferens$,
+ this.avropNeedsUpdate$,
+ ]).pipe(
+ switchMap(([genomforandeReferens]) => this.deltagareApiService.fetchAvropInformation$(genomforandeReferens)),
+ shareReplay(1)
+ );
+
+ workExperiences$: Observable = this.currentGenomforandeReferens$.pipe(
+ switchMap(genomforandeReferens => this.deltagareApiService.fetchWorkExperiences$(genomforandeReferens)),
+ shareReplay(1)
+ );
+
+ highestEducation$: Observable = this.currentGenomforandeReferens$.pipe(
+ switchMap(genomforandeReferens => this.deltagareApiService.fetchHighestEducation$(genomforandeReferens)),
+ shareReplay(1)
+ );
+
+ educations$: Observable = this.currentGenomforandeReferens$.pipe(
+ switchMap(genomforandeReferens => this.deltagareApiService.fetchEducations$(genomforandeReferens)),
+ shareReplay(1)
+ );
+
+ driversLicense$: Observable = this.currentGenomforandeReferens$.pipe(
+ switchMap(genomforandeReferens => this.deltagareApiService.fetchDriversLicense$(genomforandeReferens)),
+ shareReplay(1)
+ );
+
+ workLanguages$: Observable = this.currentGenomforandeReferens$.pipe(
+ switchMap(genomforandeReferens => this.deltagareApiService.fetchWorkLanguages$(genomforandeReferens)),
+ shareReplay(1)
+ );
+
+ disabilities$: Observable = this.currentGenomforandeReferens$.pipe(
+ switchMap(genomforandeReferens => this.deltagareApiService.fetchDisabilities$(genomforandeReferens)),
+ shareReplay(1)
+ );
+
constructor(private deltagareApiService: DeltagareApiService, private handledareService: HandledareService) {}
- public fetchContactInformation$(genomforandeReferens: number): Observable {
- return this.deltagareApiService.fetchContactInformation$(genomforandeReferens);
+ setGenomforandereferens(genomforandeReferens: string) {
+ if (genomforandeReferens !== this._genomforandeReferensFromParams$.value) {
+ this._genomforandeReferensFromParams$.next(genomforandeReferens);
+ this.setActiveTab('0');
+ }
}
- public fetchAvropInformation$(genomforandeReferens: number): Observable {
- return this.avropNeedsUpdate$.pipe(
- switchMap(() => this.deltagareApiService.fetchAvropInformation$(genomforandeReferens))
+ fetchReports$(params: PaginationParams): Observable {
+ return this.currentGenomforandeReferens$.pipe(
+ switchMap(genomforandeReferens => this.deltagareApiService.fetchReports$(genomforandeReferens, params))
);
}
- public fetchWorkExperiences$(genomforandeReferens: number): Observable {
- return this.deltagareApiService.fetchWorkExperiences$(genomforandeReferens);
- }
-
- public fetchHighestEducation$(genomforandeReferens: number): Observable {
- return this.deltagareApiService.fetchHighestEducation$(genomforandeReferens);
- }
-
- public fetchEducations$(genomforandeReferens: number): Observable {
- return this.deltagareApiService.fetchEducations$(genomforandeReferens);
- }
-
- public fetchDriversLicense$(genomforandeReferens: number): Observable {
- return this.deltagareApiService.fetchDriversLicense$(genomforandeReferens);
- }
-
- public fetchWorkLanguages$(genomforandeReferens: number): Observable {
- return this.deltagareApiService.fetchWorkLanguages$(genomforandeReferens);
- }
-
- public fetchDisabilities$(genomforandeReferens: number): Observable {
- return this.deltagareApiService.fetchDisabilities$(genomforandeReferens);
- }
-
- public fetchReports$(genomforandeReferens: number, params: PaginationParams): Observable {
- return this.deltagareApiService.fetchReports$(genomforandeReferens, params);
+ setActiveTab(tabId: string): void {
+ this._activeTab$.next(tabId);
}
}