aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2022-08-01 16:58:57 -0500
committerFurkan Sahin <furkan-dev@proton.me>2022-08-01 16:58:57 -0500
commitf05396f0e86f68ee45e8c25d79401b6f54979dba (patch)
tree7d06c63483c9d8962d370a084f01120e75fde9da
parent1c99d6656598be7ef9138d184974543b8b10c964 (diff)
`TamuHtmlOutput` page is finished for now. Resume working on parsing office hours.
-rw-r--r--src/components/Sidebar.svelte9
-rw-r--r--src/components/TamuOutput.svelte71
-rw-r--r--src/components/helpers/PTBox.svelte2
-rw-r--r--src/models/PeerTeacher.ts5
4 files changed, 82 insertions, 5 deletions
diff --git a/src/components/Sidebar.svelte b/src/components/Sidebar.svelte
index b7cfc84..7a71191 100644
--- a/src/components/Sidebar.svelte
+++ b/src/components/Sidebar.svelte
@@ -4,17 +4,18 @@
import FileUploads from "./FileUploads.svelte";
import PeerTeachers from "./PeerTeachers.svelte";
import Labs from "./Labs.svelte";
+ import TamuOutput from "./TamuOutput.svelte";
import { onMount } from "svelte";
import { parseDatabaseLocalStorage } from "../util/parser";
let sections = [
{ name: "File Uploads", component: FileUploads },
- { name: "Peer Teachers", component: PeerTeachers }, // TODO
+ { name: "Peer Teachers", component: PeerTeachers },
{ name: "Assign Labs", component: AssignLabs },
- { name: "Labs", component: Labs }, // TODO
+ { name: "Labs", component: Labs },
{ name: "Active Peer Teachers", component: null }, // TODO
{ name: "Stats", component: null }, // TODO
- { name: "TAMU Html Output", component: null }, // TODO
+ { name: "TAMU Html Output", component: TamuOutput },
];
let selected = sections[0];
@@ -70,7 +71,7 @@
</div>
<!-- Chosen Section / Component -->
- <div class="flex-auto h-full">
+ <div class="flex-auto h-full overflow-y-hidden">
<svelte:component this={selected.component} />
</div>
</div>
diff --git a/src/components/TamuOutput.svelte b/src/components/TamuOutput.svelte
new file mode 100644
index 0000000..454c50c
--- /dev/null
+++ b/src/components/TamuOutput.svelte
@@ -0,0 +1,71 @@
+<script lang="ts">
+ import { ptStore } from "../stores";
+ import type PeerTeacher from "../models/PeerTeacher";
+
+ $: peerTeachers = [...$ptStore.values()].sort((a, b) =>
+ a.lastname.toUpperCase() === b.lastname.toUpperCase()
+ ? a.firstname.toUpperCase().localeCompare(b.firstname.toUpperCase())
+ : a.lastname.toUpperCase().localeCompare(b.lastname.toUpperCase())
+ );
+
+ function getCourses(pt: PeerTeacher) {
+ const courses = new Map<number, number[]>();
+ const getCourse = (x: number) => Math.floor(x / 1000);
+ pt.labs.forEach((lab_id) => {
+ const key = getCourse(lab_id);
+ const sec = lab_id % 1000;
+ if (courses.has(key)) {
+ courses.get(key).push(sec);
+ } else {
+ courses.set(key, [sec]);
+ }
+ });
+ pt.can_teach.forEach((course) => {
+ if (course == null || course == undefined) return;
+ if (!courses.has(course)) courses.set(course, []);
+ });
+ return courses;
+ }
+</script>
+
+<div
+ class="flex flex-col overflow-y-auto h-full overflow-x-hidden mx-[25%] pt-10"
+>
+ {#each peerTeachers as pt}
+ <div class="h-40">
+ <hr />
+ <p>
+ <img
+ class="float-right"
+ alt={pt?.name}
+ src={pt?.drive_pic}
+ width="100"
+ height="125"
+ />
+ </p>
+ <h1 class="text-xl font-bold">
+ {pt?.name} |
+ <a
+ href="mailto:{pt.email}"
+ rel="noopener"
+ target="_blank"
+ title="${pt?.name} email"
+ >
+ Email {pt?.firstname}
+ </a>
+ </h1>
+ {#if pt?.labs.size > 0}
+ <p>
+ <strong class="text-lg">Courses:</strong>
+ </p>
+ <ul class="text-lg">
+ {#each Array.from(getCourses(pt)) as lab}
+ <li>
+ CSCE {lab[0]} - {lab[1]}
+ </li>
+ {/each}
+ </ul>
+ {/if}
+ </div>
+ {/each}
+</div>
diff --git a/src/components/helpers/PTBox.svelte b/src/components/helpers/PTBox.svelte
index 73b62c7..2b881f9 100644
--- a/src/components/helpers/PTBox.svelte
+++ b/src/components/helpers/PTBox.svelte
@@ -40,5 +40,5 @@
</div>
<!-- Bottom half, hours -->
- <div class="">Hours: {pt.lab_hours}</div>
+ <div class="">Hours: {pt.lab_hours}/{pt.pref_work}</div>
</div>
diff --git a/src/models/PeerTeacher.ts b/src/models/PeerTeacher.ts
index c19fbd2..9069069 100644
--- a/src/models/PeerTeacher.ts
+++ b/src/models/PeerTeacher.ts
@@ -101,4 +101,9 @@ export default class PeerTeacher {
return total_hours;
}
+ get drive_pic(): string {
+ if (this.prof_pic_url == null || this.prof_pic_url == undefined) return ""
+ return `https://drive.google.com/uc?export=view&id=${this.prof_pic_url.replace(/^[^=]*=/, '')}`;
+ }
+
} \ No newline at end of file