From 4220904cbcd15517ad0c06ed048b85dc3391e169 Mon Sep 17 00:00:00 2001 From: Daniel Appelgren Date: Thu, 14 Oct 2021 08:03:47 +0200 Subject: [PATCH] =?UTF-8?q?feature(deltagare):=20G=C3=A5r=20man=20bak?= =?UTF-8?q?=C3=A5t=20n=C3=A4r=20man=20=C3=A4r=20under=20deltagare=20s?= =?UTF-8?q?=C3=A5=20hamnar=20man=20p=C3=A5=20samma=20flik.=20(TV-746)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Squashed commit of the following: commit 564f851551957276d2b89ab38da1d15bddc5fb12 Author: Daniel Appelgren Date: Wed Oct 13 16:04:27 2021 +0200 Fixed comments commit 083210ef03697bc864b73d0dd69acf5c51dbd1cc Merge: f9b46d87 bdb1d161 Author: Daniel Appelgren Date: Wed Oct 13 14:00:24 2021 +0200 Merge branch 'develop' into feature/TV-746-ga-bakat-flikar-deltagarkort commit f9b46d87d8ac92acb000cd1d73a7a27a7e51ca3e Author: Daniel Appelgren Date: Wed Oct 13 14:00:18 2021 +0200 make fetch methods into properties instead commit 00c6cff90a8c193b22dc722decd13bc9849e66db Author: Daniel Appelgren Date: Wed Oct 13 13:54:35 2021 +0200 unsubscribe commit 7161597851a867d510dc510caf8830378abfceeb Author: Daniel Appelgren Date: Wed Oct 13 13:51:17 2021 +0200 move genomforandeReferens$ to service commit 7676d72593b3f930aa108c294664a6293c5d1fbd Author: Daniel Appelgren Date: Tue Oct 12 10:53:34 2021 +0200 Moved activeTab to service and added init-active-tab to read from service --- .../deltagare-card.component.html | 13 ++- .../deltagare-card.component.ts | 73 +++++--------- .../deltagare-card/deltagare-card.service.ts | 97 ++++++++++++------- 3 files changed, 96 insertions(+), 87 deletions(-) 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); } }