diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2021-04-13 00:52:32 -0500 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2021-04-13 00:52:32 -0500 |
| commit | f3619b20e1c5baa342eb7466c67c44d3192bb3eb (patch) | |
| tree | 64a6981599ddcb9fa8ede5364770e1f145c1086f /src/models/EventInfo.ts | |
| parent | 67b7f56f9aeaf5d32cc07d0d776d2e4e95dea21c (diff) | |
Initial TypeScript refactoring
Diffstat (limited to 'src/models/EventInfo.ts')
| -rw-r--r-- | src/models/EventInfo.ts | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/models/EventInfo.ts b/src/models/EventInfo.ts new file mode 100644 index 0000000..4493162 --- /dev/null +++ b/src/models/EventInfo.ts @@ -0,0 +1,46 @@ +export default class EventInfo { + days: string; + + start: number; + + end: number; + + constructor(days: string = '', start = 0, end = 0) { + this.days = days; + this.start = start; + this.end = end; + } + + static timeToStr(time: number) { + let hour = Math.floor(time / 100); + const minute = time % 100; + const meridiem = (hour < 12) ? 'AM' : 'PM'; + + if (hour === 0) { + hour = 12; + } else if (hour > 12) { + hour -= 12; + } + + if (minute < 10) { + return `${hour}:0${minute} ${meridiem}`; + } + return `${hour}:${minute} ${meridiem}`; + } + + conflictsWith(event: EventInfo) { + 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)}`; + } +} |
