aboutsummaryrefslogtreecommitdiff
path: root/src/models/EventInfo.ts
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2021-04-13 00:52:32 -0500
committerFurkan Sahin <furkan-dev@proton.me>2021-04-13 00:52:32 -0500
commitf3619b20e1c5baa342eb7466c67c44d3192bb3eb (patch)
tree64a6981599ddcb9fa8ede5364770e1f145c1086f /src/models/EventInfo.ts
parent67b7f56f9aeaf5d32cc07d0d776d2e4e95dea21c (diff)
Initial TypeScript refactoring
Diffstat (limited to 'src/models/EventInfo.ts')
-rw-r--r--src/models/EventInfo.ts46
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)}`;
+ }
+}