From b3fdc004706a1501b32372747abc1f4f4b7dd367 Mon Sep 17 00:00:00 2001 From: Furkan Sahin Date: Wed, 20 Jul 2022 15:02:12 -0400 Subject: Introducing `selectedLab` in order to now color PTs that can be assigned to a chosen lab. Maintain a reactive `compatiblePTs` array to assist in this. Utilize DaisyUI component to display the unassigned labs. Started actually using daisyui themes in text in order to automate the lightmode/darkmode text color switch (text color was static before) --- src/components/AssignLabs/AssignLabs.svelte | 58 +++++++++++++++-------------- 1 file changed, 30 insertions(+), 28 deletions(-) (limited to 'src/components/AssignLabs') diff --git a/src/components/AssignLabs/AssignLabs.svelte b/src/components/AssignLabs/AssignLabs.svelte index d7ef903..e27abfc 100644 --- a/src/components/AssignLabs/AssignLabs.svelte +++ b/src/components/AssignLabs/AssignLabs.svelte @@ -6,6 +6,7 @@ import PT from "./PTBox.svelte"; let selectedPeerTeacher: PeerTeacher | undefined; + let selectedLab: Lab | undefined; $: peerTeachers = [...$ptStore.values()].sort((a, b) => a.lastname.toUpperCase() === b.lastname.toUpperCase() @@ -15,7 +16,7 @@ $: labs = [...$labStore.values()].sort((a, b) => a.id - b.id); - $: assignedLabs = [...(selectedPeerTeacher?.labs.values() ?? [])] + $: selectedPtAssignedLabs = [...(selectedPeerTeacher?.labs.values() ?? [])] .flatMap((labId) => { const lab = $labStore.get(labId); return lab === undefined ? [] : [lab]; @@ -24,27 +25,29 @@ $: unassignedLabs = labs.filter((lab) => !lab.assigned); - $: compatibleLabs = labs.filter((lab) => { - if (selectedPeerTeacher == undefined) return true; // show all labs if no PT selected - return isPTandLabCompatible(lab, selectedPeerTeacher); - }); + $: compatibleLabs = labs.filter((lab) => + isPTandLabCompatible(lab, selectedPeerTeacher) + ); + + $: compatiblePTs = peerTeachers.filter((pt) => + isPTandLabCompatible(selectedLab, pt) + ); - // TODO given a selected lab, highlight all PTs that can be assigned it - function isPTandLabCompatible(lab: Lab, pt: PeerTeacher): boolean { + function isPTandLabCompatible( + lab: Lab | undefined, + pt: PeerTeacher | undefined + ): boolean { return ( - // Lab not already assigned + pt != undefined && + lab != undefined && !lab?.assigned && - // PT schedule not conflict with lab - !pt?.conflictsWith(lab.event) && - // PT's labs not conflict with this lab - !assignedLabs.some((assignment) => - assignment.event.conflictsWith(lab.event) - ) + !pt?.conflictsWith(lab.event) ); } function updateReactiveDeclarations() { selectedPeerTeacher = selectedPeerTeacher; + selectedLab = selectedLab; peerTeachers = peerTeachers; labs = labs; } @@ -79,9 +82,9 @@
{#each peerTeachers as pt}
{ selectedPeerTeacher = pt; }} @@ -115,7 +118,7 @@ {selectedPeerTeacher?.name ?? "PT's Labs"}
- {#each assignedLabs as lab} + {#each selectedPtAssignedLabs as lab}

Unassigned Labs: {unassignedLabs.length}

-
+
+
-- cgit v1.2.3