From 6d94f321ab28d472385b6d8d5f5356d3a9b0c514 Mon Sep 17 00:00:00 2001 From: Daniel Appelgren Date: Fri, 29 Oct 2021 08:54:56 +0200 Subject: [PATCH] feature/Refactor report tabs into smart components Squashed commit of the following: commit c06e423c1df39d653150d58439d0fabb268f1ff7 Merge: 4395b97f cc22c5cd Author: Erik Tiekstra Date: Fri Oct 29 08:28:47 2021 +0200 Merged develop and fixed conflicts commit 4395b97fdc50f6f5c4bb2e20444031cde230ca5b Author: Erik Tiekstra Date: Fri Oct 29 08:15:53 2021 +0200 Updated loading inside deltagare-tabs commit 84e9bf4730d1f996e9acf8c624de775e12889c18 Author: Daniel Appelgren Date: Thu Oct 28 21:45:50 2021 +0200 cleanup commit c3044cc7f6701e4cf35f9efdb39c310a6a49aa97 Author: Daniel Appelgren Date: Thu Oct 28 21:41:27 2021 +0200 cleanup commit f56b2827bf3df9d372e5141442153de70e13a6e4 Author: Daniel Appelgren Date: Thu Oct 28 16:56:39 2021 +0200 reformat commit f41dda3445dc6489374f882ef7845078f365836a Author: Daniel Appelgren Date: Thu Oct 28 16:53:13 2021 +0200 make report tabs into smart components --- .../deltagare-tab-experiences.component.html | 22 +++--- .../deltagare-tab-experiences.component.scss | 4 ++ .../deltagare-tab-experiences.component.ts | 68 ++++++++++++++++--- ...re-tab-personal-information.component.html | 12 ++-- ...re-tab-personal-information.component.scss | 4 ++ ...gare-tab-personal-information.component.ts | 22 +++++- .../deltagare-tab-reports.component.html | 4 +- .../deltagare-tab-reports.component.ts | 30 ++++++-- ...e-tab-sensitive-information.component.html | 11 +-- ...e-tab-sensitive-information.component.scss | 4 ++ ...are-tab-sensitive-information.component.ts | 40 +++++++++-- .../deltagare-card.component.html | 53 ++++----------- .../deltagare-card.component.ts | 67 ++---------------- .../deltagare-card/deltagare-card.service.ts | 66 +++--------------- .../avvikelse-report-form.component.html | 6 +- .../informativ-rapport-form.component.html | 2 +- .../periodisk-redovisning-form.component.html | 2 +- ...agare-list-handelser-dialog.component.html | 10 ++- ...ltagare-list-handelser-dialog.component.ts | 6 +- .../deltagare-list-table.component.html | 2 +- .../deltagare-list/deltagare-list.module.ts | 8 ++- .../services/deltagare-handelser.service.ts | 9 +-- 22 files changed, 227 insertions(+), 225 deletions(-) diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-experiences/deltagare-tab-experiences.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-experiences/deltagare-tab-experiences.component.html index 33363eb..448afde 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-experiences/deltagare-tab-experiences.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-experiences/deltagare-tab-experiences.component.html @@ -1,8 +1,9 @@ -
-
+
+

Arbetslivserfarenhet

-
    -
  • + +
      +
    • {{ workExperience.employer }}

      -
      @@ -14,13 +15,13 @@ class="deltagare-tab-experiences__accordion" [afExpanded]="accordionExpanded" (click)="toggleAccordionExpanded()" - *ngIf="hiddenWorkExperiences?.length" + *ngIf="hiddenWorkExperiences(workExperiences)?.length" > {{ accordionExpanded ? 'Dölj' : 'Visa' }} fler arbetsgivare
        -
      • +
      • {{ workExperience.employer }}

        -
        @@ -34,13 +35,13 @@

        Utbildning

        Högsta utbildningsnivå:
        -
        +
        {{ highestEducation.level.description }}: {{ highestEducation.sunKod.description }}
        - +

        Utbildningar:

        @@ -56,7 +57,7 @@
-
+

Körkort

