1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
<script lang="ts">
import { labStore, ptStore } from "../stores";
import type PeerTeacher from "../models/PeerTeacher";
let selected_pt: PeerTeacher | undefined;
let editing: boolean = false;
$: 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 deletePT(id: number) {
// if (selected_pt.id != id) return;
// Unassign all labs assigned to this Peer Teacher
$ptStore.get(id)?.labs.forEach((lab_id) => {
const lab = $labStore?.get(lab_id);
lab.assigned = false;
});
// Yeet the Peer Teacher
ptStore.update((map) => {
map.delete(id);
return map;
});
}
let headers = [
"",
"First",
"Last",
"Email",
"UIN",
"Phone",
"Pref",
"Lab",
"Gen",
"Ethnicity",
"Grad",
"Status",
"",
];
</script>
<div class="overflow-auto h-full">
<table class="table table-compact w-full">
<!-- head -->
<thead>
<tr>
{#each headers as header, i}
<th> {i == 0 ? peerTeachers.length : header}</th>
{/each}
</tr>
</thead>
<tbody>
{#each peerTeachers as pt, i}
<tr
on:click={() => {
selected_pt = pt;
}}
class={selected_pt == pt ? "active" : "hover"}
>
<th>{i + 1}</th>
<th>
{#if editing && selected_pt == pt}
<input
bind:value={pt.firstname}
type="text"
class="input input-bordered input-primary w-full max-w-xs"
on:blur={() => (editing = false)}
/>
{:else}
<div on:dblclick={() => (editing = true)}>
{pt.firstname}
</div>
{/if}
</th>
<th>{pt.lastname}</th>
<th>{pt.email}</th>
<th>{pt.id}</th>
<th>{pt.phone_number}</th>
<th>{pt.pref_work}</th>
<th>{pt.lab_hours}</th>
<th>{pt.gender}</th>
<th>{pt.ethnicity}</th>
<th>{pt.graduation}</th>
<th>{pt.new_ret}</th>
<th
><button
on:click={() => deletePT(pt.id)}
class="btn btn-ghost btn-xs">Delete</button
></th
>
</tr>
{/each}
</tbody>
</table>
</div>
|