From 8d646fcd4bfba991fce036ac115269ed162d8dec Mon Sep 17 00:00:00 2001 From: Oliver Braun Date: Fri, 9 May 2025 09:31:21 +0200 Subject: [PATCH] feat: global forbidden slots --- src/lib/examsInPlan/SlotExam.svelte | 6 +++--- src/lib/slot/Slot.svelte | 4 ++-- src/routes/plan/exams/+page.server.js | 28 ++++++++++++++++++++++++++- src/routes/plan/exams/+page.svelte | 22 +++++++++++++++++++-- 4 files changed, 52 insertions(+), 8 deletions(-) diff --git a/src/lib/examsInPlan/SlotExam.svelte b/src/lib/examsInPlan/SlotExam.svelte index 9b94e06..51e5565 100644 --- a/src/lib/examsInPlan/SlotExam.svelte +++ b/src/lib/examsInPlan/SlotExam.svelte @@ -483,13 +483,13 @@
online
{/if} {#if exam.constraints && exam.constraints.roomConstraints && exam.constraints.roomConstraints.exahm} -
EXaHM
+
EXaHM
{/if} {#if exam.constraints && exam.constraints.roomConstraints && exam.constraints.roomConstraints.seb} -
S.E.B.
+
SEB
{/if} {#if exam.constraints != null && exam.constraints.sameSlot != null && exam.constraints.sameSlot.length > 0} -
sameSlot
+
sameSlot
{/if} {/if} diff --git a/src/lib/slot/Slot.svelte b/src/lib/slot/Slot.svelte index 9b94bf3..d6238b6 100644 --- a/src/lib/slot/Slot.svelte +++ b/src/lib/slot/Slot.svelte @@ -148,7 +148,7 @@ {/if}
{#if count > 0} -
{count}
+
{count}
{/if}
{/if} @@ -156,7 +156,7 @@ {#if showOnlyEXaHMRooms}
{#each exahm as room} -
{room.name}
+
{room.name}
{/each}
{/if} diff --git a/src/routes/plan/exams/+page.server.js b/src/routes/plan/exams/+page.server.js index d07ec4f..f0ba9d8 100644 --- a/src/routes/plan/exams/+page.server.js +++ b/src/routes/plan/exams/+page.server.js @@ -17,6 +17,10 @@ export async function load({ params }) { number start } + forbiddenSlots { + dayNumber + slotNumber + } } } `; @@ -124,8 +128,30 @@ export async function load({ params }) { const data = await request('http://localhost:8080/query', examsWithoutSlotQuery); + let semesterConfig = semesterData.semesterConfig; + + let globalSlotStatus = new Map(); + + for (let day of semesterConfig.days) { + for (let time of semesterConfig.starttimes) { + const key = `${day.number},${time.number}`; + globalSlotStatus.set(key, 'okay'); + } + } + + if (semesterConfig.forbiddenSlots) { + console.log('forbiddenSlots', semesterConfig.forbiddenSlots); + for (let slot of semesterConfig.forbiddenSlots) { + const key = `${slot.dayNumber},${slot.slotNumber}`; + globalSlotStatus.set(key, 'forbidden'); + } + } + + console.log('globalSlotStatus', globalSlotStatus); + return { semesterConfig: semesterData.semesterConfig, - examsWithoutSlot: data.examsWithoutSlot + examsWithoutSlot: data.examsWithoutSlot, + globalSlotStatus: globalSlotStatus }; } diff --git a/src/routes/plan/exams/+page.svelte b/src/routes/plan/exams/+page.svelte index add6f86..4424dae 100644 --- a/src/routes/plan/exams/+page.svelte +++ b/src/routes/plan/exams/+page.svelte @@ -235,6 +235,16 @@ let data = await response.json(); return data.conflictingAncodes; } + + function globalForbiddenSlot(day, time) { + const key = `${day},${time}`; + console.log('globalForbiddenSlot', day, time, key); + console.log('globalForbiddenSlot Zugriff', data.globalSlotStatus.get(key)); + console.log('globalForbiddenSlot all', data.globalSlotStatus); + if (data.globalSlotStatus.get(key) === 'forbidden') { + return 'bg-red-500'; + } + }
@@ -410,8 +420,16 @@ {#each data.semesterConfig.days as day} -
+ class="align-top border-dashed border-2 border-sky-500 {statusColor( + slotsStatus[[day.number, time.number]] + )} " + > +