diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2021-09-05 22:56:45 -0500 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2021-09-05 22:56:45 -0500 |
| commit | fea56ae09cd612003e1bafd2459556b67a5950e9 (patch) | |
| tree | a195fab20351891e6a65f68d77b88bf8c9671e75 /src/models | |
| parent | d0975a6e7ee57de4debda94e823011d813fbf4a1 (diff) | |
Add import/export functionality
Diffstat (limited to 'src/models')
| -rw-r--r-- | src/models/EventInfo.ts | 10 | ||||
| -rw-r--r-- | src/models/Lab.ts | 18 | ||||
| -rw-r--r-- | src/models/PeerTeacher.ts | 21 |
3 files changed, 47 insertions, 2 deletions
diff --git a/src/models/EventInfo.ts b/src/models/EventInfo.ts index d20682c..6fce60b 100644 --- a/src/models/EventInfo.ts +++ b/src/models/EventInfo.ts @@ -1,3 +1,9 @@ +interface EventInfoSerializeInfo { + days: string, + start: number, + end: number +} + export default class EventInfo { days: string; start: number; @@ -16,6 +22,10 @@ export default class EventInfo { this.end = end; } + static fromJSON({days, start, end}: EventInfoSerializeInfo) { + return new EventInfo(days, start, end); + } + static timeToStr(time: number) { let hour = Math.floor(time / 100); const minute = time % 100; diff --git a/src/models/Lab.ts b/src/models/Lab.ts index 8636f74..d23cffb 100644 --- a/src/models/Lab.ts +++ b/src/models/Lab.ts @@ -1,4 +1,16 @@ -import type EventInfo from "./EventInfo"; +import EventInfo from "./EventInfo"; + +interface LabSerializeInfo { + course: number, + section: number, + event: { + days: string, + start: number, + end: number + }, + building: string, + room: string +} export default class Lab { id: number; @@ -24,6 +36,10 @@ export default class Lab { this.room = room; } + static fromJSON({course, section, event, building, room}: LabSerializeInfo) { + return new Lab(course, section, EventInfo.fromJSON(event), building, room); + } + get time() { return this.event.info; } diff --git a/src/models/PeerTeacher.ts b/src/models/PeerTeacher.ts index 6518a80..f1a8739 100644 --- a/src/models/PeerTeacher.ts +++ b/src/models/PeerTeacher.ts @@ -1,4 +1,16 @@ -import type EventInfo from "./EventInfo"; +import EventInfo from "./EventInfo"; + +interface PeerTeacherSerializeInfo { + id: number, + firstname: string, + lastname: string, + events: { + days: string, + start: number, + end: number + }[], + labs: number[] +} export default class PeerTeacher { id: number; @@ -18,4 +30,11 @@ export default class PeerTeacher { this.events = []; this.labs = new Set(); } + + static fromJSON({id, firstname, lastname, events, labs}: PeerTeacherSerializeInfo) { + const pt = new PeerTeacher(id, firstname, lastname); + pt.events = events.map(e => EventInfo.fromJSON(e)); + pt.labs = new Set(labs); + return pt; + } }
\ No newline at end of file |
