From 74e6cc31e83ad570a9f06765d288e9024736e73f Mon Sep 17 00:00:00 2001 From: Furkan Sahin Date: Sat, 10 Apr 2021 21:35:13 -0500 Subject: Commit MVP --- src/models/EventInfo.js | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/models/EventInfo.js (limited to 'src/models/EventInfo.js') diff --git a/src/models/EventInfo.js b/src/models/EventInfo.js new file mode 100644 index 0000000..c1624a8 --- /dev/null +++ b/src/models/EventInfo.js @@ -0,0 +1,41 @@ +export default class EventInfo { + constructor(days = '', start = 0, end = 0) { + this.days = days; + this.start = start; + this.end = end; + } + + static timeToStr(time) { + let hour = Math.floor(time / 100); + let minute = time % 100; + const meridiem = (hour < 12) ? 'AM' : 'PM'; + + if (hour === 0) { + hour = 12; + } else if (hour > 12) { + hour -= 12; + } + + if (minute < 10) { + minute = `0${minute}`; + } + + return `${hour}:${minute} ${meridiem}`; + } + + conflictsWith(event) { + const daysConflict = event.days.match(new RegExp(`[${this.days}]`)); + + if (daysConflict) { + return (this.start <= event.end) && (event.start <= this.end); + } + return false; + } + + get info() { + if (this.days === '') { + return 'ONLINE'; + } + return `${this.days} ${EventInfo.timeToStr(this.start)}-${EventInfo.timeToStr(this.end)}`; + } +} -- cgit v1.2.3