feat(avrop): Implemented custom filters for avrop. (TV-344)

Squashed commit of the following:

commit 4afa2445d552cb82ccc40a0e3ad706173ebc541f
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Thu Sep 16 16:55:46 2021 +0200

    Fixade bugg som gjorde att inte selekteringar nollställdes ifall man stängde utan att spara

commit ddda68558f3ba253e67a66b773f99ba781a3b46d
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Thu Sep 16 14:18:48 2021 +0200

    Fixed issue with unavailable options

commit 58bc4aa4f34ff7e2b13e8ea85182c31735df08a0
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Thu Sep 16 12:56:55 2021 +0200

    Added margin to unavailable selected items

commit 93e1b61bbbe1ec7a6e785ed468ba8648668f30c8
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Thu Sep 16 12:53:52 2021 +0200

    Fixed issue where selected filters are not selected

commit 582a89be65adb17811c6e14cedad327b6960b20c
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Thu Sep 16 11:54:17 2021 +0200

    refactor

commit ddc300d942b069d7440c0f24da8bcb917df65df7
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Thu Sep 16 11:52:58 2021 +0200

    replace ng-uuid package with util function

commit 976a78aa22a5abe587e0f33e4255f44521b5f5f6
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Thu Sep 16 11:47:53 2021 +0200

    fix propagate

commit dabe345243e0e5454ff9ef5af0ccff84b1fc4a09
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Thu Sep 16 11:22:58 2021 +0200

    .

commit e42c6e5588cd3cabd2cec3c10f363b193536ad7e
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Thu Sep 16 09:17:43 2021 +0200

    Implemented ControlValueAccessor

commit 045492202866de21dd0ed34803ab2f3bfc3bb8e3
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Tue Sep 14 13:26:24 2021 +0200

    refactor

commit 574a3bc505b455bdb100a2e064ad235176545536
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Tue Sep 14 13:21:53 2021 +0200

    refactor

commit 6ff07030584bb4d904a370f08817e246705af035
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Tue Sep 14 13:17:06 2021 +0200

    refactoring

commit 365fc080a49dc487423048ed0dea3744be8dd0c5
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Tue Sep 14 12:10:12 2021 +0200

    styling och tillgänglighet

commit f7e7f3ffa78c5328029513784114083a2a06cd9d
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Tue Sep 14 10:54:14 2021 +0200

    refactor multiselect

commit 91d0e832f6f79991b8577f5aaabd657a5f8bbba2
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Mon Sep 13 16:57:25 2021 +0200

    replace temporary filter with new module

commit 90829e451eebf98a63a5934066563028b80fbadb
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Mon Sep 13 16:33:14 2021 +0200

    Add styling from tree-node-selector

commit df84e3e75105ffe0c6459606c58684fab1411561
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Mon Sep 13 15:58:37 2021 +0200

    feature(General): Added a generic dropdown component (TV-344)

commit 9022427d59290dfd2b08c4a076d6b0690d44d926
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Mon Sep 13 13:25:05 2021 +0200

    Update mock-apis
This commit is contained in:
Erik Tiekstra
2021-09-17 15:28:44 +02:00
parent ed2e19a47d
commit 1feed30f6f
39 changed files with 818 additions and 182 deletions

View File

