#7: Adding filters
All checks were successful
Jenkins Production Deployment

This commit is contained in:
Patrick Müller 2022-12-28 14:10:39 +01:00
parent 85ffaea589
commit 1990c9a42d
Signed by: Paddy
GPG Key ID: 37ABC11275CAABCE
2 changed files with 47 additions and 3 deletions

View File

@ -6,11 +6,21 @@
<input id="name" type="text" aria-label="Your Name" (keyup.enter)="login()" [(ngModel)]="name"> <input id="name" type="text" aria-label="Your Name" (keyup.enter)="login()" [(ngModel)]="name">
</div> </div>
<div *ngIf="isLoggedIn"> <div *ngIf="isLoggedIn">
<span>Logged in as {{getUserName()}}&nbsp; | &nbsp;</span>
<span>Calendar: </span>
<select [(ngModel)]="selectedCalendar" (change)="handleCalendarChange()"> <select [(ngModel)]="selectedCalendar" (change)="handleCalendarChange()">
<option value="" disabled selected hidden>Select calendar</option> <option value="" disabled selected hidden>Select calendar</option>
<option>public</option> <option>public</option>
<option>members</option> <option>members</option>
<option>management</option> <option>management</option>
</select> </select>
<span>&nbsp; | &nbsp;</span>
<span>Filter: </span>
<select [(ngModel)]="eventFilter" (change)="getEvents()">
<option value="" disabled selected hidden>Select filter</option>
<option value="all">All Events</option>
<option value="future">Future Events only</option>
<option value="past">Past Events only</option>
</select>
<app-events-table [events]="this.events" [selectedCalendar]="getCalendarId(selectedCalendar)"></app-events-table> <app-events-table [events]="this.events" [selectedCalendar]="getCalendarId(selectedCalendar)"></app-events-table>
</div> </div>

View File

@ -15,6 +15,8 @@ export class AdminComponent implements OnInit {
selectedCalendar: string = ''; selectedCalendar: string = '';
password: string = ''; password: string = '';
name: string = ''; name: string = '';
eventFilter: string = '';
constructor( constructor(
private api: ApiService private api: ApiService
) { ) {
@ -28,19 +30,24 @@ export class AdminComponent implements OnInit {
} }
getEvents(): void { getEvents(): void {
this.events = [];
if(this.selectedCalendar === '') { if(this.selectedCalendar === '') {
return; return;
} }
this.api.getEvents(this.selectedCalendar).subscribe((events: Event[]): void => { this.api.getEvents(this.selectedCalendar).subscribe((events: Event[]): void => {
events.forEach((event: Event) => { for(let event of events) {
if(!this.checkEventMeetsFilterCriteria(event)) {
continue;
}
this.events.push({ this.events.push({
...event, ...event,
startDateTime: new Date(event.startDateTime), startDateTime: new Date(event.startDateTime),
endDateTime: new Date(event.endDateTime), endDateTime: new Date(event.endDateTime),
createdDate: new Date(event.createdDate) createdDate: new Date(event.createdDate)
}) })
}) }
}) })
} }
@ -51,7 +58,6 @@ export class AdminComponent implements OnInit {
} }
handleCalendarChange() { handleCalendarChange() {
this.events = [];
this.getEvents(); this.getEvents();
} }
@ -67,4 +73,32 @@ export class AdminComponent implements OnInit {
return -1; return -1;
} }
} }
checkEventMeetsFilterCriteria(event: Event): boolean {
switch (this.eventFilter) {
case '':
return true;
case 'all':
return true;
case 'future':
return this.reduceToDay(new Date(event.endDateTime)) >= this.reduceToDay(new Date());
case 'past':
return this.reduceToDay(new Date(event.endDateTime)) < this.reduceToDay(new Date());
default:
return true;
}
}
reduceToDay(date: Date): Date {
let dayOnlyDate: Date = new Date();
dayOnlyDate.setFullYear(date.getFullYear());
dayOnlyDate.setMonth(date.getMonth());
dayOnlyDate.setDate(date.getDate());
return dayOnlyDate;
}
getUserName(): string {
return UtilsService.getNameFromLocalStorage();
}
} }