From f3619b20e1c5baa342eb7466c67c44d3192bb3eb Mon Sep 17 00:00:00 2001 From: Furkan Sahin Date: Tue, 13 Apr 2021 00:52:32 -0500 Subject: Initial TypeScript refactoring --- src/models/EventInfo.js | 41 ----------------------------------------- src/models/EventInfo.ts | 46 ++++++++++++++++++++++++++++++++++++++++++++++ src/models/Lab.js | 17 ----------------- src/models/Lab.ts | 23 +++++++++++++++++++++++ src/models/PeerTeacher.js | 29 ----------------------------- src/models/PeerTeacher.ts | 41 +++++++++++++++++++++++++++++++++++++++++ 6 files changed, 110 insertions(+), 87 deletions(-) delete mode 100644 src/models/EventInfo.js create mode 100644 src/models/EventInfo.ts delete mode 100644 src/models/Lab.js create mode 100644 src/models/Lab.ts delete mode 100644 src/models/PeerTeacher.js create mode 100644 src/models/PeerTeacher.ts (limited to 'src/models') diff --git a/src/models/EventInfo.js b/src/models/EventInfo.js deleted file mode 100644 index c1624a8..0000000 --- a/src/models/EventInfo.js +++ /dev/null @@ -1,41 +0,0 @@ -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)}`; - } -} 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)}`; + } +} diff --git a/src/models/Lab.js b/src/models/Lab.js deleted file mode 100644 index 2e4412d..0000000 --- a/src/models/Lab.js +++ /dev/null @@ -1,17 +0,0 @@ -import EventInfo from '@/models/EventInfo'; - -export default class Lab { - constructor(course = 0, section = 0, event = new EventInfo()) { - this.course = course; - this.section = section; - this.event = event; - } - - get id() { - return `${this.course}-${this.section}`; - } - - get fullInfo() { - return `${this.id} ${this.event.info}`; - } -} diff --git a/src/models/Lab.ts b/src/models/Lab.ts new file mode 100644 index 0000000..a6972ef --- /dev/null +++ b/src/models/Lab.ts @@ -0,0 +1,23 @@ +import EventInfo from '@/models/EventInfo'; + +export default class Lab { + course: number; + + section: number; + + event: EventInfo; + + constructor(course = 0, section = 0, event = new EventInfo()) { + this.course = course; + this.section = section; + this.event = event; + } + + get id() { + return `${this.course}-${this.section}`; + } + + get fullInfo() { + return `${this.id} ${this.event.info}`; + } +} diff --git a/src/models/PeerTeacher.js b/src/models/PeerTeacher.js deleted file mode 100644 index 00a2f0d..0000000 --- a/src/models/PeerTeacher.js +++ /dev/null @@ -1,29 +0,0 @@ -export default class PeerTeacher { - constructor(firstname = '', lastname = '', uin = 0) { - this.firstname = firstname; - this.lastname = lastname; - this.uin = uin; - this.events = []; - this.assignedLabs = new Set(); - } - - conflictsWith(event) { - let conflicts = false; - this.events.every((item) => { - if (item.conflictsWith(event)) { - conflicts = true; - return false; - } - return true; - }); - return conflicts; - } - - get name() { - return `${this.firstname} ${this.lastname}`; - } - - get id() { - return this.uin; - } -} diff --git a/src/models/PeerTeacher.ts b/src/models/PeerTeacher.ts new file mode 100644 index 0000000..f387431 --- /dev/null +++ b/src/models/PeerTeacher.ts @@ -0,0 +1,41 @@ +import EventInfo from './EventInfo'; + +export default class PeerTeacher { + firstname: string; + + lastname: string; + + uin: number; + + events: EventInfo[]; + + assignedLabs: Set; + + constructor(firstname = '', lastname = '', uin = 0) { + this.firstname = firstname; + this.lastname = lastname; + this.uin = uin; + this.events = []; + this.assignedLabs = new Set(); + } + + conflictsWith(event: EventInfo) { + let conflicts = false; + this.events.every((item) => { + if (item.conflictsWith(event)) { + conflicts = true; + return false; + } + return true; + }); + return conflicts; + } + + get name() { + return `${this.firstname} ${this.lastname}`; + } + + get id() { + return this.uin; + } +} -- cgit v1.2.3