Merge pull request #136 in TEA/mina-sidor-fa-web from bugfix/TV-692 to next

Squashed commit of the following:

commit 6a676d613edfef092ec860200e7b585db5af04b8
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Mon Sep 27 14:11:14 2021 +0200

    Added changelog

commit ec1f9adf30e985db625021d4a5b6d8d8a42fd559
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Mon Sep 27 13:12:19 2021 +0200

    Updated sokandeId to genomforandeReferens to fetch data for deltagare
This commit is contained in:
Erik Tiekstra
2021-09-27 14:13:34 +02:00
parent 85242b0544
commit 62e538e289
11 changed files with 244 additions and 204 deletions

View File

@@ -1,31 +1,37 @@
## 2.0.1
### Bug Fixes
- **deltagare:** Now fetching data using "genomforandeReferens" instead of "sokandeId" to avoid wrong data. [TV-692](https://jira.arbetsformedlingen.se/browse/TV-692)
## [2.0.0](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/compare/diff?targetBranch=refs%2Ftags%2Fv1.5.0&sourceBranch=refs%2Ftags%2Fv2.0.0) (2021-09-24) ## [2.0.0](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/compare/diff?targetBranch=refs%2Ftags%2Fv1.5.0&sourceBranch=refs%2Ftags%2Fv2.0.0) (2021-09-24)
### Features ### Features
* **avvikelserapport:** added max width to select and text area elements. [TV-407](https://jira.arbetsformedlingen.se/browse/TV-407)-max-width ([ed2e19a](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/ed2e19a47d79701ce7030118e8bc68683271ffd9)) - **avvikelserapport:** added max width to select and text area elements. [TV-407](https://jira.arbetsformedlingen.se/browse/TV-407)-max-width ([ed2e19a](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/ed2e19a47d79701ce7030118e8bc68683271ffd9))
* **avrop:** Changed intro-text inside avrop. ([TV-518](https://jira.arbetsformedlingen.se/browse/TV-518)) ([fc2916f](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/fc2916fb0d6e37fc71df96b5e008fccd43075bd1)) - **avrop:** Changed intro-text inside avrop. ([TV-518](https://jira.arbetsformedlingen.se/browse/TV-518)) ([fc2916f](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/fc2916fb0d6e37fc71df96b5e008fccd43075bd1))
* **avvikelserapport:** changed router navigation, cleanup /[TV-407](https://jira.arbetsformedlingen.se/browse/TV-407)-2 to develop ([2236cc9](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/2236cc9ec85f2f3420f01d4ea5b8002d778149e6)), closes [TV-407-2](https://jira.arbetsformedlingen.se/browse/TV-407-2) [TV-407-2](https://jira.arbetsformedlingen.se/browse/TV-407-2) - **avvikelserapport:** changed router navigation, cleanup /[TV-407](https://jira.arbetsformedlingen.se/browse/TV-407)-2 to develop ([2236cc9](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/2236cc9ec85f2f3420f01d4ea5b8002d778149e6)), closes [TV-407-2](https://jira.arbetsformedlingen.se/browse/TV-407-2) [TV-407-2](https://jira.arbetsformedlingen.se/browse/TV-407-2)
* **avvikelserapport:** fixed validation for dayOrPartOfDay [TV-407](https://jira.arbetsformedlingen.se/browse/TV-407)-fix ([71b00c6](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/71b00c6e90fdb553af0f6accc881e41f8716b21b)) - **avvikelserapport:** fixed validation for dayOrPartOfDay [TV-407](https://jira.arbetsformedlingen.se/browse/TV-407)-fix ([71b00c6](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/71b00c6e90fdb553af0f6accc881e41f8716b21b))
* **avrop:** Implemented custom filters for avrop. ([TV-344](https://jira.arbetsformedlingen.se/browse/TV-344)) ([1feed30](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/1feed30f6fdad8cfff507c96dae86bb4fa82279c)) - **avrop:** Implemented custom filters for avrop. ([TV-344](https://jira.arbetsformedlingen.se/browse/TV-344)) ([1feed30](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/1feed30f6fdad8cfff507c96dae86bb4fa82279c))
* **employees:** Implemented loader inside employees-list when pagination/filtering. ([TV-597](https://jira.arbetsformedlingen.se/browse/TV-597)) ([bc8b09d](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/bc8b09d0dcfdcd53dfa930a76e29dc216e76346f)) - **employees:** Implemented loader inside employees-list when pagination/filtering. ([TV-597](https://jira.arbetsformedlingen.se/browse/TV-597)) ([bc8b09d](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/bc8b09d0dcfdcd53dfa930a76e29dc216e76346f))
* **deltagare:** Implemented role-check and fetching data when needed. ([TV-639](https://jira.arbetsformedlingen.se/browse/TV-639)) ([62fb35c](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/62fb35ca7e685675c0caf33734dd68cf8225d93e)) - **deltagare:** Implemented role-check and fetching data when needed. ([TV-639](https://jira.arbetsformedlingen.se/browse/TV-639)) ([62fb35c](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/62fb35ca7e685675c0caf33734dd68cf8225d93e))
* **avvikelserapport:** implementerat report layout för avvikelserapport. [TV-667](https://jira.arbetsformedlingen.se/browse/TV-667) ([454699b](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/454699b78571e98d924a9242f30fcf8325a51621)), closes [feature/TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [feature/TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [origin/feature/TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [feature/TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [feature/TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [feature/TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-624](https://jira.arbetsformedlingen.se/browse/TV-624) - **avvikelserapport:** implementerat report layout för avvikelserapport. [TV-667](https://jira.arbetsformedlingen.se/browse/TV-667) ([454699b](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/454699b78571e98d924a9242f30fcf8325a51621)), closes [feature/TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [feature/TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [origin/feature/TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [feature/TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [feature/TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [feature/TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-624](https://jira.arbetsformedlingen.se/browse/TV-624)
* **Deltagarlista:** Lade till startdatum, slutdatum, avbrott samt Visa händelser, som öppnar en modal med en deltagares händelser ([TV-606](https://jira.arbetsformedlingen.se/browse/TV-606)) ([68c5c8d](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/68c5c8d4a8fdcf4a497abb85de9298c26fdafcaf)) - **Deltagarlista:** Lade till startdatum, slutdatum, avbrott samt Visa händelser, som öppnar en modal med en deltagares händelser ([TV-606](https://jira.arbetsformedlingen.se/browse/TV-606)) ([68c5c8d](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/68c5c8d4a8fdcf4a497abb85de9298c26fdafcaf))
* **deltagare:** Moved around content between tabs inside deltagare-card. ([TV-638](https://jira.arbetsformedlingen.se/browse/TV-638)) ([14739fb](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/14739fb9e1d06897e5805d1f5c3c5a5194be80c3)) - **deltagare:** Moved around content between tabs inside deltagare-card. ([TV-638](https://jira.arbetsformedlingen.se/browse/TV-638)) ([14739fb](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/14739fb9e1d06897e5805d1f5c3c5a5194be80c3))
* **employee:** Now possible to edit employee and remove data, also changed validation-rules. ([TV-631](https://jira.arbetsformedlingen.se/browse/TV-631)) ([1bbfd57](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/1bbfd57910a1cb19f94cec4feab6c85ac1ffd166)) - **employee:** Now possible to edit employee and remove data, also changed validation-rules. ([TV-631](https://jira.arbetsformedlingen.se/browse/TV-631)) ([1bbfd57](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/1bbfd57910a1cb19f94cec4feab6c85ac1ffd166))
* **avvikelserapport:** show selected questions in preview, renaming. [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633)-2 ([71a98f5](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/71a98f52573edcacd6a1125e0a7c23473bfdec4d)), closes [TV-633-2](https://jira.arbetsformedlingen.se/browse/TV-633-2) [TV-633-2](https://jira.arbetsformedlingen.se/browse/TV-633-2) - **avvikelserapport:** show selected questions in preview, renaming. [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633)-2 ([71a98f5](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/71a98f52573edcacd6a1125e0a7c23473bfdec4d)), closes [TV-633-2](https://jira.arbetsformedlingen.se/browse/TV-633-2) [TV-633-2](https://jira.arbetsformedlingen.se/browse/TV-633-2)
* **employee-invite:** Updated validation of email-addresses and changed text for assigned users. ([TV-628](https://jira.arbetsformedlingen.se/browse/TV-628)) ([84f8737](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/84f8737ec4da773f1256a5673aaf70860462cfa9)) - **employee-invite:** Updated validation of email-addresses and changed text for assigned users. ([TV-628](https://jira.arbetsformedlingen.se/browse/TV-628)) ([84f8737](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/84f8737ec4da773f1256a5673aaf70860462cfa9))
* Uppdatering av rolltexter ([5c30fc7](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/5c30fc7e5070c65f35f32ea817d566dbd6148058)) - Uppdatering av rolltexter ([5c30fc7](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/5c30fc7e5070c65f35f32ea817d566dbd6148058))
* **employee:** Utförande verksamheter select is now wrapping long text instead of ellipsis. Also when toggling the "Alla utförande verksamheter" checkbox the select is resetted. ([TV-620](https://jira.arbetsformedlingen.se/browse/TV-620)) ([91eeb1d](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/91eeb1d8dc7f50a429ef2cd988c16be732225acb)) - **employee:** Utförande verksamheter select is now wrapping long text instead of ellipsis. Also when toggling the "Alla utförande verksamheter" checkbox the select is resetted. ([TV-620](https://jira.arbetsformedlingen.se/browse/TV-620)) ([91eeb1d](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/91eeb1d8dc7f50a429ef2cd988c16be732225acb))
### Bug Fixes ### Bug Fixes
* **employees:** Currentpage is now set to default page inside pagination-component. ([TV-596](https://jira.arbetsformedlingen.se/browse/TV-596)) ([9155cdc](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/9155cdc9ac343168e25afc4fd2fa9d0920ba45ac)) - **employees:** Currentpage is now set to default page inside pagination-component. ([TV-596](https://jira.arbetsformedlingen.se/browse/TV-596)) ([9155cdc](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/9155cdc9ac343168e25afc4fd2fa9d0920ba45ac))
* Fix mock-api login functionality ([52cd7ad](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/52cd7ad6f4282b737756bf1b6d8a2e946218378b)) - Fix mock-api login functionality ([52cd7ad](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/52cd7ad6f4282b737756bf1b6d8a2e946218378b))
* **edit-employee:** Removed duplicate border-color on utförande verksamheter button which falsly overrode styling. ([TV-590](https://jira.arbetsformedlingen.se/browse/TV-590)) ([0f60300](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/0f60300d972766ea790f375206e6d6c40468311b)) - **edit-employee:** Removed duplicate border-color on utförande verksamheter button which falsly overrode styling. ([TV-590](https://jira.arbetsformedlingen.se/browse/TV-590)) ([0f60300](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/0f60300d972766ea790f375206e6d6c40468311b))
* Sidans titel ändras nu korrekt när man går tillbaka till startsidan. ([TV-643](https://jira.arbetsformedlingen.se/browse/TV-643)) ([0302b1a](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/0302b1a1ad672351a702878a411d5bce988af6ba)) - Sidans titel ändras nu korrekt när man går tillbaka till startsidan. ([TV-643](https://jira.arbetsformedlingen.se/browse/TV-643)) ([0302b1a](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/0302b1a1ad672351a702878a411d5bce988af6ba))
* **my-account:** Typo fix inside my-account. ([TV-593](https://jira.arbetsformedlingen.se/browse/TV-593)) ([3bfb8d8](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/3bfb8d8be14b573b59986f6304b8ee82b8269eed)) - **my-account:** Typo fix inside my-account. ([TV-593](https://jira.arbetsformedlingen.se/browse/TV-593)) ([3bfb8d8](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/3bfb8d8be14b573b59986f6304b8ee82b8269eed))
* Ändra ordning på sidornas title så att sidans innehåll kommer först ([TV-644](https://jira.arbetsformedlingen.se/browse/TV-644)) ([caf235a](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/caf235a2b400e244d4134667385612f8f786d9a9)) - Ändra ordning på sidornas title så att sidans innehåll kommer först ([TV-644](https://jira.arbetsformedlingen.se/browse/TV-644)) ([caf235a](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/caf235a2b400e244d4134667385612f8f786d9a9))
## 1.5.1 ## 1.5.1

View File

@@ -30,7 +30,9 @@
<tbody> <tbody>
<tr class="deltagare-list__row" *ngFor="let singleDeltagare of deltagare"> <tr class="deltagare-list__row" *ngFor="let singleDeltagare of deltagare">
<th scope="row"> <th scope="row">
<a [routerLink]="singleDeltagare.id" class="deltagare-list__link">{{ singleDeltagare.fullName }}</a> <a [routerLink]="singleDeltagare.genomforandeReferens" class="deltagare-list__link"
>{{ singleDeltagare.fullName }}</a
>
</th> </th>
<td>{{ singleDeltagare.tjanst }}</td> <td>{{ singleDeltagare.tjanst }}</td>
<td>{{ singleDeltagare.utforandeVerksamhet }}</td> <td>{{ singleDeltagare.utforandeVerksamhet }}</td>

View File

@@ -8,18 +8,21 @@ const routes: Routes = [
component: DeltagareComponent, component: DeltagareComponent,
}, },
{ {
path: ':deltagareId', path: ':genomforandeReferens',
data: { title: 'Deltagareinformation' }, data: { title: 'Deltagareinformation' },
loadChildren: () => import('./pages/deltagare-card/deltagare-card.module').then(m => m.DeltagareCardModule), loadChildren: () => import('./pages/deltagare-card/deltagare-card.module').then(m => m.DeltagareCardModule),
}, },
{ {
path: 'rapportera/:deltagareId', path: 'rapportera/:genomforandeReferens',
data: { title: 'Skapa rapport' }, data: { title: 'Skapa rapport' },
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
loadChildren: () => import('./pages/deltagare-report/pages/deltagare-avvikelse/deltagare-avvikelse.module').then(m => m.DeltagareAvvikelseModule), loadChildren: () =>
import('./pages/deltagare-report/pages/deltagare-avvikelse/deltagare-avvikelse.module').then(
m => m.DeltagareAvvikelseModule
),
}, },
{ {
path: 'planering/:deltagareId', path: 'planering/:genomforandeReferens',
data: { title: 'Skapa gemensam planering' }, data: { title: 'Skapa gemensam planering' },
loadChildren: () => loadChildren: () =>
import('./pages/deltagare-report/deltagare-gemensam-planering/deltagare-gemensam-planering.module').then( import('./pages/deltagare-report/deltagare-gemensam-planering/deltagare-gemensam-planering.module').then(
@@ -27,7 +30,7 @@ const routes: Routes = [
), ),
}, },
{ {
path: 'periodisk-redovisning/:deltagareId', path: 'periodisk-redovisning/:genomforandeReferens',
data: { title: 'Skapa periodisk redovisning' }, data: { title: 'Skapa periodisk redovisning' },
loadChildren: () => loadChildren: () =>
import('./pages/deltagare-report/pages/periodisk-redovisning/periodisk-redovisning.module').then( import('./pages/deltagare-report/pages/periodisk-redovisning/periodisk-redovisning.module').then(
@@ -40,4 +43,4 @@ const routes: Routes = [
imports: [RouterModule.forChild(routes)], imports: [RouterModule.forChild(routes)],
exports: [RouterModule], exports: [RouterModule],
}) })
export class DeltagareRoutingModule { } export class DeltagareRoutingModule {}

View File

@@ -16,10 +16,13 @@
Du måste välja en rapporttyp Du måste välja en rapporttyp
</digi-form-validation-message> </digi-form-validation-message>
</form> </form>
<div class="deltagare-tab-reports__cta-wrapper" *ngIf="currentDeltagareId$ | async as currentDeltagareId"> <div
class="deltagare-tab-reports__cta-wrapper"
*ngIf="currentGenomforandeReferens$ | async as currentGenomforandeReferens"
>
<digi-ng-link-button <digi-ng-link-button
afText="Skapa ny rapport" afText="Skapa ny rapport"
(click)="onFormSubmitted($event, reportsFormControl.value, currentDeltagareId)" (click)="onFormSubmitted($event, reportsFormControl.value, currentGenomforandeReferens)"
></digi-ng-link-button> ></digi-ng-link-button>
</div> </div>
<div> <div>

View File

@@ -19,13 +19,21 @@ export class DeltagareTabReportsComponent {
private _type$ = new BehaviorSubject<FormSelectItem>(null); private _type$ = new BehaviorSubject<FormSelectItem>(null);
readonly reportsFormControlName = 'reports'; readonly reportsFormControlName = 'reports';
public currentDeltagareId$: Observable<string> = this.activatedRoute.params.pipe( public currentGenomforandeReferens$: Observable<string> = this.activatedRoute.params.pipe(
map(params => params.deltagareId as string), map(params => params.genomforandeReferens as string),
distinctUntilChanged(([prevDeltagareId], [currDeltagareId]) => prevDeltagareId === currDeltagareId) distinctUntilChanged(
([prevGenomforandeReferens], [currGenomforandeReferens]) => prevGenomforandeReferens === currGenomforandeReferens
)
); );
reportsData$: Observable<ReportsData> = combineLatest([this.currentDeltagareId$, this._limit$, this._page$]).pipe( reportsData$: Observable<ReportsData> = combineLatest([
switchMap(([deltagareId, limit, page]) => this.deltagareCardService.fetchReports$(limit, page, deltagareId)), this.currentGenomforandeReferens$,
this._limit$,
this._page$,
]).pipe(
switchMap(([genomforandeReferens, limit, page]) =>
this.deltagareCardService.fetchReports$(limit, page, genomforandeReferens)
),
shareReplay(1) shareReplay(1)
); );
@@ -51,20 +59,20 @@ export class DeltagareTabReportsComponent {
return this.reportPickerFormGroup?.get(this.reportsFormControlName); return this.reportPickerFormGroup?.get(this.reportsFormControlName);
} }
onFormSubmitted(event: Event, reportType: string, deltagareId: string): void { onFormSubmitted(event: Event, reportType: string, genomforandeReferens: string): void {
event.preventDefault(); event.preventDefault();
switch (reportType) { switch (reportType) {
case 'planering': case 'planering':
if (this.reportsFormControl.valid) { if (this.reportsFormControl.valid) {
this.router.navigate(['/deltagare/planering', deltagareId]).catch(error => { this.router.navigate(['/deltagare/planering', genomforandeReferens]).catch(error => {
console.error(error); console.error(error);
}); });
} }
break; break;
case 'avvikelse': case 'avvikelse':
if (this.reportsFormControl.valid) { if (this.reportsFormControl.valid) {
this.router.navigate(['/deltagare/rapportera', deltagareId]).catch(error => { this.router.navigate(['/deltagare/rapportera', genomforandeReferens]).catch(error => {
console.error(error); console.error(error);
}); });
} }

View File

@@ -28,40 +28,42 @@ export class DeltagareCardComponent {
private _userRoles: Role[] = this.userService.userRolesSnapshot; private _userRoles: Role[] = this.userService.userRolesSnapshot;
public activeTab$: Observable<string> = this._activeTab$.asObservable(); public activeTab$: Observable<string> = this._activeTab$.asObservable();
public currentDeltagareId$: Observable<string> = this.activatedRoute.params.pipe( public currentGenomforandeReferens$: Observable<string> = this.activatedRoute.params.pipe(
map(params => params.deltagareId as string), map(params => params.genomforandeReferens as string),
distinctUntilChanged(([prevDeltagareId], [currDeltagareId]) => prevDeltagareId === currDeltagareId) distinctUntilChanged(
([prevGenomforandeReferens], [currGenomforandeReferens]) => prevGenomforandeReferens === currGenomforandeReferens
)
); );
contactInformation$: Observable<ContactInformation> = combineLatest([this.currentDeltagareId$]).pipe( contactInformation$: Observable<ContactInformation> = this.currentGenomforandeReferens$.pipe(
switchMap(([deltagareId]) => this.deltagareCardService.fetchContactInformation$(deltagareId)), switchMap(genomforandeReferens => this.deltagareCardService.fetchContactInformation$(genomforandeReferens)),
shareReplay(1) shareReplay(1)
); );
avropInformation$: Observable<Avrop> = combineLatest([this.currentDeltagareId$, this._activeTab$]).pipe( avropInformation$: Observable<Avrop> = this.currentGenomforandeReferens$.pipe(
switchMap(([deltagareId]) => this.deltagareCardService.fetchAvropInformation$(deltagareId)), switchMap(genomforandeReferens => this.deltagareCardService.fetchAvropInformation$(genomforandeReferens)),
shareReplay(1) shareReplay(1)
); );
workExperiences$: Observable<WorkExperience[]> = this.currentDeltagareId$.pipe( workExperiences$: Observable<WorkExperience[]> = this.currentGenomforandeReferens$.pipe(
switchMap(([deltagareId]) => this.deltagareCardService.fetchWorkExperiences$(deltagareId)), switchMap(genomforandeReferens => this.deltagareCardService.fetchWorkExperiences$(genomforandeReferens)),
shareReplay(1) shareReplay(1)
); );
highestEducation$: Observable<HighestEducation> = this.currentDeltagareId$.pipe( highestEducation$: Observable<HighestEducation> = this.currentGenomforandeReferens$.pipe(
switchMap(([deltagareId]) => this.deltagareCardService.fetchHighestEducation$(deltagareId)), switchMap(genomforandeReferens => this.deltagareCardService.fetchHighestEducation$(genomforandeReferens)),
shareReplay(1) shareReplay(1)
); );
educations$: Observable<Education[]> = this.currentDeltagareId$.pipe( educations$: Observable<Education[]> = this.currentGenomforandeReferens$.pipe(
switchMap(([deltagareId]) => this.deltagareCardService.fetchEducations$(deltagareId)), switchMap(genomforandeReferens => this.deltagareCardService.fetchEducations$(genomforandeReferens)),
shareReplay(1) shareReplay(1)
); );
driversLicense$: Observable<DriversLicense> = this.currentDeltagareId$.pipe( driversLicense$: Observable<DriversLicense> = this.currentGenomforandeReferens$.pipe(
switchMap(([deltagareId]) => this.deltagareCardService.fetchDriversLicense$(deltagareId)), switchMap(genomforandeReferens => this.deltagareCardService.fetchDriversLicense$(genomforandeReferens)),
shareReplay(1) shareReplay(1)
); );
workLanguages$: Observable<string[]> = this.currentDeltagareId$.pipe( workLanguages$: Observable<string[]> = this.currentGenomforandeReferens$.pipe(
switchMap(([deltagareId]) => this.deltagareCardService.fetchWorkLanguages$(deltagareId)), switchMap(genomforandeReferens => this.deltagareCardService.fetchWorkLanguages$(genomforandeReferens)),
shareReplay(1) shareReplay(1)
); );
disabilities$: Observable<Disability[]> = this.currentDeltagareId$.pipe( disabilities$: Observable<Disability[]> = this.currentGenomforandeReferens$.pipe(
switchMap(([deltagareId]) => this.deltagareCardService.fetchDisabilities$(deltagareId)), switchMap(genomforandeReferens => this.deltagareCardService.fetchDisabilities$(genomforandeReferens)),
shareReplay(1) shareReplay(1)
); );

View File

@@ -23,7 +23,7 @@ import {
EndTimeIsRequiredCheck, EndTimeIsRequiredCheck,
MotiveringIsRequiredCheck, MotiveringIsRequiredCheck,
OrsakerIsRequiredCheck, OrsakerIsRequiredCheck,
StartTimeIsRequiredCheck StartTimeIsRequiredCheck,
} from '@msfa-utils/validators/avvikelse-form-validator'; } from '@msfa-utils/validators/avvikelse-form-validator';
import { RequiredValidator } from '@msfa-utils/validators/required.validator'; import { RequiredValidator } from '@msfa-utils/validators/required.validator';
import { BehaviorSubject, Observable } from 'rxjs'; import { BehaviorSubject, Observable } from 'rxjs';
@@ -35,14 +35,14 @@ import { avvikelseAlternatives, dayOrPartOfDay } from './report-alternatives';
selector: 'msfa-deltagare-avvikelse', selector: 'msfa-deltagare-avvikelse',
templateUrl: './deltagare-avvikelse.component.html', templateUrl: './deltagare-avvikelse.component.html',
styleUrls: ['./deltagare-avvikelse.component.scss'], styleUrls: ['./deltagare-avvikelse.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush changeDetection: ChangeDetectionStrategy.OnPush,
}) })
export class DeltagareAvvikelseComponent implements OnInit { export class DeltagareAvvikelseComponent implements OnInit {
readonly alternativeFormControlName = 'alternative'; readonly alternativeFormControlName = 'alternative';
readonly descriptionFormControlName = 'description' readonly descriptionFormControlName = 'description';
readonly dateFormControlName = 'date'; readonly dateFormControlName = 'date';
readonly dayOrPartOfDayFormControlName = 'dayOrPartOfDay'; readonly dayOrPartOfDayFormControlName = 'dayOrPartOfDay';
readonly orsakerFormControlName = 'orsaker' readonly orsakerFormControlName = 'orsaker';
readonly andraKandaOrsakerFormControlName = 'andraKandaOrsaker'; readonly andraKandaOrsakerFormControlName = 'andraKandaOrsaker';
readonly fraga1FormControlName = 'fraga1'; readonly fraga1FormControlName = 'fraga1';
readonly fraga2FormControlName = 'fraga2'; readonly fraga2FormControlName = 'fraga2';
@@ -52,10 +52,11 @@ export class DeltagareAvvikelseComponent implements OnInit {
private _showSuccessNotification$ = new BehaviorSubject<boolean>(false); private _showSuccessNotification$ = new BehaviorSubject<boolean>(false);
private _showDangerNotification$ = new BehaviorSubject<boolean>(false); private _showDangerNotification$ = new BehaviorSubject<boolean>(false);
contactInformation$: Observable<ContactInformationCompact> = this.activatedRoute.params contactInformation$: Observable<ContactInformationCompact> = this.activatedRoute.params.pipe(
.pipe( switchMap(({ genomforandeReferens }) =>
switchMap(({ deltagareId }) => this.deltagareAvvikelseService.getContactInformationCompact$(deltagareId)) this.deltagareAvvikelseService.getContactInformationCompact$(genomforandeReferens)
) )
);
franvaroOrsaker$: Observable<OrsaksKoderFranvaro[]>; franvaroOrsaker$: Observable<OrsaksKoderFranvaro[]>;
avvikelseOrsaker$: Observable<OrsaksKoderAvvikelse[]>; avvikelseOrsaker$: Observable<OrsaksKoderAvvikelse[]>;
andraKandaOrsaker$: Observable<KandaAvvikelseKoder[]>; andraKandaOrsaker$: Observable<KandaAvvikelseKoder[]>;
@@ -77,47 +78,51 @@ export class DeltagareAvvikelseComponent implements OnInit {
constructor( constructor(
private deltagareAvvikelseService: DeltagareAvvikelseService, private deltagareAvvikelseService: DeltagareAvvikelseService,
private router: Router, private router: Router,
private activatedRoute: ActivatedRoute) { } private activatedRoute: ActivatedRoute
) {}
ngOnInit(): void { ngOnInit(): void {
this.contactInformation$ this.contactInformation$.pipe(first()).subscribe(contactInformation => {
.pipe( this.contactInformation = contactInformation;
first(), });
)
.subscribe(contactInformation => {
this.contactInformation = contactInformation;
});
this.avvikelseFormGroup = new FormGroup({ this.avvikelseFormGroup = new FormGroup(
alternative: new FormControl(null, [RequiredValidator()]), {
description: new FormControl(''), alternative: new FormControl(null, [RequiredValidator()]),
date: new FormControl(this.todayDate), description: new FormControl(''),
dayOrPartOfDay: new FormControl(null), date: new FormControl(this.todayDate),
orsakerFormGroup: new FormGroup({ dayOrPartOfDay: new FormControl(null),
orsaker: new FormControl([]), orsakerFormGroup: new FormGroup({
andraKandaOrsaker: new FormControl([]) orsaker: new FormControl([]),
}), andraKandaOrsaker: new FormControl([]),
fragorFormGroup: new FormGroup({ }),
fraga1: new FormControl(''), fragorFormGroup: new FormGroup({
fraga2: new FormControl('') fraga1: new FormControl(''),
}), fraga2: new FormControl(''),
timepickerFormGroup: new FormGroup({ }),
startTime: new FormControl(''), timepickerFormGroup: new FormGroup({
endTime: new FormControl('') startTime: new FormControl(''),
}) endTime: new FormControl(''),
}, { }),
validators: },
[ {
DescriptionIsRequiredCheck.CheckIfRequired('description', 'orsakerFormGroup', 'andraKandaOrsaker', KandaOrsakerEnum.AnnanOrsak), validators: [
DescriptionIsRequiredCheck.CheckIfRequired(
'description',
'orsakerFormGroup',
'andraKandaOrsaker',
KandaOrsakerEnum.AnnanOrsak
),
OrsakerIsRequiredCheck.CheckIfRequired('orsakerFormGroup', 'orsaker'), OrsakerIsRequiredCheck.CheckIfRequired('orsakerFormGroup', 'orsaker'),
AnnanKandOrsakeIsRequiredCheck.CheckIfRequired('orsakerFormGroup', 'andraKandaOrsaker'), AnnanKandOrsakeIsRequiredCheck.CheckIfRequired('orsakerFormGroup', 'andraKandaOrsaker'),
DateIsRequiredCheck.CheckIfRequired('date'), DateIsRequiredCheck.CheckIfRequired('date'),
DayOrPartOfDayIsRequiredCheck.CheckIfRequired('dayOrPartOfDay'), DayOrPartOfDayIsRequiredCheck.CheckIfRequired('dayOrPartOfDay'),
StartTimeIsRequiredCheck.CheckIfRequired('timepickerFormGroup', 'startTime'), StartTimeIsRequiredCheck.CheckIfRequired('timepickerFormGroup', 'startTime'),
EndTimeIsRequiredCheck.CheckIfRequired('timepickerFormGroup', 'endTime'), EndTimeIsRequiredCheck.CheckIfRequired('timepickerFormGroup', 'endTime'),
MotiveringIsRequiredCheck.CheckIfRequired('fraga1') MotiveringIsRequiredCheck.CheckIfRequired('fraga1'),
] ],
}) }
);
} }
get alternativeFormControl(): AbstractControl | undefined { get alternativeFormControl(): AbstractControl | undefined {
@@ -168,22 +173,23 @@ export class DeltagareAvvikelseComponent implements OnInit {
arbetssokande: { arbetssokande: {
personnummer: this.contactInformation.personnummer.toString(), personnummer: this.contactInformation.personnummer.toString(),
fornamn: this.contactInformation.fornamn.toString(), fornamn: this.contactInformation.fornamn.toString(),
efternamn: this.contactInformation.efternamn.toString() efternamn: this.contactInformation.efternamn.toString(),
}, },
sokandeId: +this.activatedRoute.snapshot.params['deltagareId'] sokandeId: +this.activatedRoute.snapshot.params['genomforandeReferens'],
} };
if (this.alternativeFormControl.value as string === Alternative.AVVIKELSE) { if ((this.alternativeFormControl.value as string) === Alternative.AVVIKELSE) {
postAvvikelse['avvikelsealternativ'] = this.avvikelse; postAvvikelse['avvikelsealternativ'] = this.avvikelse;
} else if (this.alternativeFormControl.value as string == Alternative.FRANVARO) { } else if ((this.alternativeFormControl.value as string) == Alternative.FRANVARO) {
postAvvikelse['franvaro'] = this.franvaro; postAvvikelse['franvaro'] = this.franvaro;
} }
this.deltagareAvvikelseService.createAvvikelse$(postAvvikelse, this.alternativeFormControl.value as string) this.deltagareAvvikelseService
.createAvvikelse$(postAvvikelse, this.alternativeFormControl.value as string)
.subscribe({ .subscribe({
error: () => this._showDangerNotification$.next(true), error: () => this._showDangerNotification$.next(true),
next: () => this._showSuccessNotification$.next(true), next: () => this._showSuccessNotification$.next(true),
complete: () => this.avvikelseFormGroup.reset() complete: () => this.avvikelseFormGroup.reset(),
}); });
} }
} }
@@ -193,17 +199,17 @@ export class DeltagareAvvikelseComponent implements OnInit {
avvikelseorsakskod: this.orsakerFormControl.value as string, avvikelseorsakskod: this.orsakerFormControl.value as string,
datum: this.dateFormControl.value as string, datum: this.dateFormControl.value as string,
heldag: this.dayOrPartOfDayFormControl.value === DayOrPartOfDay.HELDAG ? true : false, heldag: this.dayOrPartOfDayFormControl.value === DayOrPartOfDay.HELDAG ? true : false,
starttid: this.startTimeFormControl.value as string || '9:00', starttid: (this.startTimeFormControl.value as string) || '9:00',
sluttid: this.endTimeFormControl.value as string || '16:00', sluttid: (this.endTimeFormControl.value as string) || '16:00',
forvantad_narvaro: { forvantad_narvaro: {
starttid: '', starttid: '',
sluttid: '' sluttid: '',
}, },
alternativ_for_kanda_orsaker: { alternativ_for_kanda_orsaker: {
typ: this.andraKandaOrsakerFormControl.value as string || '', typ: (this.andraKandaOrsakerFormControl.value as string) || '',
motivering: this.descriptionFormControl.value as string motivering: this.descriptionFormControl.value as string,
} },
} };
} }
get avvikelse(): AvvikelseAlternativ { get avvikelse(): AvvikelseAlternativ {
@@ -211,63 +217,64 @@ export class DeltagareAvvikelseComponent implements OnInit {
avvikelseorsakskod: this.orsakerFormControl.value as string, avvikelseorsakskod: this.orsakerFormControl.value as string,
frageformular: [ frageformular: [
{ {
fraga: this.avvikelseFormGroup.get('orsakerFormGroup').get('orsaker').value as string + '_1', fraga: (this.avvikelseFormGroup.get('orsakerFormGroup').get('orsaker').value as string) + '_1',
svar: this.fraga1FormControl.value as string svar: this.fraga1FormControl.value as string,
}, },
{ {
fraga: this.fraga2FormControl.value as string !== '' ? fraga:
this.avvikelseFormGroup.get('orsakerFormGroup').get('orsaker').value as string + '_2' : '', (this.fraga2FormControl.value as string) !== ''
svar: this.fraga2FormControl.value as string ? (this.avvikelseFormGroup.get('orsakerFormGroup').get('orsaker').value as string) + '_2'
} : '',
svar: this.fraga2FormControl.value as string,
},
], ],
rapporteringsdatum: this.dateFormControl.value as string rapporteringsdatum: this.dateFormControl.value as string,
} };
} }
setAlternative(): void { setAlternative(): void {
if (this.alternativeFormControl.value as string == Alternative.FRANVARO) { if ((this.alternativeFormControl.value as string) == Alternative.FRANVARO) {
this.franvaroOrsaker$ = this.deltagareAvvikelseService.getOrsaksKoderFranvaro$(); this.franvaroOrsaker$ = this.deltagareAvvikelseService.getOrsaksKoderFranvaro$();
this.andraKandaOrsaker$ = this.deltagareAvvikelseService.getAndraKandaOrsaker$(); this.andraKandaOrsaker$ = this.deltagareAvvikelseService.getAndraKandaOrsaker$();
} }
if (this.alternativeFormControl.value as string == Alternative.AVVIKELSE) { if ((this.alternativeFormControl.value as string) == Alternative.AVVIKELSE) {
this.avvikelseOrsaker$ = this.deltagareAvvikelseService.getOrsaksKoderAvvikelse$(); this.avvikelseOrsaker$ = this.deltagareAvvikelseService.getOrsaksKoderAvvikelse$();
this.fragor1$ = this.deltagareAvvikelseService.getFragorForAvvikelser$() this.fragor1$ = this.deltagareAvvikelseService.getFragorForAvvikelser$().pipe(
.pipe( map((fragor: FragorForAvvikelser[]) => {
map((fragor: FragorForAvvikelser[]) => { return fragor.filter((fraga: FragorForAvvikelser) => fraga.id.includes('_1'));
return fragor.filter((fraga: FragorForAvvikelser) => fraga.id.includes('_1')) })
} );
)
);
this.fragor2$ = this.deltagareAvvikelseService.getFragorForAvvikelser$() this.fragor2$ = this.deltagareAvvikelseService.getFragorForAvvikelser$().pipe(
.pipe( map((fragor: FragorForAvvikelser[]) => {
map((fragor: FragorForAvvikelser[]) => { return fragor.filter((fraga: FragorForAvvikelser) => {
return fragor.filter((fraga: FragorForAvvikelser) => { this.setIfRequiredDescription(fraga);
this.setIfRequiredDescription(fraga); return fraga.id.includes('_2');
return fraga.id.includes('_2') });
}) })
}) );
)
} }
this.clearControlOnAlternativeChange(); this.clearControlOnAlternativeChange();
} }
private setIfRequiredDescription(fraga: FragorForAvvikelser) { private setIfRequiredDescription(fraga: FragorForAvvikelser) {
fraga.id === '19_2' || fraga.id === '20_2' ? fraga.id === '19_2' || fraga.id === '20_2'
fraga.descriptionIsRequired = false : ? (fraga.descriptionIsRequired = false)
fraga.descriptionIsRequired = true; : (fraga.descriptionIsRequired = true);
} }
setOrsakerChanged(): void { setOrsakerChanged(): void {
this.avvikelseFormGroup.markAsUntouched(); this.avvikelseFormGroup.markAsUntouched();
if (this.alternativeFormControl.value as string === Alternative.AVVIKELSE) { if ((this.alternativeFormControl.value as string) === Alternative.AVVIKELSE) {
this.selectedOrsaksKod = this.avvikelseFormGroup.get('orsakerFormGroup').get('orsaker').value as string; this.selectedOrsaksKod = this.avvikelseFormGroup.get('orsakerFormGroup').get('orsaker').value as string;
} }
this.avvikelseFormGroup.get('orsakerFormGroup').get('orsaker').valueChanges this.avvikelseFormGroup
.subscribe(value => { .get('orsakerFormGroup')
.get('orsaker')
.valueChanges.subscribe(value => {
if (value !== null) { if (value !== null) {
this.avvikelseFormGroup.get('orsakerFormGroup').get('andraKandaOrsaker').reset(); this.avvikelseFormGroup.get('orsakerFormGroup').get('andraKandaOrsaker').reset();
} }
@@ -275,14 +282,18 @@ export class DeltagareAvvikelseComponent implements OnInit {
} }
get showDescription(): boolean { get showDescription(): boolean {
return this.alternativeFormControl.value as string == Alternative.FRANVARO && return (
(this.alternativeFormControl.value as string) == Alternative.FRANVARO &&
+this.orsakerFormControl.value === FranvaroOrsaksKodEnum.AnnanKandOrsak && +this.orsakerFormControl.value === FranvaroOrsaksKodEnum.AnnanKandOrsak &&
+this.andraKandaOrsakerFormControl.value === KandaOrsakerEnum.AnnanOrsak +this.andraKandaOrsakerFormControl.value === KandaOrsakerEnum.AnnanOrsak
);
} }
get showFragor(): boolean { get showFragor(): boolean {
return this.alternativeFormControl.value as string === Alternative.AVVIKELSE && return (
this.orsakerFormControl.value as boolean; (this.alternativeFormControl.value as string) === Alternative.AVVIKELSE &&
(this.orsakerFormControl.value as boolean)
);
} }
get showDatePicker(): boolean { get showDatePicker(): boolean {
@@ -290,12 +301,17 @@ export class DeltagareAvvikelseComponent implements OnInit {
} }
get showDayOrPartOfDayPicker(): boolean { get showDayOrPartOfDayPicker(): boolean {
return this.alternativeFormControl.value as string === Alternative.FRANVARO && this.orsakerFormControl.value as boolean; return (
(this.alternativeFormControl.value as string) === Alternative.FRANVARO &&
(this.orsakerFormControl.value as boolean)
);
} }
get showTimePicker(): boolean { get showTimePicker(): boolean {
return this.alternativeFormControl.value as string === Alternative.FRANVARO && return (
this.dayOrPartOfDayFormControl.value as string === DayOrPartOfDay.DEL_AV_DAG (this.alternativeFormControl.value as string) === Alternative.FRANVARO &&
(this.dayOrPartOfDayFormControl.value as string) === DayOrPartOfDay.DEL_AV_DAG
);
} }
get nextStep(): number { get nextStep(): number {
@@ -314,7 +330,7 @@ export class DeltagareAvvikelseComponent implements OnInit {
} }
backToDeltagare(): void { backToDeltagare(): void {
void this.router.navigate(['./deltagare', this.activatedRoute.snapshot.params['deltagareId']]); void this.router.navigate(['./deltagare', this.activatedRoute.snapshot.params['genomforandeReferens']]);
} }
private clearControlOnAlternativeChange(): void { private clearControlOnAlternativeChange(): void {
@@ -324,5 +340,4 @@ export class DeltagareAvvikelseComponent implements OnInit {
this.dayOrPartOfDayFormControl.reset(); this.dayOrPartOfDayFormControl.reset();
this.avvikelseFormGroup?.get('timepickerFormGroup').reset(); this.avvikelseFormGroup?.get('timepickerFormGroup').reset();
} }
} }

View File

@@ -1,16 +1,15 @@
import { Component, ChangeDetectionStrategy, Input } from '@angular/core'; import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { ContactInformationCompact } from '@msfa-models/api/contact-information.response.model'; import { ContactInformationCompact } from '@msfa-models/api/contact-information.response.model';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { switchMap } from 'rxjs/operators'; import { switchMap } from 'rxjs/operators';
import { DeltagareAvvikelseService } from '../../pages/deltagare-report/services/deltagare-avvikelse.service'; import { DeltagareAvvikelseService } from '../../pages/deltagare-report/services/deltagare-avvikelse.service';
@Component({ @Component({
selector: 'msfa-report-layout', selector: 'msfa-report-layout',
templateUrl: './report-layout.component.html', templateUrl: './report-layout.component.html',
styleUrls: ['./report-layout.component.scss'], styleUrls: ['./report-layout.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush changeDetection: ChangeDetectionStrategy.OnPush,
}) })
export class ReportLayoutComponent { export class ReportLayoutComponent {
@Input() reportTitle = 'Report Title'; @Input() reportTitle = 'Report Title';
@@ -25,14 +24,11 @@ export class ReportLayoutComponent {
@Input() showSuccessNotification = false; @Input() showSuccessNotification = false;
@Input() showDangerNotification = false; @Input() showDangerNotification = false;
contactInformation$: Observable<ContactInformationCompact> = this.activatedRoute.params contactInformation$: Observable<ContactInformationCompact> = this.activatedRoute.params.pipe(
.pipe( switchMap(({ genomforandeReferens }) =>
switchMap(({ deltagareId }) => this.deltagareAvvikelseService.getContactInformationCompact$(deltagareId)) this.deltagareAvvikelseService.getContactInformationCompact$(genomforandeReferens)
); )
);
constructor(
private deltagareAvvikelseService: DeltagareAvvikelseService,
private activatedRoute: ActivatedRoute
) { }
constructor(private deltagareAvvikelseService: DeltagareAvvikelseService, private activatedRoute: ActivatedRoute) {}
} }

View File

@@ -73,14 +73,14 @@ export class DeltagareApiService {
); );
} }
public fetchReports$(limit: number, page: number, deltagareId: string): Observable<ReportsData> { public fetchReports$(limit: number, page: number, genomforandeReferens: string): Observable<ReportsData> {
return of({ data: [], meta: null }); return of({ data: [], meta: null });
// TODO: When the API/Mock-API has implemented the endpoint, we can remove use following code // TODO: When the API/Mock-API has implemented the endpoint, we can remove use following code
// to make API-requests. // to make API-requests.
// const params: { [param: string]: string | string[] } = { // const params: { [param: string]: string | string[] } = {
// id: deltagareId.toString(), // id: genomforandeReferens.toString(),
// limit: limit.toString(), // limit: limit.toString(),
// page: page.toString(), // page: page.toString(),
// }; // };

View File

@@ -16,31 +16,31 @@ import { DeltagareApiService } from './api/deltagare.api.service';
export class DeltagareCardService { export class DeltagareCardService {
constructor(private deltagareApiService: DeltagareApiService) {} constructor(private deltagareApiService: DeltagareApiService) {}
public fetchContactInformation$(deltagareId: string): Observable<ContactInformation> { public fetchContactInformation$(genomforandeReferens: string): Observable<ContactInformation> {
return this.deltagareApiService.fetchContactInformation$(deltagareId); return this.deltagareApiService.fetchContactInformation$(genomforandeReferens);
} }
public fetchAvropInformation$(deltagareId: string): Observable<Avrop> { public fetchAvropInformation$(genomforandeReferens: string): Observable<Avrop> {
return this.deltagareApiService.fetchAvropInformation$(deltagareId); return this.deltagareApiService.fetchAvropInformation$(genomforandeReferens);
} }
public fetchWorkExperiences$(deltagareId: string): Observable<WorkExperience[]> { public fetchWorkExperiences$(genomforandeReferens: string): Observable<WorkExperience[]> {
return this.deltagareApiService.fetchWorkExperiences$(deltagareId); return this.deltagareApiService.fetchWorkExperiences$(genomforandeReferens);
} }
public fetchHighestEducation$(deltagareId: string): Observable<HighestEducation> { public fetchHighestEducation$(genomforandeReferens: string): Observable<HighestEducation> {
return this.deltagareApiService.fetchHighestEducation$(deltagareId); return this.deltagareApiService.fetchHighestEducation$(genomforandeReferens);
} }
public fetchEducations$(deltagareId: string): Observable<Education[]> { public fetchEducations$(genomforandeReferens: string): Observable<Education[]> {
return this.deltagareApiService.fetchEducations$(deltagareId); return this.deltagareApiService.fetchEducations$(genomforandeReferens);
} }
public fetchDriversLicense$(deltagareId: string): Observable<DriversLicense> { public fetchDriversLicense$(genomforandeReferens: string): Observable<DriversLicense> {
return this.deltagareApiService.fetchDriversLicense$(deltagareId); return this.deltagareApiService.fetchDriversLicense$(genomforandeReferens);
} }
public fetchWorkLanguages$(deltagareId: string): Observable<string[]> { public fetchWorkLanguages$(genomforandeReferens: string): Observable<string[]> {
return this.deltagareApiService.fetchWorkLanguages$(deltagareId); return this.deltagareApiService.fetchWorkLanguages$(genomforandeReferens);
} }
public fetchDisabilities$(deltagareId: string): Observable<Disability[]> { public fetchDisabilities$(genomforandeReferens: string): Observable<Disability[]> {
return this.deltagareApiService.fetchDisabilities$(deltagareId); return this.deltagareApiService.fetchDisabilities$(genomforandeReferens);
} }
public fetchReports$(limit: number, page: number, deltagareId: string): Observable<ReportsData> { public fetchReports$(limit: number, page: number, genomforandeReferens: string): Observable<ReportsData> {
return this.deltagareApiService.fetchReports$(limit, page, deltagareId); return this.deltagareApiService.fetchReports$(limit, page, genomforandeReferens);
} }
} }

View File

@@ -1,32 +1,37 @@
## 2.0.1
### Bug Fixes
- **deltagare:** Now fetching data using "genomforandeReferens" instead of "sokandeId" to avoid wrong data. [TV-692](https://jira.arbetsformedlingen.se/browse/TV-692)
## [2.0.0](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/compare/diff?targetBranch=refs%2Ftags%2Fv1.5.0&sourceBranch=refs%2Ftags%2Fv2.0.0) (2021-09-24) ## [2.0.0](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/compare/diff?targetBranch=refs%2Ftags%2Fv1.5.0&sourceBranch=refs%2Ftags%2Fv2.0.0) (2021-09-24)
### Features ### Features
* **avvikelserapport:** added max width to select and text area elements. [TV-407](https://jira.arbetsformedlingen.se/browse/TV-407)-max-width ([ed2e19a](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/ed2e19a47d79701ce7030118e8bc68683271ffd9)) - **avvikelserapport:** added max width to select and text area elements. [TV-407](https://jira.arbetsformedlingen.se/browse/TV-407)-max-width ([ed2e19a](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/ed2e19a47d79701ce7030118e8bc68683271ffd9))
* **avrop:** Changed intro-text inside avrop. ([TV-518](https://jira.arbetsformedlingen.se/browse/TV-518)) ([fc2916f](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/fc2916fb0d6e37fc71df96b5e008fccd43075bd1)) - **avrop:** Changed intro-text inside avrop. ([TV-518](https://jira.arbetsformedlingen.se/browse/TV-518)) ([fc2916f](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/fc2916fb0d6e37fc71df96b5e008fccd43075bd1))
* **avvikelserapport:** changed router navigation, cleanup /[TV-407](https://jira.arbetsformedlingen.se/browse/TV-407)-2 to develop ([2236cc9](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/2236cc9ec85f2f3420f01d4ea5b8002d778149e6)), closes [TV-407-2](https://jira.arbetsformedlingen.se/browse/TV-407-2) [TV-407-2](https://jira.arbetsformedlingen.se/browse/TV-407-2) - **avvikelserapport:** changed router navigation, cleanup /[TV-407](https://jira.arbetsformedlingen.se/browse/TV-407)-2 to develop ([2236cc9](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/2236cc9ec85f2f3420f01d4ea5b8002d778149e6)), closes [TV-407-2](https://jira.arbetsformedlingen.se/browse/TV-407-2) [TV-407-2](https://jira.arbetsformedlingen.se/browse/TV-407-2)
* **avvikelserapport:** fixed validation for dayOrPartOfDay [TV-407](https://jira.arbetsformedlingen.se/browse/TV-407)-fix ([71b00c6](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/71b00c6e90fdb553af0f6accc881e41f8716b21b)) - **avvikelserapport:** fixed validation for dayOrPartOfDay [TV-407](https://jira.arbetsformedlingen.se/browse/TV-407)-fix ([71b00c6](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/71b00c6e90fdb553af0f6accc881e41f8716b21b))
* **avrop:** Implemented custom filters for avrop. ([TV-344](https://jira.arbetsformedlingen.se/browse/TV-344)) ([1feed30](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/1feed30f6fdad8cfff507c96dae86bb4fa82279c)) - **avrop:** Implemented custom filters for avrop. ([TV-344](https://jira.arbetsformedlingen.se/browse/TV-344)) ([1feed30](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/1feed30f6fdad8cfff507c96dae86bb4fa82279c))
* **employees:** Implemented loader inside employees-list when pagination/filtering. ([TV-597](https://jira.arbetsformedlingen.se/browse/TV-597)) ([bc8b09d](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/bc8b09d0dcfdcd53dfa930a76e29dc216e76346f)) - **employees:** Implemented loader inside employees-list when pagination/filtering. ([TV-597](https://jira.arbetsformedlingen.se/browse/TV-597)) ([bc8b09d](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/bc8b09d0dcfdcd53dfa930a76e29dc216e76346f))
* **deltagare:** Implemented role-check and fetching data when needed. ([TV-639](https://jira.arbetsformedlingen.se/browse/TV-639)) ([62fb35c](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/62fb35ca7e685675c0caf33734dd68cf8225d93e)) - **deltagare:** Implemented role-check and fetching data when needed. ([TV-639](https://jira.arbetsformedlingen.se/browse/TV-639)) ([62fb35c](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/62fb35ca7e685675c0caf33734dd68cf8225d93e))
* **avvikelserapport:** implementerat report layout för avvikelserapport. [TV-667](https://jira.arbetsformedlingen.se/browse/TV-667) ([454699b](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/454699b78571e98d924a9242f30fcf8325a51621)), closes [feature/TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [feature/TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [origin/feature/TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [feature/TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [feature/TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [feature/TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-624](https://jira.arbetsformedlingen.se/browse/TV-624) - **avvikelserapport:** implementerat report layout för avvikelserapport. [TV-667](https://jira.arbetsformedlingen.se/browse/TV-667) ([454699b](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/454699b78571e98d924a9242f30fcf8325a51621)), closes [feature/TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [feature/TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [origin/feature/TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [feature/TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [feature/TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633) [TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [feature/TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-634](https://jira.arbetsformedlingen.se/browse/TV-634) [TV-624](https://jira.arbetsformedlingen.se/browse/TV-624)
* **Deltagarlista:** Lade till startdatum, slutdatum, avbrott samt Visa händelser, som öppnar en modal med en deltagares händelser ([TV-606](https://jira.arbetsformedlingen.se/browse/TV-606)) ([68c5c8d](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/68c5c8d4a8fdcf4a497abb85de9298c26fdafcaf)) - **Deltagarlista:** Lade till startdatum, slutdatum, avbrott samt Visa händelser, som öppnar en modal med en deltagares händelser ([TV-606](https://jira.arbetsformedlingen.se/browse/TV-606)) ([68c5c8d](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/68c5c8d4a8fdcf4a497abb85de9298c26fdafcaf))
* **deltagare:** Moved around content between tabs inside deltagare-card. ([TV-638](https://jira.arbetsformedlingen.se/browse/TV-638)) ([14739fb](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/14739fb9e1d06897e5805d1f5c3c5a5194be80c3)) - **deltagare:** Moved around content between tabs inside deltagare-card. ([TV-638](https://jira.arbetsformedlingen.se/browse/TV-638)) ([14739fb](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/14739fb9e1d06897e5805d1f5c3c5a5194be80c3))
* **employee:** Now possible to edit employee and remove data, also changed validation-rules. ([TV-631](https://jira.arbetsformedlingen.se/browse/TV-631)) ([1bbfd57](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/1bbfd57910a1cb19f94cec4feab6c85ac1ffd166)) - **employee:** Now possible to edit employee and remove data, also changed validation-rules. ([TV-631](https://jira.arbetsformedlingen.se/browse/TV-631)) ([1bbfd57](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/1bbfd57910a1cb19f94cec4feab6c85ac1ffd166))
* **avvikelserapport:** show selected questions in preview, renaming. [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633)-2 ([71a98f5](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/71a98f52573edcacd6a1125e0a7c23473bfdec4d)), closes [TV-633-2](https://jira.arbetsformedlingen.se/browse/TV-633-2) [TV-633-2](https://jira.arbetsformedlingen.se/browse/TV-633-2) - **avvikelserapport:** show selected questions in preview, renaming. [TV-633](https://jira.arbetsformedlingen.se/browse/TV-633)-2 ([71a98f5](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/71a98f52573edcacd6a1125e0a7c23473bfdec4d)), closes [TV-633-2](https://jira.arbetsformedlingen.se/browse/TV-633-2) [TV-633-2](https://jira.arbetsformedlingen.se/browse/TV-633-2)
* **employee-invite:** Updated validation of email-addresses and changed text for assigned users. ([TV-628](https://jira.arbetsformedlingen.se/browse/TV-628)) ([84f8737](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/84f8737ec4da773f1256a5673aaf70860462cfa9)) - **employee-invite:** Updated validation of email-addresses and changed text for assigned users. ([TV-628](https://jira.arbetsformedlingen.se/browse/TV-628)) ([84f8737](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/84f8737ec4da773f1256a5673aaf70860462cfa9))
* Uppdatering av rolltexter ([5c30fc7](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/5c30fc7e5070c65f35f32ea817d566dbd6148058)) - Uppdatering av rolltexter ([5c30fc7](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/5c30fc7e5070c65f35f32ea817d566dbd6148058))
* **employee:** Utförande verksamheter select is now wrapping long text instead of ellipsis. Also when toggling the "Alla utförande verksamheter" checkbox the select is resetted. ([TV-620](https://jira.arbetsformedlingen.se/browse/TV-620)) ([91eeb1d](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/91eeb1d8dc7f50a429ef2cd988c16be732225acb)) - **employee:** Utförande verksamheter select is now wrapping long text instead of ellipsis. Also when toggling the "Alla utförande verksamheter" checkbox the select is resetted. ([TV-620](https://jira.arbetsformedlingen.se/browse/TV-620)) ([91eeb1d](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/91eeb1d8dc7f50a429ef2cd988c16be732225acb))
### Bug Fixes ### Bug Fixes
* **employees:** Currentpage is now set to default page inside pagination-component. ([TV-596](https://jira.arbetsformedlingen.se/browse/TV-596)) ([9155cdc](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/9155cdc9ac343168e25afc4fd2fa9d0920ba45ac)) - **employees:** Currentpage is now set to default page inside pagination-component. ([TV-596](https://jira.arbetsformedlingen.se/browse/TV-596)) ([9155cdc](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/9155cdc9ac343168e25afc4fd2fa9d0920ba45ac))
* Fix mock-api login functionality ([52cd7ad](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/52cd7ad6f4282b737756bf1b6d8a2e946218378b)) - Fix mock-api login functionality ([52cd7ad](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/52cd7ad6f4282b737756bf1b6d8a2e946218378b))
* **edit-employee:** Removed duplicate border-color on utförande verksamheter button which falsly overrode styling. ([TV-590](https://jira.arbetsformedlingen.se/browse/TV-590)) ([0f60300](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/0f60300d972766ea790f375206e6d6c40468311b)) - **edit-employee:** Removed duplicate border-color on utförande verksamheter button which falsly overrode styling. ([TV-590](https://jira.arbetsformedlingen.se/browse/TV-590)) ([0f60300](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/0f60300d972766ea790f375206e6d6c40468311b))
* Sidans titel ändras nu korrekt när man går tillbaka till startsidan. ([TV-643](https://jira.arbetsformedlingen.se/browse/TV-643)) ([0302b1a](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/0302b1a1ad672351a702878a411d5bce988af6ba)) - Sidans titel ändras nu korrekt när man går tillbaka till startsidan. ([TV-643](https://jira.arbetsformedlingen.se/browse/TV-643)) ([0302b1a](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/0302b1a1ad672351a702878a411d5bce988af6ba))
* **my-account:** Typo fix inside my-account. ([TV-593](https://jira.arbetsformedlingen.se/browse/TV-593)) ([3bfb8d8](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/3bfb8d8be14b573b59986f6304b8ee82b8269eed)) - **my-account:** Typo fix inside my-account. ([TV-593](https://jira.arbetsformedlingen.se/browse/TV-593)) ([3bfb8d8](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/3bfb8d8be14b573b59986f6304b8ee82b8269eed))
* Ändra ordning på sidornas title så att sidans innehåll kommer först ([TV-644](https://jira.arbetsformedlingen.se/browse/TV-644)) ([caf235a](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/caf235a2b400e244d4134667385612f8f786d9a9)) - Ändra ordning på sidornas title så att sidans innehåll kommer först ([TV-644](https://jira.arbetsformedlingen.se/browse/TV-644)) ([caf235a](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/commits/caf235a2b400e244d4134667385612f8f786d9a9))
## 1.5.1 ## 1.5.1