aboutsummaryrefslogtreecommitdiff
path: root/src/models
diff options
context:
space:
mode:
Diffstat (limited to 'src/models')
-rw-r--r--src/models/EventInfo.ts10
-rw-r--r--src/models/Lab.ts18
-rw-r--r--src/models/PeerTeacher.ts21
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