Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 35 additions & 16 deletions src/lib/ConstraintsTable.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -162,22 +162,41 @@
</ul>
{/if}</td
>
<td class={bgConstraints(exam.constraints)}
>{#if exam.constraints && exam.constraints.roomConstraints}
{#if exam.constraints.roomConstraints.placesWithSocket}
Plätze mit Steckdosen,
{/if}
{#if exam.constraints.roomConstraints.lab}
Labor,
{/if}
{#if exam.constraints.roomConstraints.exahm}
EXaHM,
{/if}
{#if exam.constraints.roomConstraints.seb}
SafeExamBrowser,
{/if}
{/if}</td
>
<td class={bgConstraints(exam.constraints)}>
{#if exam.constraints && exam.constraints.roomConstraints}
<div class="flex justify-between items-center w-full">
<div>
{#if exam.constraints.roomConstraints.allowedRooms && exam.constraints.roomConstraints.allowedRooms.length > 0}
{exam.constraints.roomConstraints.allowedRooms},
{/if}
{#if exam.constraints.roomConstraints.placesWithSocket}
Plätze mit Steckdosen,
{/if}
{#if exam.constraints.roomConstraints.lab}
Labor,
{/if}
{#if exam.constraints.roomConstraints.exahm}
EXaHM,
{/if}
{#if exam.constraints.roomConstraints.seb}
SafeExamBrowser,
{/if}
</div>
{#if exam.constraints.roomConstraints.kdpJiraURL}
<div class="flex justify-end">
<button
class="btn btn-sm"
on:click={() =>
window.open(exam.constraints.roomConstraints.kdpJiraURL, '_blank')}
disabled={!exam.constraints.roomConstraints.kdpJiraURL}
>
Jira-Ticket öffnen
</button>
</div>
{/if}
</div>
{/if}
</td>
</tr>
{/each}
</tbody>
Expand Down
4 changes: 4 additions & 0 deletions src/routes/exam/constraints/+page.server.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,14 @@ export async function load({ params }) {
possibleDays
sameSlot
roomConstraints {
allowedRooms
placesWithSocket
lab
exahm
seb
kdpJiraURL
maxStudents
comments
}
}
}
Expand Down
21 changes: 20 additions & 1 deletion src/routes/exam/constraints/[code=integer]/+page.server.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ export async function load({ params }) {
possibleDays
sameSlot
roomConstraints {
allowedRooms
placesWithSocket
lab
exahm
Expand Down Expand Up @@ -90,10 +91,28 @@ export async function load({ params }) {

const semesterData = await request(env.PLEXAMS_SERVER, semesterQuery);

const roomsQuery = gql`
query {
rooms {
name
seats
handicap
lab
placesWithSocket
needsRequest
exahm
seb
}
}
`;

const roomsData = await request(env.PLEXAMS_SERVER, roomsQuery);

return {
code: params.code,
exam: dataE.zpaExam,
constraints: dataC.constraintForAncode,
semesterConfig: semesterData.semesterConfig
semesterConfig: semesterData.semesterConfig,
rooms: roomsData.rooms
};
}
53 changes: 52 additions & 1 deletion src/routes/exam/constraints/[code=integer]/+page.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
let constraints = data.constraints;
let exam = data.exam;
let semesterConfig = data.semesterConfig;
let rooms = data.rooms;

let days = semesterConfig.days.map((day) => {
return new Date(day.date).toLocaleDateString('de-DE', {
Expand All @@ -18,6 +19,7 @@
let constraintsInput = {
notPlannedByMe: false,
online: false,
allowedRooms: [],
placesWithSocket: false,
lab: false,
seb: false,
Expand All @@ -32,6 +34,7 @@
constraintsInput.notPlannedByMe = constraints.notPlannedByMe;
constraintsInput.online = constraints.online;
if (constraints.roomConstraints) {
constraintsInput.allowedRooms = constraints.roomConstraints.allowedRooms || [];
constraintsInput.placesWithSocket = constraints.roomConstraints.placesWithSocket;
constraintsInput.lab = constraints.roomConstraints.lab;
constraintsInput.seb = constraints.roomConstraints.seb;
Expand Down Expand Up @@ -171,6 +174,7 @@
<fieldset
class="fieldset bg-base-100 border-base-300 rounded-box w-64 border p-4"
class:bg-green-100={constraintsInput.lab}
class:border-green-500={constraintsInput.lab}
>
<label class="label">
<input type="checkbox" class="checkbox" bind:checked={constraintsInput.lab} />
Expand All @@ -181,6 +185,7 @@
<fieldset
class="fieldset bg-base-100 border-base-300 rounded-box w-64 border p-4"
class:bg-green-100={constraintsInput.seb}
class:border-green-500={constraintsInput.seb}
>
<label class="label">
<input type="checkbox" class="checkbox" bind:checked={constraintsInput.seb} />
Expand All @@ -191,6 +196,7 @@
<fieldset
class="fieldset bg-base-100 border-base-300 rounded-box w-64 border p-4"
class:bg-green-100={constraintsInput.exahm}
class:border-green-500={constraintsInput.exahm}
>
<label class="label">
<input type="checkbox" class="checkbox" bind:checked={constraintsInput.exahm} />
Expand All @@ -201,6 +207,7 @@
<fieldset
class="fieldset bg-base-100 border-base-300 rounded-box w-64 border p-4"
class:bg-green-100={constraintsInput.placesWithSocket}
class:border-green-500={constraintsInput.placesWithSocket}
>
<label class="label">
<input type="checkbox" class="checkbox" bind:checked={constraintsInput.placesWithSocket} />
Expand All @@ -211,6 +218,7 @@
<fieldset
class="fieldset bg-base-100 border-base-300 rounded-box w-64 border p-4"
class:bg-green-100={constraintsInput.online}
class:border-green-500={constraintsInput.online}
>
<label class="label">
<input type="checkbox" class="checkbox" bind:checked={constraintsInput.online} />
Expand All @@ -229,6 +237,15 @@
bind:value={constraintsInput.kdpJiraURL}
placeholder="https://example.com"
/>
{#if constraintsInput.kdpJiraURL}
<button
class="btn btn-sm ml-2"
on:click={() => window.open(constraintsInput.kdpJiraURL, '_blank')}
disabled={!constraintsInput.kdpJiraURL}
>
Link öffnen
</button>
{/if}
</label>
<label class="label mt-4">
<span class="label-text">Maximale Anzahl Studierende</span>
Expand All @@ -250,6 +267,36 @@
</fieldset>
</div>
{/if}
<div class="divider">
Einschränkung auf bestimmte Räume ({constraintsInput.allowedRooms.length} Räume ausgewählt)
</div>
<div class="flex w-full justify-center">
<div class="w-3/4 border rounded-box">
<div class="flex flex-wrap gap-2 justify-center">
{#each rooms as room}
{@const isSelected = constraintsInput.allowedRooms.includes(room.name)}
<!-- svelte-ignore a11y_click_events_have_key_events -->
<!-- svelte-ignore a11y_no_static_element_interactions -->
<div
class="badge badge-lg cursor-pointer p-4 {isSelected
? 'bg-green-100 border-green-500'
: 'bg-base-200'}"
on:click={() => {
if (isSelected) {
constraintsInput.allowedRooms = constraintsInput.allowedRooms.filter(
(r) => r !== room.name
);
} else {
constraintsInput.allowedRooms = [...constraintsInput.allowedRooms, room.name];
}
}}
>
{room.name}
</div>
{/each}
</div>
</div>
</div>
<div class="divider">Prüfungen, die im gleichen Slot stattfinden müssen</div>
<div class="flex w-full justify-center">
<div class="w-1/2 p-4">
Expand Down Expand Up @@ -288,7 +335,9 @@
<h3 class="text-center mb-4">Ausgewählte Prüfungen</h3>
<ul class="list-inside">
{#each sameSlotExams as selectedExam (selectedExam.ancode)}
<li class="flex justify-between items-center bg-green-100 p-2 mb-2 rounded-lg">
<li
class="flex justify-between items-center bg-green-100 border-green-500 p-2 mb-2 rounded-lg"
>
<span>
{selectedExam.ancode}. {selectedExam.module} ({selectedExam.mainExamer})
</span>
Expand All @@ -306,7 +355,9 @@
<fieldset
class="fieldset bg-base-100 border-base-300 rounded-box w-1/6 border p-4 m-2"
class:bg-red-100={constraintsInput?.excludeDays?.includes(day)}
class:border-red-500={constraintsInput?.excludeDays?.includes(day)}
class:bg-green-100={!constraintsInput?.excludeDays?.includes(day)}
class:border-green-500={!constraintsInput?.excludeDays?.includes(day)}
>
<label class="label">
<input
Expand Down
1 change: 1 addition & 0 deletions src/routes/exam/kdp/+page.server.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ export async function load({ params }) {
possibleDays
sameSlot
roomConstraints {
allowedRooms
placesWithSocket
lab
exahm
Expand Down
26 changes: 20 additions & 6 deletions src/routes/exam/kdp/+page.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,11 @@
<th class="border border-gray-400 px-4 py-2">GS</th>
<th class="border border-gray-400 px-4 py-2">ID</th>
<th class="border border-gray-400 px-4 py-2">Räume (Studierende)</th>
<th class="border border-gray-400 px-4 py-2">Räume eingeschränkt</th>
<th class="border border-gray-400 px-4 py-2">Gruppen</th>
<th class="border border-gray-400 px-4 py-2">Jira</th>
<th class="border border-gray-400 px-4 py-2">Kommentar</th>
<th class="border border-gray-400 px-4 py-2">Vorgeplant</th>
<th class="border border-gray-400 px-4 py-2">Kommentar</th>
</tr>
</thead>
<tbody>
Expand Down Expand Up @@ -81,6 +82,19 @@
fehlt
{/if}
</td>
<td
class="border border-gray-400 px-4 py-2"
style="background-color: {exam.constraints.roomConstraints.allowedRooms &&
exam.constraints.roomConstraints.allowedRooms.length > 0
? 'yellow'
: 'transparent'}"
>
<ul>
{#each exam.constraints.roomConstraints.allowedRooms as room}
<li>{room}</li>
{/each}
</ul>
</td>
<td class="border border-gray-400 px-4 py-2">{exam.zpaExam.groups.join(', ')}</td>
<td
class="border border-gray-400 px-4 py-2"
Expand All @@ -96,11 +110,6 @@
fehlt
{/if}
</td>
<td class="border border-gray-400 px-4 py-2">
{#if exam.constraints.roomConstraints.comments}
{exam.constraints.roomConstraints.comments}
{/if}
</td>
<td
class="border border-gray-400 px-4 py-2"
style="background-color: {exam.planEntry ? 'cyan' : 'transparent'}"
Expand All @@ -109,6 +118,11 @@
({exam.planEntry.dayNumber}, {exam.planEntry.slotNumber})
{/if}
</td>
<td class="border border-gray-400 px-4 py-2">
{#if exam.constraints.roomConstraints.comments}
{exam.constraints.roomConstraints.comments}
{/if}
</td>
</tr>
{/each}
</tbody>
Expand Down