aboutsummaryrefslogtreecommitdiff
path: root/src/features
diff options
context:
space:
mode:
Diffstat (limited to 'src/features')
-rw-r--r--src/features/parser.ts (renamed from src/features/parser.js)49
1 files changed, 20 insertions, 29 deletions
diff --git a/src/features/parser.js b/src/features/parser.ts
index f91d926..7839564 100644
--- a/src/features/parser.js
+++ b/src/features/parser.ts
@@ -2,7 +2,7 @@ import Lab from '@/models/Lab';
import PeerTeacher from '@/models/PeerTeacher';
import EventInfo from '../models/EventInfo';
-export function parseLabFile(file) {
+export function parseLabFile(file: File): Promise<Lab[]> {
const validCourses = [
'110',
'111',
@@ -16,26 +16,24 @@ export function parseLabFile(file) {
'315',
];
- const reader = new FileReader();
-
return new Promise((resolve, reject) => {
- const result = [];
+ const result: Lab[] = [];
- reader.onload = (event) => {
+ file.text().then((text) => {
let jsonData;
try {
- jsonData = JSON.parse(event.target.result);
+ jsonData = JSON.parse(text);
} catch (e) {
reject(new Error(e));
}
const labs = jsonData.data;
- labs.forEach((lab) => {
+ labs.forEach((lab: any) => {
if (validCourses.includes(lab.courseNumber)) {
const newLab = new Lab(lab.courseNumber, lab.sequenceNumber);
if (lab.instructionalMethod !== 'Web Based') {
- lab.meetingsFaculty.every((meeting) => {
+ lab.meetingsFaculty.every((meeting: any) => {
const { meetingTime } = meeting;
if (meetingTime.meetingType === 'LAB') {
@@ -62,21 +60,17 @@ export function parseLabFile(file) {
});
resolve(result);
- };
-
- reader.readAsText(file);
+ });
});
}
-export function parsePtSchedule(file) {
- const reader = new FileReader();
-
+export function parsePtSchedule(file: File): Promise<PeerTeacher> {
return new Promise((resolve) => {
- reader.onload = (event) => {
+ file.text().then((text) => {
const peerTeacher = new PeerTeacher();
const namePattern = /^(.*)\s(.*)\s(\d{9})/;
const eventPattern = /^(M?T?W?R?F?)\s(\d{1,2}:\d{2})\s?-\s?(\d{1,2}:\d{2})/;
- const lines = event.target.result.split('\n').filter((line) => line.trim());
+ const lines = text.split('\n').filter((line) => line.trim());
lines.forEach((line) => {
const ptName = line.match(namePattern);
@@ -95,18 +89,17 @@ export function parsePtSchedule(file) {
});
resolve(peerTeacher);
- };
-
- reader.readAsText(file);
+ });
});
}
-export function parsePtDatabase(file) {
- const reader = new FileReader();
-
+export function parsePtDatabase(file: File): Promise<{
+ labs: Map<string, Lab>,
+ peerTeachers: Map<number, PeerTeacher>
+}> {
return new Promise((resolve) => {
- reader.onload = (event) => {
- const jsonObj = JSON.parse(event.target.result);
+ file.text().then((text) => {
+ const jsonObj = JSON.parse(text);
const result = {
labs: new Map(),
peerTeachers: new Map(),
@@ -121,18 +114,16 @@ export function parsePtDatabase(file) {
Object.keys(jsonObj.peerTeachers).forEach((key) => {
const pt = jsonObj.peerTeachers[key];
const ptObj = new PeerTeacher(pt.firstname, pt.lastname, pt.uin);
- ptObj.events = pt.events.map((eventObj) => new EventInfo(eventObj.days,
+ ptObj.events = pt.events.map((eventObj: any) => new EventInfo(eventObj.days,
eventObj.start, eventObj.end));
ptObj.assignedLabs = new Set();
- pt.assignedLabs.forEach((labId) => {
+ pt.assignedLabs.forEach((labId: string) => {
ptObj.assignedLabs.add(labId);
});
result.peerTeachers.set(key, ptObj);
});
resolve(result);
- };
-
- reader.readAsText(file);
+ });
});
}