From 754408dfa30bde57a5183c7268ed0ee24869c307 Mon Sep 17 00:00:00 2001 From: Patrick Mueller Date: Wed, 28 Dec 2022 15:27:31 +0100 Subject: [PATCH] More performant implementation of event filter --- src/app/pages/admin/admin.component.ts | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/app/pages/admin/admin.component.ts b/src/app/pages/admin/admin.component.ts index 372287b..c02ee8c 100644 --- a/src/app/pages/admin/admin.component.ts +++ b/src/app/pages/admin/admin.component.ts @@ -33,15 +33,12 @@ export class AdminComponent implements OnInit { getEvents(): void { this.events = []; - if(this.selectedCalendar === '') { + if (this.selectedCalendar === '') { return; } this.api.getEvents(this.selectedCalendar).subscribe((events: Event[]): void => { - for(let event of events) { - if(!this.checkEventMeetsFilterCriteria(event)) { - continue; - } + for (let event of events) { this.events.push({ ...event, startDateTime: new Date(event.startDateTime), @@ -49,6 +46,7 @@ export class AdminComponent implements OnInit { createdDate: new Date(event.createdDate) }); } + this.filterEvents(); this.sortEvents(); }); } @@ -64,7 +62,7 @@ export class AdminComponent implements OnInit { } getCalendarId(text: string): number { - switch(text) { + switch (text) { case 'public': return 1; case 'members': @@ -76,6 +74,12 @@ export class AdminComponent implements OnInit { } } + filterEvents() { + this.events = this.events.filter((event) => { + return this.checkEventMeetsFilterCriteria(event); + }); + } + checkEventMeetsFilterCriteria(event: Event): boolean { switch (this.eventFilter) { case '': @@ -105,7 +109,7 @@ export class AdminComponent implements OnInit { } sortEvents(): void { - this.events.sort((a,b) => { + this.events.sort((a, b) => { switch (this.eventSorting) { case '': return 1; @@ -121,6 +125,6 @@ export class AdminComponent implements OnInit { return 1; } return 1; - }) + }); } }