Har körkort
@@ -74,3 +75,6 @@ Info saknas + + + diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-experiences/deltagare-tab-experiences.component.scss b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-experiences/deltagare-tab-experiences.component.scss index fb6b80c..520a25a 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-experiences/deltagare-tab-experiences.component.scss +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-experiences/deltagare-tab-experiences.component.scss @@ -8,6 +8,10 @@ flex-basis: 0; } + &__loader { + flex-grow: 1; + } + &__subheading { font-size: var(--digi--typography--font-size--desktop); font-weight: var(--digi--typography--font-weight--semibold); diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-experiences/deltagare-tab-experiences.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-experiences/deltagare-tab-experiences.component.ts index 771858b..09474b3 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-experiences/deltagare-tab-experiences.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-experiences/deltagare-tab-experiences.component.ts @@ -1,8 +1,14 @@ -import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; import { DriversLicense } from '@msfa-models/drivers-license.model'; import { Education } from '@msfa-models/education.model'; import { HighestEducation } from '@msfa-models/highest-education.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 { combineLatest, Observable } from 'rxjs'; +import { map, shareReplay, startWith, switchMap } from 'rxjs/operators'; +import { DeltagareCardService } from '../../deltagare-card.service'; @Component({ selector: 'msfa-deltagare-tab-experiences', @@ -11,22 +17,64 @@ import { WorkExperience } from '@msfa-models/work-experience.model'; changeDetection: ChangeDetectionStrategy.OnPush, }) export class DeltagareTabExperiencesComponent { - @Input() workExperiences: WorkExperience[]; - @Input() highestEducation: HighestEducation; - @Input() educations: Education[]; - @Input() driversLicense: DriversLicense; - accordionExpanded = false; + genomforandereferens$: Observable = this.activatedRoute.params.pipe( + map(({ genomforandeReferens }) => +genomforandeReferens) + ); + workExperiences$: Observable = this.genomforandereferens$.pipe( + switchMap(genomforandeReferens => + genomforandeReferens ? this.deltagareApiService.fetchWorkExperiences$(genomforandeReferens) : null + ), + shareReplay(1) + ); + highestEducation$: Observable = this.genomforandereferens$.pipe( + switchMap(genomforandeReferens => + genomforandeReferens ? this.deltagareApiService.fetchHighestEducation$(genomforandeReferens) : null + ), + shareReplay(1) + ); + educations$: Observable = this.genomforandereferens$.pipe( + switchMap(genomforandeReferens => + genomforandeReferens ? this.deltagareApiService.fetchEducations$(genomforandeReferens) : null + ), + shareReplay(1) + ); + driversLicense$: Observable = this.genomforandereferens$.pipe( + switchMap(genomforandeReferens => + genomforandeReferens ? this.deltagareApiService.fetchDriversLicense$(genomforandeReferens) : null + ), + shareReplay(1) + ); - get firstVisibleWorkExperiences(): WorkExperience[] { - return this.workExperiences?.slice(0, 2); + dataIsLoading$: Observable = combineLatest([ + this.workExperiences$, + this.highestEducation$, + this.educations$, + this.driversLicense$, + ]).pipe( + map( + ([workExperiences, highestEducation, educations, driversLicense]) => + !(workExperiences && highestEducation && educations && driversLicense) + ), + startWith(true) + ); + + firstVisibleWorkExperiences(workExperiences: WorkExperience[]): WorkExperience[] { + return workExperiences?.slice(0, 2); } - get hiddenWorkExperiences(): WorkExperience[] { - return this.workExperiences?.slice(2); + hiddenWorkExperiences(workExperiences: WorkExperience[]): WorkExperience[] { + return workExperiences?.slice(2); } toggleAccordionExpanded(): void { this.accordionExpanded = !this.accordionExpanded; } + + constructor( + private activatedRoute: ActivatedRoute, + private deltagareCardService: DeltagareCardService, + private handledareService: HandledareService, + private deltagareApiService: DeltagareApiService + ) {} } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-personal-information/deltagare-tab-personal-information.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-personal-information/deltagare-tab-personal-information.component.html index 1cabb15..8104df4 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-personal-information/deltagare-tab-personal-information.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-personal-information/deltagare-tab-personal-information.component.html @@ -1,5 +1,5 @@ -
-
+
+

Personuppgifter

Namn:
@@ -36,7 +36,7 @@
{{ contactInformation.email }}
- +
Behov av tolk:
{{avropInformation.tolkbehov ? 'Ja (' + avropInformation.tolkbehov + ')' : 'Nej'}}
Behov av språkstöd:
@@ -44,7 +44,7 @@
- +

Om tjänsten

@@ -80,7 +80,7 @@
Info saknas - + diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-personal-information/deltagare-tab-personal-information.component.scss b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-personal-information/deltagare-tab-personal-information.component.scss index 1d96ee1..eec0807 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-personal-information/deltagare-tab-personal-information.component.scss +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-personal-information/deltagare-tab-personal-information.component.scss @@ -5,4 +5,8 @@ flex-grow: 1; flex-basis: 0; } + + &__loader { + flex-grow: 1; + } } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-personal-information/deltagare-tab-personal-information.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-personal-information/deltagare-tab-personal-information.component.ts index 0abc60a..20c2f54 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-personal-information/deltagare-tab-personal-information.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-personal-information/deltagare-tab-personal-information.component.ts @@ -3,6 +3,10 @@ import { Avrop } from '@msfa-models/avrop.model'; import { ContactInformation } from '@msfa-models/contact-information.model'; import { Handledare } from '@msfa-models/handledare.model'; import { Role } from '@msfa-models/role.model'; +import { HandledareService } from '@msfa-services/handledare.service'; +import { combineLatest, Observable } from 'rxjs'; +import { distinctUntilChanged, filter, map, startWith, switchMap } from 'rxjs/operators'; +import { DeltagareCardService } from '../../deltagare-card.service'; @Component({ selector: 'msfa-deltagare-tab-personal-information', @@ -11,9 +15,21 @@ import { Role } from '@msfa-models/role.model'; changeDetection: ChangeDetectionStrategy.OnPush, }) export class DeltagareTabPersonalInformationComponent { - @Input() contactInformation: ContactInformation; - @Input() avropInformation: Avrop; - @Input() availableHandledare: Handledare[]; @Input() userRoles: Role[]; @Input() handledarePickerVisible: boolean; + + avropInformation$: Observable = this.deltagareCardService.avropInformation$; + contactInformation$: Observable = this.deltagareCardService.contactInformation$; + availableHandledare$: Observable = this.avropInformation$.pipe( + distinctUntilChanged((prevAvrop, currAvrop) => prevAvrop.id === currAvrop.id), + filter(() => !!this.handledarePickerVisible), + switchMap(avropInformation => this.handledareService.fetchAvailableHandledare$([avropInformation.id])) + ); + + dataIsLoading$: Observable = combineLatest([this.avropInformation$, this.contactInformation$]).pipe( + map(([avropInformation, contactInformation]) => !(contactInformation && avropInformation)), + startWith(true) + ); + + constructor(private deltagareCardService: DeltagareCardService, private handledareService: HandledareService) {} } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-reports/deltagare-tab-reports.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-reports/deltagare-tab-reports.component.html index f48149b..142b2b3 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-reports/deltagare-tab-reports.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-reports/deltagare-tab-reports.component.html @@ -47,13 +47,13 @@ - +

