blocks/community/event-list/community-event.ts (37 lines of code) (raw):
import { formatDate } from '../../../static/js/util/date';
import { nanoid } from 'nanoid';
const DEFAULT_LANG = 'en';
export class CommunityEvent {
id: string;
title: string;
url: string;
subject: string;
speaker: string;
location: string;
online: boolean;
lang: string;
content?: {
video?: string;
slides?: string;
};
startDate: Date;
endDate: Date;
formattedDate: string;
constructor(data: CommunityEventData) {
this.id = nanoid();
this.title = data.title;
this.url = data.url;
this.subject = data.subject;
this.speaker = data.speaker;
this.location = data.location;
this.online = !!data.online;
this.lang = data.lang || DEFAULT_LANG;
this.content = data.content;
this.startDate = new Date(data.startDate + 'T00:00:00');
this.endDate = new Date(data.endDate + 'T23:59:59');
this.formattedDate = formatDate(this.startDate, this.endDate);
}
isUpcoming() {
return this.endDate >= new Date();
}
}