Search⌘ K
AI Features

Adding Events to the Calendar

Explore how to enhance the dashboard calendar in Angular by adding event start and end dates converted to JavaScript Date objects, assigning color properties to events, and implementing error and no-event messages. Understand how to write unit tests for these features using Jasmine to ensure proper integration and functionality.

At the moment, there’s a calendar within our dashboard, but there are no events under any of the week days.

Below is our updated code. Use this to make further changes.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>LetsGetLunch</title>
  <base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
  <app-root></app-root>
</body>
</html>
Updated dashboard view

Add calendar event properties

If you’re not sure if there are any events for your user, simply add a console.log() to the response within ngOnInit.

TypeScript 3.3.4
// src/app/dashboard/dashboard.component.ts
ngOnInit() {
const id = this.authService.currentUser()._id;
this.eventsService.getUserEvents(id).subscribe(res => {
console.log('events for user ', res);
if (res) {
this.events = res;
}
});
}

If the console within your browser shows null, create an event, because we’ll need one for display purposes.

At the moment, a sample response from getUserEvents might look like this.

TypeScript 3.3.4
[{
'_id': '5a55135639fbc4ca3ee0ce5a',
'_creator': '5a550ea739fbc4ca3ee0ce58',
'title': 'My first event',
'description': 'My first description',
'city': 'Atlanta',
'state': 'GA',
'startTime': '2018-01-09T19:00:00.000Z',
'endTime': '2018-01-09T20:00:00.000Z',
'__v': 0,
'suggestLocations': true,
'members': [
'5a550ea739fbc4ca3ee0ce58'
]
}]

We need it to look like this.

TypeScript 3.3.4
[{
'_id': '5a55135639fbc4ca3ee0ce5a',
'_creator': '5a550ea739fbc4ca3ee0ce58',
'title': 'My first event',
'description': 'My first description',
'city': 'Atlanta',
'state': 'GA',
'startTime': '2018-01-09T19:00:00.000Z',
'endTime': '2018-01-09T20:00:00.000Z',
'__v': 0,
'suggestLocations': true,
'members': [
'5a550ea739fbc4ca3ee0ce58'
],
'start': Tue Jan 30 2018 00:00:00 GMT-0500 (EST),
'end': Thu Feb 01 2018 00:00:00 GMT-0500 (EST),
'color': {'primary': '#1E90FF', 'secondary': '#D1E8FF'}
}]

Our startTime and endTime, which are dates in ISO format, must be converted to JavaScript dates. More importantly, they must be set to the start and end properties. We also need to add a color property to the object, because the library requires this as well.

Once again, this isn’t exactly intuitive. This is a part of using ...