feat(deltagare): Added functionality to filter on only "My deltagare". (TV-405)
Squashed commit of the following: commit f67c9cd63e51bdc84a7c9da4c66b413213c33117 Merge: 84f00ea 0753d39 Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Wed Sep 1 12:00:15 2021 +0200 Merge branch 'feature/TV-405' of ssh://bitbucket.arbetsformedlingen.se:7999/tea/dafa-web-monorepo into feature/TV-405 commit 84f00eab3e211a5102d7abc9902be523f2e5b450 Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Wed Sep 1 11:58:37 2021 +0200 Updated mock-api and removed some unused code commit 0753d39b7bd51163ddf1d2cf91f39a84321e8bb2 Merge: 47c363fa4bc9aaAuthor: Cecilia Varnava <cecilia.varnava@arbetsformedlingen.se> Date: Wed Sep 1 11:46:37 2021 +0200 Merge branch 'develop' into feature/TV-405 commit 14164ca7b01c0954d6f3efd441fef124a564edec Merge: 47c363fa4bc9aaAuthor: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se> Date: Wed Sep 1 10:33:10 2021 +0200 Merge branch 'develop' into feature/TV-405 commit 47c363f6b984d1c46ed2f2bb054b3e541aa01cc3 Author: Cecilia Varnava <cecilia.varnava@arbetsformedlingen.se> Date: Sun Aug 29 19:14:43 2021 +0200 TV-405 cleanup commit 241d67de57ffc5d83b1dfd8e00de9cad7a6b985a Merge: 40f30ffeee20a3Author: Cecilia Varnava <cecilia.varnava@arbetsformedlingen.se> Date: Sun Aug 29 18:54:55 2021 +0200 Merge branch 'develop' into feature/TV-405 # Conflicts: # apps/mina-sidor-fa/src/app/shared/services/api/deltagare.service.ts # mock-api/mina-sidor-fa/server.js commit 40f30ff385022dcac88a8cd3046d01bcd92760bf Author: Cecilia Varnava <cecilia.varnava@arbetsformedlingen.se> Date: Sun Aug 29 18:45:37 2021 +0200 TV-405 temporary empty 'mina deltagare' in mockapi until assign handledare is implemented commit 9bdeefc57dcb7d409abb1d7fe88865392a1b7516 Author: Cecilia Varnava <cecilia.varnava@arbetsformedlingen.se> Date: Wed Aug 25 16:24:08 2021 +0200 TV-405 filter mina deltagare
This commit is contained in:
@@ -3,16 +3,17 @@
|
|||||||
<section class="deltagare">
|
<section class="deltagare">
|
||||||
<h1>Deltagarlista</h1>
|
<h1>Deltagarlista</h1>
|
||||||
<p>
|
<p>
|
||||||
Här ser du en lista på de deltagare du är tilldelad. Klicka på deltagarens namn för att öppna och se mer
|
Här ser du en lista på de deltagare som tillhör din organisation. Klicka på deltagarens namn för att öppna och
|
||||||
information om deltagarna.
|
se mer information om deltagarna.
|
||||||
</p>
|
</p>
|
||||||
<!--
|
<div class="deltagare__filter">
|
||||||
<ul>
|
<digi-form-checkbox
|
||||||
<li><a routerLink="1">Klicka för att gå till sokandeId 1</a></li>
|
class="deltagare__only-my-deltagare"
|
||||||
<li><a routerLink="2">Klicka för att gå till sokandeId 2</a></li>
|
af-label="Visa endast mina deltagare"
|
||||||
<li><a routerLink="3">Klicka för att gå till sokandeId 3</a></li>
|
[afChecked]="onlyMyDeltagare$ | async"
|
||||||
<li><a routerLink="1000">Klicka för att gå till sokandeId 1000</a></li>
|
(afOnChange)="setOnlyMyDeltagare($event.detail.target.checked)"
|
||||||
</ul> -->
|
></digi-form-checkbox>
|
||||||
|
</div>
|
||||||
|
|
||||||
<msfa-deltagare-list
|
<msfa-deltagare-list
|
||||||
*ngIf="allDeltagareData$ | async as allDeltagareData; else loadingRef"
|
*ngIf="allDeltagareData$ | async as allDeltagareData; else loadingRef"
|
||||||
|
|||||||
@@ -1,2 +1,7 @@
|
|||||||
|
@import 'variables/gutters';
|
||||||
|
|
||||||
.deltagare {
|
.deltagare {
|
||||||
|
&__filter {
|
||||||
|
margin: $digi--layout--gutter--l 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { Observable } from 'rxjs';
|
|||||||
export class DeltagareComponent {
|
export class DeltagareComponent {
|
||||||
allDeltagareData$: Observable<DeltagareCompactData> = this.deltagareService.allDeltagareData$;
|
allDeltagareData$: Observable<DeltagareCompactData> = this.deltagareService.allDeltagareData$;
|
||||||
sort$: Observable<Sort<keyof DeltagareCompact>> = this.deltagareService.sort$;
|
sort$: Observable<Sort<keyof DeltagareCompact>> = this.deltagareService.sort$;
|
||||||
|
onlyMyDeltagare$: Observable<boolean> = this.deltagareService.onlyMyDeltagare$;
|
||||||
|
|
||||||
constructor(private deltagareService: DeltagareService) {}
|
constructor(private deltagareService: DeltagareService) {}
|
||||||
|
|
||||||
@@ -20,6 +21,10 @@ export class DeltagareComponent {
|
|||||||
this.deltagareService.setSort(key);
|
this.deltagareService.setSort(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setOnlyMyDeltagare(checked: boolean): void {
|
||||||
|
this.deltagareService.setOnlyMyDeltagare(checked);
|
||||||
|
}
|
||||||
|
|
||||||
setNewPage(page: number): void {
|
setNewPage(page: number): void {
|
||||||
this.deltagareService.setPage(page);
|
this.deltagareService.setPage(page);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ export class DeltagareService extends UnsubscribeDirective {
|
|||||||
private _page$ = new BehaviorSubject<number>(1);
|
private _page$ = new BehaviorSubject<number>(1);
|
||||||
private _sort$ = new BehaviorSubject<Sort<keyof DeltagareCompact>>({ key: 'fullName', order: SortOrder.ASC });
|
private _sort$ = new BehaviorSubject<Sort<keyof DeltagareCompact>>({ key: 'fullName', order: SortOrder.ASC });
|
||||||
public sort$: Observable<Sort<keyof DeltagareCompact>> = this._sort$.asObservable();
|
public sort$: Observable<Sort<keyof DeltagareCompact>> = this._sort$.asObservable();
|
||||||
|
private _onlyMyDeltagare$ = new BehaviorSubject<boolean>(false);
|
||||||
|
public onlyMyDeltagare$: Observable<boolean> = this._onlyMyDeltagare$.asObservable();
|
||||||
|
|
||||||
constructor(private httpClient: HttpClient, private errorService: ErrorService) {
|
constructor(private httpClient: HttpClient, private errorService: ErrorService) {
|
||||||
super();
|
super();
|
||||||
@@ -66,7 +68,10 @@ export class DeltagareService extends UnsubscribeDirective {
|
|||||||
this._limit$,
|
this._limit$,
|
||||||
this._page$,
|
this._page$,
|
||||||
this._sort$,
|
this._sort$,
|
||||||
]).pipe(switchMap(([limit, page, sort]) => this._fetchAllDeltagare$(limit, page, sort)));
|
this._onlyMyDeltagare$,
|
||||||
|
]).pipe(
|
||||||
|
switchMap(([limit, page, sort, onlyMyDeltagare]) => this._fetchAllDeltagare$(limit, page, sort, onlyMyDeltagare))
|
||||||
|
);
|
||||||
|
|
||||||
public setSort(newSortKey: keyof DeltagareCompact): void {
|
public setSort(newSortKey: keyof DeltagareCompact): void {
|
||||||
const currentSort = this._sort$.getValue();
|
const currentSort = this._sort$.getValue();
|
||||||
@@ -83,7 +88,8 @@ export class DeltagareService extends UnsubscribeDirective {
|
|||||||
private _fetchAllDeltagare$(
|
private _fetchAllDeltagare$(
|
||||||
limit: number,
|
limit: number,
|
||||||
page: number,
|
page: number,
|
||||||
sort: Sort<keyof DeltagareCompact>
|
sort: Sort<keyof DeltagareCompact>,
|
||||||
|
onlyMyDeltagare?: boolean
|
||||||
): Observable<DeltagareCompactData> {
|
): Observable<DeltagareCompactData> {
|
||||||
const params: Params = {
|
const params: Params = {
|
||||||
sort: sort.key as string,
|
sort: sort.key as string,
|
||||||
@@ -92,6 +98,9 @@ export class DeltagareService extends UnsubscribeDirective {
|
|||||||
page: page.toString(),
|
page: page.toString(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (onlyMyDeltagare) {
|
||||||
|
params.onlyMyDeltagare = onlyMyDeltagare.toString();
|
||||||
|
}
|
||||||
return this.httpClient
|
return this.httpClient
|
||||||
.get<DeltagareCompactApiResponse>(this._apiBaseUrl, {
|
.get<DeltagareCompactApiResponse>(this._apiBaseUrl, {
|
||||||
params,
|
params,
|
||||||
@@ -108,6 +117,10 @@ export class DeltagareService extends UnsubscribeDirective {
|
|||||||
this._currentDeltagareId$.next(currentDeltagareId);
|
this._currentDeltagareId$.next(currentDeltagareId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public setOnlyMyDeltagare(value: boolean): void {
|
||||||
|
this._onlyMyDeltagare$.next(value);
|
||||||
|
}
|
||||||
|
|
||||||
private _fetchContactInformation$(id: string): Observable<ContactInformation | Partial<ContactInformation>> {
|
private _fetchContactInformation$(id: string): Observable<ContactInformation | Partial<ContactInformation>> {
|
||||||
return this.httpClient.get<{ data: ContactInformationResponse }>(`${this._apiBaseUrl}/${id}/contact`).pipe(
|
return this.httpClient.get<{ data: ContactInformationResponse }>(`${this._apiBaseUrl}/${id}/contact`).pipe(
|
||||||
map(({ data }) => mapResponseToContactInformation(data)),
|
map(({ data }) => mapResponseToContactInformation(data)),
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ function generateAvrop(amount = 10, deltagare, handledare) {
|
|||||||
ordernummer: `AKTTEST-${faker.datatype.number({ min: 10000, max: 99999 })}`,
|
ordernummer: `AKTTEST-${faker.datatype.number({ min: 10000, max: 99999 })}`,
|
||||||
bokningsId: faker.datatype.number({ min: 100000, max: 999999 }),
|
bokningsId: faker.datatype.number({ min: 100000, max: 999999 }),
|
||||||
personnummer: currentDeltagare.personnummer,
|
personnummer: currentDeltagare.personnummer,
|
||||||
sokandeId: currentDeltagare.id,
|
sokandeId: currentDeltagare.sokandeId,
|
||||||
tjanstekod: tjanst.id,
|
tjanstekod: tjanst.id,
|
||||||
tjansteNamn: tjanst.label,
|
tjansteNamn: tjanst.label,
|
||||||
deltagandeGrad: FREKVENSER[Math.floor(Math.random() * FREKVENSER.length)],
|
deltagandeGrad: FREKVENSER[Math.floor(Math.random() * FREKVENSER.length)],
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ function generateDeltagare(amount = 10) {
|
|||||||
|
|
||||||
const deltagare = {
|
const deltagare = {
|
||||||
id,
|
id,
|
||||||
|
sokandeId: id,
|
||||||
contact: {
|
contact: {
|
||||||
fornamn,
|
fornamn,
|
||||||
efternamn,
|
efternamn,
|
||||||
|
|||||||
@@ -8,11 +8,12 @@ import handledare from './handledare.js';
|
|||||||
import languages from './languages.js';
|
import languages from './languages.js';
|
||||||
import participants from './participants.js';
|
import participants from './participants.js';
|
||||||
import tjanster from './tjanster.js';
|
import tjanster from './tjanster.js';
|
||||||
|
import chooseRandom from './utils/choose-random.util.js';
|
||||||
|
|
||||||
const generatedEmployees = employees.generate(50);
|
const generatedEmployees = employees.generate(50);
|
||||||
const generatedDeltagare = deltagare.generate(50);
|
const generatedDeltagare = deltagare.generate(50);
|
||||||
const generatedHandledare = handledare.generate(generatedEmployees.slice(0, 6));
|
const generatedHandledare = handledare.generate(generatedEmployees.slice(0, 6));
|
||||||
const generatedAvrop = avrop.generate(10, generatedDeltagare.slice(0, 10), generatedHandledare);
|
const generatedAvrop = avrop.generate(10, generatedDeltagare.slice(0, 25), generatedHandledare);
|
||||||
const generatedTjanster = tjanster.generate();
|
const generatedTjanster = tjanster.generate();
|
||||||
const avropTjanster = [];
|
const avropTjanster = [];
|
||||||
const utforandeVerksamheter = [];
|
const utforandeVerksamheter = [];
|
||||||
@@ -98,6 +99,7 @@ const apiData = {
|
|||||||
currentUser: currentUser.generate(),
|
currentUser: currentUser.generate(),
|
||||||
getTokenFullAccess: authTokens.auth_code_from_CIAM_with_all_permissions,
|
getTokenFullAccess: authTokens.auth_code_from_CIAM_with_all_permissions,
|
||||||
invites: [],
|
invites: [],
|
||||||
|
minaDeltagare: chooseRandom(generatedAvrop, 3),
|
||||||
};
|
};
|
||||||
|
|
||||||
fs.writeFileSync('api.json', JSON.stringify(apiData, null, '\t'));
|
fs.writeFileSync('api.json', JSON.stringify(apiData, null, '\t'));
|
||||||
|
|||||||
@@ -28,10 +28,12 @@ server.use(
|
|||||||
'/avrop/utforandeverksamheter*': '/utforandeVerksamheter$1',
|
'/avrop/utforandeverksamheter*': '/utforandeVerksamheter$1',
|
||||||
'/avrop/kommuner*': '/kommuner$1',
|
'/avrop/kommuner*': '/kommuner$1',
|
||||||
'/avrop*utforandeverksamhetId*': '/avrop$1utforandeVerksamhetId$2',
|
'/avrop*utforandeverksamhetId*': '/avrop$1utforandeVerksamhetId$2',
|
||||||
|
'/deltagare*onlyMyDeltagare=*': '/minaDeltagare',
|
||||||
'/avrop*tjanstKod*': '/avrop$1tjanstekod$2',
|
'/avrop*tjanstKod*': '/avrop$1tjanstekod$2',
|
||||||
'/deltagare?*': '/avrop?$1',
|
'/deltagare?*': '/avrop?$1',
|
||||||
'/deltagare/:sokandeId/avrop': '/avrop?sokandeId=:sokandeId',
|
'/deltagare/:sokandeId/avrop': '/avrop?sokandeId=:sokandeId',
|
||||||
'/deltagare/:sokandeId/*': '/deltagare/:sokandeId',
|
'/deltagare/:sokandeId/*': '/deltagare/:sokandeId',
|
||||||
|
'/employees/invite': '/invites',
|
||||||
'*page=*': '$1_page=$2',
|
'*page=*': '$1_page=$2',
|
||||||
'*limit=*': '$1_limit=$2',
|
'*limit=*': '$1_limit=$2',
|
||||||
'*sort=*': '$1_sort=$2',
|
'*sort=*': '$1_sort=$2',
|
||||||
|
|||||||
Reference in New Issue
Block a user