@@ -2,8 +2,8 @@ import { Injectable } from '@angular/core';
import { Params } from '@msfa-models/api/params.model';
import { Avrop, AvropCompactData } from '@msfa-models/avrop.model';
import { Handledare } from '@msfa-models/handledare.model';
import { MultiselectFilterOption } from '@msfa-models/multiselect-filter-option';
import { AvropApiService } from '@msfa-services/api/avrop-api.service';
import { MultiselectFilterOption } from '@msfa-shared/components/multiselect/multiselect-filter-option';
import { BehaviorSubject, combineLatest, Observable } from 'rxjs';
import { filter, map, switchMap } from 'rxjs/operators';
@@ -50,24 +50,24 @@ export class AvropService {
this._filteredKommuner$,
this._page$,
this._limit$,
]).pipe(switchMap(() => this.avropApiService.fetchAvrop$(this._getParams('avrop'))));
]).pipe(switchMap(() => this.avropApiService.fetchAvrop$(this.filtersForAvrop)));
public availableTjanster$: Observable<MultiselectFilterOption[]> = combineLatest([
this._filteredUtforandeVerksamheter$,
this._filteredKommuner$,
]).pipe(switchMap(() => this.avropApiService.fetchAvailableTjanster$(this._getParams('tjanster'))));
]).pipe(switchMap(() => this.avropApiService.fetchAvailableTjanster$(this.filtersForTjanster)));
public availableUtforandeVerksamheter$: Observable<MultiselectFilterOption[]> = combineLatest([
this._filteredTjanster$,
this._filteredKommuner$,
]).pipe(
switchMap(() => this.avropApiService.fetchAvailableUtforandeVerksamheter$(this._getParams('utforandeVerksamheter')))
switchMap(() => this.avropApiService.fetchAvailableUtforandeVerksamheter$(this.filtersForUtforandeVerksamheter))
);
public availableKommuner$: Observable<MultiselectFilterOption[]> = combineLatest([
this._filteredTjanster$,
this._filteredUtforandeVerksamheter$,
]).pipe(switchMap(() => this.avropApiService.fetchAvailableKommuner$(this._getParams('kommuner'))));
]).pipe(switchMap(() => this.avropApiService.fetchAvailableKommuner$(this.filtersForKommuner)));
private _lockedAvrop$: Observable<Avrop[]> = combineLatest([this.selectedAvrop$, this.avropIsLocked$]).pipe(
map(([selectedAvrop, isLocked]) => (isLocked ? selectedAvrop : null))
@@ -102,48 +102,57 @@ export class AvropService {
return 1;
}
private _getParams(type: 'avrop' | 'kommuner' | 'tjanster' | 'utforandeVerksamheter'): Params {
const tjanstKoder = this._filteredTjanster$.getValue()?.length
? { tjanstKoder: this._filteredTjanster$.getValue().map(tjanst => tjanst.id) }
private get tjanstKoder(): { tjanstKoder: string[] } | null {
return this._filteredTjanster$.value?.length
? { tjanstKoder: this._filteredTjanster$.value.map(tjanst => tjanst.id) }
: null;
const kommunKoder = this._filteredKommuner$.getValue()?.length
? { kommunKoder: this._filteredKommuner$.getValue().map(kommun => kommun.id) }
}
private get kommunKoder(): { kommunKoder: string[] } | null {
return this._filteredKommuner$.value?.length
? { kommunKoder: this._filteredKommuner$.value.map(kommun => kommun.id) }
: null;
const utforandeverksamhetIds = this._filteredUtforandeVerksamheter$.getValue()?.length
}
private get utforandeverksamhetIds(): { utforandeverksamhetIds: string[] } | null {
return this._filteredUtforandeVerksamheter$.value?.length
? {
utforandeverksamhetIds: this._filteredUtforandeVerksamheter$
.getValue()
.map(utforandeVerksamhet => utforandeVerksamhet.id),
utforandeverksamhetIds: this._filteredUtforandeVerksamheter$.value.map(
utforandeVerksamhet => utforandeVerksamhet.id
),
}
: null;
}
switch (type) {
case 'avrop':
return {
...tjanstKoder,
...kommunKoder,
...utforandeverksamhetIds,
page: this._page$.getValue().toString(),
limit: this._limit$.getValue().toString(),
};
case 'kommuner':
return {
...tjanstKoder,
...utforandeverksamhetIds,
};
case 'tjanster':
return {
...kommunKoder,
...utforandeverksamhetIds,
};
case 'utforandeVerksamheter':
return {
...tjanstKoder,
...kommunKoder,
};
default:
return {};
}
private get filtersForAvrop(): Params {
return {
...this.tjanstKoder,
...this.kommunKoder,
...this.utforandeverksamhetIds,
page: this._page$.value.toString(),
limit: this._limit$.value.toString(),
};
}
private get filtersForTjanster(): Params {
return {
...this.kommunKoder,
...this.utforandeverksamhetIds,
};
}
private get filtersForUtforandeVerksamheter(): Params {
return {
...this.tjanstKoder,
...this.kommunKoder,
};
}
private get filtersForKommuner(): Params {
return {
...this.tjanstKoder,
...this.utforandeverksamhetIds,
};
}
public setSelectedAvrop(deltagare: Avrop[]): void {