From e4a27c67a9c34f8d10ecc39c4a047cbbc913864f Mon Sep 17 00:00:00 2001 From: Patrick Uhlmann Date: Wed, 3 Jan 2024 21:25:34 +0100 Subject: [PATCH] kursfilter in frontend issue #7 --- .../src/app/event/components/eventlist.component.html | 9 +++++++++ .../src/app/event/components/eventlist.component.ts | 10 +++++++++- frontend/src/app/event/services/event.service.ts | 5 ++++- frontend/src/app/event/services/masterdata.service.ts | 5 +++++ 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/event/components/eventlist.component.html b/frontend/src/app/event/components/eventlist.component.html index 6e0efb2..8640f80 100644 --- a/frontend/src/app/event/components/eventlist.component.html +++ b/frontend/src/app/event/components/eventlist.component.html @@ -25,6 +25,15 @@ Text im Name + + Kursart + + Alle + @for (kursart of kursarten; track kursart) { + {{kursart}} + } + + } @if (this.isLoadingMasterdata || this.isLoading) { diff --git a/frontend/src/app/event/components/eventlist.component.ts b/frontend/src/app/event/components/eventlist.component.ts index 713da01..d79fe66 100644 --- a/frontend/src/app/event/components/eventlist.component.ts +++ b/frontend/src/app/event/components/eventlist.component.ts @@ -29,6 +29,7 @@ export class EventListComponent { title = 'eventoverview'; events = new MatTableDataSource([] as CeviEvent[]); organisations = [] as string[]; + kursarten = [] as string[]; types = [] as string[]; isLoading = true; isError = false; @@ -36,6 +37,7 @@ export class EventListComponent { isErrorMasterdata = false; organisation = 'all'; eventType = 'all'; + kursart = 'all'; displayedColumns: string[] = ['group', 'name', 'startsAt', 'finishAt', 'link']; public nameFilter!: FormControl; @@ -67,6 +69,7 @@ export class EventListComponent { next: (data: Masterdata) => { this.organisations = data.organisations.map(o => o.name); this.types = data.eventTypes; + this.kursarten = data.kursarten.map(k => k.name); this.isLoadingMasterdata = false }, error: (e: any) => { @@ -96,8 +99,13 @@ export class EventListComponent { this.loadEventsWithFilter(); } + filterByKursart($event: MatSelectChange) { + this.kursart = $event.value; + this.loadEventsWithFilter(); + } + loadEventsWithFilter() { - this.service.getEventsWithFilter(this.organisation, this.eventType, this.nameFilter.value).subscribe({ + this.service.getEventsWithFilter(this.organisation, this.eventType, this.nameFilter.value, this.kursart).subscribe({ next: (data: CeviEvent[]) => { this.events.data = data; this.isLoading = false}, diff --git a/frontend/src/app/event/services/event.service.ts b/frontend/src/app/event/services/event.service.ts index aa61905..4e6a3a9 100644 --- a/frontend/src/app/event/services/event.service.ts +++ b/frontend/src/app/event/services/event.service.ts @@ -18,7 +18,7 @@ export interface CeviEvent { export class EventService { constructor(private http: HttpClient) { } - getEventsWithFilter(filterOrganisation: string, filterEventType: string, nameFilter: string) { + getEventsWithFilter(filterOrganisation: string, filterEventType: string, nameFilter: string, kursartFilter: string) { let params = new HttpParams(); if (filterOrganisation !== 'all') { @@ -30,6 +30,9 @@ export class EventService { if (nameFilter !== '') { params = params.set('nameContains', nameFilter); } + if (kursartFilter !== 'all') { + params = params.set('kursartFilter', kursartFilter); + } return this.http.get(environment.apiUri + '/events?' + params.toString()); } diff --git a/frontend/src/app/event/services/masterdata.service.ts b/frontend/src/app/event/services/masterdata.service.ts index be91539..78976a3 100644 --- a/frontend/src/app/event/services/masterdata.service.ts +++ b/frontend/src/app/event/services/masterdata.service.ts @@ -5,12 +5,17 @@ import { environment } from '../../../environments/environment'; export interface Masterdata { organisations: Organisation[]; eventTypes: string[]; + kursarten: Kursart[]; } export interface Organisation { name: string; } +export interface Kursart { + name: string; +} + @Injectable({ providedIn: 'root' })