Inskickade rapporter

diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-reports/deltagare-tab-reports.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-reports/deltagare-tab-reports.component.ts index f9fece8..8f0a38a 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-reports/deltagare-tab-reports.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-reports/deltagare-tab-reports.component.ts @@ -1,7 +1,12 @@ -import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; import { Feature } from '@msfa-enums/feature.enum'; import { environment } from '@msfa-environment'; import { ReportsData } from '@msfa-models/report.model'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { map, shareReplay, switchMap } from 'rxjs/operators'; +import { ActivatedRoute } from '@angular/router'; +import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; +import { PaginationParams } from '@msfa-models/api/params.model'; @Component({ selector: 'msfa-deltagare-tab-reports', @@ -10,8 +15,15 @@ import { ReportsData } from '@msfa-models/report.model'; changeDetection: ChangeDetectionStrategy.OnPush, }) export class DeltagareTabReportsComponent { - @Input() reportsData: ReportsData; - @Output() reportsPaginated = new EventEmitter(); + genomforandereferens$: Observable = this.activatedRoute.params.pipe( + map(({ genomforandeReferens }) => +genomforandeReferens) + ); + + private _reportsParams$ = new BehaviorSubject({ page: 1, limit: 20 }); + reportsData$: Observable = this._reportsParams$.pipe( + switchMap(params => this.fetchReports$(params)), + shareReplay(1) + ); _activeFeatures: Feature[] = environment.activeFeatures; @@ -25,7 +37,15 @@ export class DeltagareTabReportsComponent { return this._activeFeatures.includes(Feature.REPORTING_INFORMATIV_RAPPORT); } - emitNewPage(page: number): void { - this.reportsPaginated.emit(page); + constructor(private activatedRoute: ActivatedRoute, private deltagareApiService: DeltagareApiService) {} + + private fetchReports$(params: PaginationParams): Observable { + return this.genomforandereferens$.pipe( + switchMap(genomforandeReferens => this.deltagareApiService.fetchReports$(genomforandeReferens, params)) + ); + } + + setNewPage(page: number): void { + this._reportsParams$.next({ ...this._reportsParams$.getValue(), page }); } } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-sensitive-information/deltagare-tab-sensitive-information.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-sensitive-information/deltagare-tab-sensitive-information.component.html index 1835596..bfb5f22 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-sensitive-information/deltagare-tab-sensitive-information.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-sensitive-information/deltagare-tab-sensitive-information.component.html @@ -1,5 +1,5 @@ -
-
+
+

Funktionsnedsättningar

@@ -20,17 +20,20 @@

Deltagaren har inga funktionsnedsättningar registrerad.

-
+

Språk

Behov av tolk:
{{avropInformation.tolkbehov ? 'Ja (' + avropInformation.tolkbehov + ')' : 'Nej'}}
Behov av språkstöd:
{{avropInformation.sprakstod ? 'Ja (' + avropInformation.sprakstod + ')' : 'Nej'}}
- +
Språk som kan användas på jobbet:
{{ workLanguages.length ? workLanguages.join(', ') : 'Info saknas'}}
+ + + diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-sensitive-information/deltagare-tab-sensitive-information.component.scss b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-sensitive-information/deltagare-tab-sensitive-information.component.scss index ed7bcc5..bbc0ca0 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-sensitive-information/deltagare-tab-sensitive-information.component.scss +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-sensitive-information/deltagare-tab-sensitive-information.component.scss @@ -8,6 +8,10 @@ flex-basis: 0; } + &__loader { + flex-grow: 1; + } + &__popover { display: inline-block; margin-left: var(--digi--layout--gutter--s); diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-sensitive-information/deltagare-tab-sensitive-information.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-sensitive-information/deltagare-tab-sensitive-information.component.ts index d48e3ef..6dc61c2 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-sensitive-information/deltagare-tab-sensitive-information.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/components/deltagare-tab-sensitive-information/deltagare-tab-sensitive-information.component.ts @@ -1,6 +1,11 @@ -import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; import { Avrop } from '@msfa-models/avrop.model'; import { Disability } from '@msfa-models/disability.model'; +import { DeltagareApiService } from '@msfa-services/api/deltagare.api.service'; +import { combineLatest, Observable } from 'rxjs'; +import { map, shareReplay, startWith, switchMap } from 'rxjs/operators'; +import { DeltagareCardService } from '../../deltagare-card.service'; @Component({ selector: 'msfa-deltagare-tab-sensitive-information', @@ -9,7 +14,34 @@ import { Disability } from '@msfa-models/disability.model'; changeDetection: ChangeDetectionStrategy.OnPush, }) export class DeltagareTabSensitiveInformationComponent { - @Input() avropInformation: Avrop; - @Input() workLanguages: string[]; - @Input() disabilities: Disability[]; + genomforandereferens$: Observable = this.activatedRoute.params.pipe( + map(({ genomforandeReferens }) => +genomforandeReferens) + ); + avropInformation$: Observable = this.deltagareCardService.avropInformation$; + workLanguages$: Observable = this.genomforandereferens$.pipe( + switchMap(genomforandeReferens => + genomforandeReferens ? this.deltagareApiService.fetchWorkLanguages$(genomforandeReferens) : null + ), + shareReplay(1) + ); + disabilities$: Observable = this.genomforandereferens$.pipe( + switchMap(genomforandeReferens => + genomforandeReferens ? this.deltagareApiService.fetchDisabilities$(genomforandeReferens) : null + ), + shareReplay(1) + ); + dataIsLoading$: Observable = combineLatest([ + this.avropInformation$, + this.workLanguages$, + this.disabilities$, + ]).pipe( + map(([avropInformation, workLanguages, disabilities]) => !(avropInformation && workLanguages && disabilities)), + startWith(true) + ); + + constructor( + private activatedRoute: ActivatedRoute, + private deltagareCardService: DeltagareCardService, + private deltagareApiService: DeltagareApiService + ) {} } 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 a51edb2..594b055 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 @@ -16,16 +16,11 @@ af-id="deltagare-card-personal-information" *ngIf="deltagareTjanstVisible" > - - - + - - - + - - - + - - - + @@ -85,7 +64,3 @@ - - - - diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/deltagare-card.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/deltagare-card.component.ts index 2a00750..586eb90 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/deltagare-card.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-card/deltagare-card.component.ts @@ -4,21 +4,11 @@ import { UnsubscribeDirective } from '@msfa-directives/unsubscribe.directive'; import { Feature } from '@msfa-enums/feature.enum'; import { RoleEnum } from '@msfa-enums/role.enum'; import { environment } from '@msfa-environment'; -import { PaginationParams } from '@msfa-models/api/params.model'; -import { Avrop } from '@msfa-models/avrop.model'; import { ContactInformation } from '@msfa-models/contact-information.model'; -import { Disability } from '@msfa-models/disability.model'; -import { DriversLicense } from '@msfa-models/drivers-license.model'; -import { Education } from '@msfa-models/education.model'; -import { Handledare } from '@msfa-models/handledare.model'; -import { HighestEducation } from '@msfa-models/highest-education.model'; -import { ReportsData } from '@msfa-models/report.model'; import { Role } from '@msfa-models/role.model'; -import { WorkExperience } from '@msfa-models/work-experience.model'; import { UserService } from '@msfa-services/api/user.service'; -import { HandledareService } from '@msfa-services/handledare.service'; -import { BehaviorSubject, combineLatest, Observable } from 'rxjs'; -import { distinctUntilChanged, filter, map, shareReplay, startWith, switchMap } from 'rxjs/operators'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; import { DeltagareCardService } from './deltagare-card.service'; @Component({ @@ -29,57 +19,18 @@ import { DeltagareCardService } from './deltagare-card.service'; }) export class DeltagareCardComponent extends UnsubscribeDirective implements OnDestroy { activeTab$: Observable = this.deltagareCardService.activeTab$; + genomforandereferens$: Observable = this.activatedRoute.params.pipe( + map(({ genomforandeReferens }) => +genomforandeReferens) + ); - private _reportsParams$ = new BehaviorSubject({ page: 1, limit: 20 }); private _activeFeatures: Feature[] = environment.activeFeatures; private _userRoles: Role[] = this.userService.userRolesSnapshot; 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( - distinctUntilChanged((prevAvrop, currAvrop) => prevAvrop.id === currAvrop.id), - filter(() => !!this.handledarePickerVisible), - switchMap(avropInformation => this.handledareService.fetchAvailableHandledare$([avropInformation.id])) - ); - reportsData$: Observable = this._reportsParams$.pipe( - switchMap(params => this.deltagareCardService.fetchReports$(params)), - shareReplay(1) - ); - tab0Loading$: Observable = combineLatest([this.contactInformation$, this.avropInformation$]).pipe( - map(([contactInformation, avropInformation]) => !(contactInformation && avropInformation)), - startWith(true) - ); - tab2Loading$: Observable = combineLatest([ - this.workExperiences$, - this.highestEducation$, - this.educations$, - this.driversLicense$, - ]).pipe( - map( - ([workExperiences, highestEducation, educations, driversLicense]) => - !(workExperiences && highestEducation && educations && driversLicense) - ), - startWith(true) - ); - tab3Loading$: Observable = combineLatest([ - this.disabilities$, - this.avropInformation$, - this.workLanguages$, - ]).pipe( - map(([disabilities, avropInformation, workLanguages]) => !(disabilities && avropInformation && workLanguages)), - startWith(true) - ); constructor( private activatedRoute: ActivatedRoute, private deltagareCardService: DeltagareCardService, - private handledareService: HandledareService, private userService: UserService ) { super(); @@ -90,10 +41,6 @@ export class DeltagareCardComponent extends UnsubscribeDirective implements OnDe ); } - ngOnDestroy(): void { - this.deltagareCardService.setGenomforandereferens(null); - } - get deltagareTjanstVisible(): boolean { return this._userRoles?.some( role => role.type === RoleEnum.MSFA_ReportAndPlanning || role.type === RoleEnum.MSFA_ReceiveDeltagare @@ -125,8 +72,4 @@ export class DeltagareCardComponent extends UnsubscribeDirective implements OnDe setActiveTab(tabId: string): void { this.deltagareCardService.setActiveTab(tabId); } - - setNewPage(page: number): void { - this._reportsParams$.next({ ...this._reportsParams$.getValue(), page }); - } } 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 50d8480..6af6747 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 @@ -1,16 +1,9 @@ import { Injectable } from '@angular/core'; -import { PaginationParams } from '@msfa-models/api/params.model'; import { Avrop } from '@msfa-models/avrop.model'; import { ContactInformation } from '@msfa-models/contact-information.model'; -import { Disability } from '@msfa-models/disability.model'; -import { DriversLicense } from '@msfa-models/drivers-license.model'; -import { Education } from '@msfa-models/education.model'; -import { HighestEducation } from '@msfa-models/highest-education.model'; -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 { BehaviorSubject, combineLatest, Observable } from 'rxjs'; +import { BehaviorSubject, combineLatest, merge, Observable, of } from 'rxjs'; import { map, mapTo, shareReplay, switchMap } from 'rxjs/operators'; @Injectable() @@ -27,7 +20,12 @@ export class DeltagareCardService { contactInformation$: Observable = this.currentGenomforandeReferens$.pipe( switchMap(genomforandeReferens => - genomforandeReferens ? this.deltagareApiService.fetchContactInformation$(genomforandeReferens) : null + genomforandeReferens + ? merge( + of(null), + this.deltagareApiService.fetchContactInformation$(genomforandeReferens) + ) + : null ), shareReplay(1) ); @@ -42,63 +40,15 @@ export class DeltagareCardService { shareReplay(1) ); - workExperiences$: Observable = this.currentGenomforandeReferens$.pipe( - switchMap(genomforandeReferens => - genomforandeReferens ? this.deltagareApiService.fetchWorkExperiences$(genomforandeReferens) : null - ), - shareReplay(1) - ); - - highestEducation$: Observable = this.currentGenomforandeReferens$.pipe( - switchMap(genomforandeReferens => - genomforandeReferens ? this.deltagareApiService.fetchHighestEducation$(genomforandeReferens) : null - ), - shareReplay(1) - ); - - educations$: Observable = this.currentGenomforandeReferens$.pipe( - switchMap(genomforandeReferens => - genomforandeReferens ? this.deltagareApiService.fetchEducations$(genomforandeReferens) : null - ), - shareReplay(1) - ); - - driversLicense$: Observable = this.currentGenomforandeReferens$.pipe( - switchMap(genomforandeReferens => - genomforandeReferens ? this.deltagareApiService.fetchDriversLicense$(genomforandeReferens) : null - ), - shareReplay(1) - ); - - workLanguages$: Observable = this.currentGenomforandeReferens$.pipe( - switchMap(genomforandeReferens => - genomforandeReferens ? this.deltagareApiService.fetchWorkLanguages$(genomforandeReferens) : null - ), - shareReplay(1) - ); - - disabilities$: Observable = this.currentGenomforandeReferens$.pipe( - switchMap(genomforandeReferens => - genomforandeReferens ? this.deltagareApiService.fetchDisabilities$(genomforandeReferens) : null - ), - shareReplay(1) - ); - constructor(private deltagareApiService: DeltagareApiService, private handledareService: HandledareService) {} - setGenomforandereferens(genomforandeReferens: string) { + setGenomforandereferens(genomforandeReferens: string): void { if (genomforandeReferens !== this._genomforandeReferensFromParams$.value) { this._genomforandeReferensFromParams$.next(genomforandeReferens); this.setActiveTab('0'); } } - fetchReports$(params: PaginationParams): Observable { - return this.currentGenomforandeReferens$.pipe( - switchMap(genomforandeReferens => this.deltagareApiService.fetchReports$(genomforandeReferens, params)) - ); - } - setActiveTab(tabId: string): void { this._activeTab$.next(tabId); } diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.html index e986221..159c525 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.html @@ -36,7 +36,7 @@
Orsak till avvikelse:
{{(chosenReason$ | async)?.name }}
- +
{{getCurrentQuestionFromId(question.fraga).name}}
{{question.svar.length === 0 ? 'Inget svar' : question.svar }}
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/informativ-rapport-form/informativ-rapport-form.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/informativ-rapport-form/informativ-rapport-form.component.html index 49827e0..c4ede7e 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/informativ-rapport-form/informativ-rapport-form.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/informativ-rapport-form/informativ-rapport-form.component.html @@ -98,7 +98,7 @@ > - +
Vad gäller ärendet
{{getInformativRapportCategory(submitData.category)}}
Kompletterande information
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.component.html index 63fdc7d..f88445a 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/periodisk-redovisning-form/periodisk-redovisning-form.component.html @@ -191,7 +191,7 @@ > - +
Har ni under perioden tillhandahållit språkstöd till deltagaren:
{{submitData.hasOfferedLanguageSupport ? 'Ja' : 'Nej' }}
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-list/components/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-list/components/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.html index 250b981..4e4a22d 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-list/components/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-list/components/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.html @@ -1,8 +1,7 @@

Genomförandereferens: {{deltagare?.genomforandeReferens}}

- - +
@@ -56,4 +55,9 @@ - Inga händelser har inkommit. + +

Inga händelser har inkommit.

+
+ + + diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-list/components/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-list/components/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.ts index 6b52867..76b008b 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-list/components/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-list/components/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.ts @@ -1,11 +1,10 @@ import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit } from '@angular/core'; -import { DeltagareHandelse, DeltagareHandelseData } from '@msfa-models/deltagare-handelse.model'; -import { Observable } from 'rxjs'; import { IconType } from '@msfa-enums/icon-type.enum'; +import { DeltagareHandelse, DeltagareHandelseData } from '@msfa-models/deltagare-handelse.model'; import { DeltagareCompact } from '@msfa-models/deltagare.model'; import { PaginationMeta } from '@msfa-models/pagination-meta.model'; -import { map } from 'rxjs/operators'; import { DeltagareHandelserService } from '@msfa-services/deltagare-handelser.service'; +import { Observable } from 'rxjs'; @Component({ selector: 'msfa-deltagare-list-handelser-dialog', @@ -17,7 +16,6 @@ export class DeltagareListHandelserDialogComponent implements OnInit, OnDestroy @Input() deltagare: DeltagareCompact; iconType = IconType; deltagareHandelserData$: Observable; - handelserLoading$ = this.deltagareHandelserService.handelserLoading$; constructor(private deltagareHandelserService: DeltagareHandelserService) {} diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-list/components/deltagare-list-table/deltagare-list-table.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-list/components/deltagare-list-table/deltagare-list-table.component.html index 7561bc4..0c3fe99 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-list/components/deltagare-list-table/deltagare-list-table.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-list/components/deltagare-list-table/deltagare-list-table.component.html @@ -85,10 +85,10 @@ (DEFAULT_PARAMS); private _genomforandeReferens$ = new BehaviorSubject(null); - private _handelserLoading$ = new BehaviorSubject(false); - handelserLoading$ = this._handelserLoading$.asObservable(); deltagareHandelserData$ = combineLatest([this._genomforandeReferens$, this._params$]).pipe( switchMap(([genomforandeReferens, params]) => { - this._handelserLoading$.next(true); - return this.deltagareHandelserApiService - .fetchDeltagareHandelser$(genomforandeReferens, params) - .pipe(tap(() => this._handelserLoading$.next(false))); + return this.deltagareHandelserApiService.fetchDeltagareHandelser$(genomforandeReferens, params); }) );