aboutsummaryrefslogtreecommitdiff
path: root/src/components/Labs.svelte
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2022-07-23 23:38:33 -0500
committerFurkan Sahin <furkan-dev@proton.me>2022-07-23 23:38:33 -0500
commite4915154c6bb71b3d0fb8da6e971783156548b8e (patch)
tree0894a1c35280389e2c7d1067cfcb734712d93c17 /src/components/Labs.svelte
parent31530fcb5b881d3ac83f202f0b2c913aba935b8b (diff)
Restructure file organization
Diffstat (limited to 'src/components/Labs.svelte')
-rw-r--r--src/components/Labs.svelte60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/components/Labs.svelte b/src/components/Labs.svelte
new file mode 100644
index 0000000..fc5c0ae
--- /dev/null
+++ b/src/components/Labs.svelte
@@ -0,0 +1,60 @@
+<script lang="ts">
+ import { labStore, ptStore } from "../stores";
+ import type Lab from "../models/Lab";
+
+ let selected_lab: Lab | undefined;
+
+ $: labs = [...$labStore.values()].sort((a, b) => a.id - b.id);
+
+
+ let headers = ["", "Course", "Sec", "Time", "Location", "Assigned PT",""];
+
+ $: pts = [...$ptStore.values()];
+
+ // TODO Make this more efficient rather than checking each PT per each Lab
+ $: labsAndPts = [...$labStore.values()].flatMap( (lab) => {
+ return [{
+ "lab" : lab,
+ "pt" : pts.find( (pt) => {
+ return pt.labs.has(lab.id)
+ })
+ }];
+ });
+
+</script>
+
+<div class="overflow-auto h-full">
+ <table class="table w-full">
+ <!-- head -->
+ <thead>
+ <tr>
+ {#each headers as header, i}
+ <th> {i == 0 ? labs.length : header}</th>
+ {/each}
+ </tr>
+ </thead>
+ <tbody>
+ {#each labsAndPts as l, i}
+ <tr
+ on:click={() => {
+ selected_lab = l.lab;
+ }}
+ class={selected_lab == l.lab ? "active" : "hover"}
+ >
+ <th>{i + 1}</th>
+ <th>{l.lab?.course}</th>
+ <th>{l.lab?.section}</th>
+ <th>{l.lab?.time}</th>
+ <th>{l.lab?.location}</th>
+ <th>{l.pt?.name ?? "UNASSIGNED"}</th>
+ <th
+ ><button
+ class="btn btn-ghost btn-xs">Delete</button
+ ></th
+ >
+ </tr>
+ {/each}
+ </tbody>
+ </table>
+ </div>
+ \ No newline at end of file