From 750bfe6f98594e577a233f7923982c999f4253af Mon Sep 17 00:00:00 2001 From: Oliver Braun Date: Sun, 8 Jun 2025 17:29:22 +0200 Subject: [PATCH] feat: choose days ilable rooms --- schema.graphql | 18 ++--- src/lib/Nav.svelte | 2 +- .../calendar/{+page.gql => +page.server.gql} | 0 .../plan/roomsForSlots/+page.server.gql | 26 +++++++ src/routes/plan/roomsForSlots/+page.svelte | 77 +++++++++++++++++++ src/routes/rooms/+page.gql | 12 --- src/routes/rooms/+page.server.gql | 26 +++++++ src/routes/rooms/+page.svelte | 2 + 8 files changed, 140 insertions(+), 23 deletions(-) rename src/routes/plan/calendar/{+page.gql => +page.server.gql} (100%) create mode 100644 src/routes/plan/roomsForSlots/+page.server.gql create mode 100644 src/routes/plan/roomsForSlots/+page.svelte delete mode 100644 src/routes/rooms/+page.gql create mode 100644 src/routes/rooms/+page.server.gql diff --git a/schema.graphql b/schema.graphql index 61540c8..0b1c17f 100644 --- a/schema.graphql +++ b/schema.graphql @@ -499,7 +499,8 @@ type Query { primussExams: [PrimussExamByProgram] primussExamsForAnCode(ancode: Int!): [PrimussExam!] rooms: [Room!]! - roomsForSlot(day: Int!, time: Int!): SlotWithRooms + roomsForSlot(day: Int!, time: Int!): RoomsForSlot + roomsForSlots: [RoomsForSlot!]! roomsWithConstraints(exahm: Boolean, handicap: Boolean!, lab: Boolean!, placesWithSocket: Boolean!): [Room!]! roomsWithInvigilationsForSlot(day: Int!, time: Int!): InvigilationSlot semester: Semester! @@ -583,6 +584,12 @@ type RoomWithInvigilator { studentCount: Int! } +type RoomsForSlot { + day: Int! + rooms: [Room!]! + slot: Int! +} + type Semester { id: String! } @@ -613,15 +620,6 @@ type SlotWithExamGroups { slotNumber: Int! } -type SlotWithRooms { - dayNumber: Int! - exahmRooms: [Room!]! - labRooms: [Room!]! - normalRooms: [Room!]! - ntaRooms: [Room!]! - slotNumber: Int! -} - type Starttime { number: Int! start: String! diff --git a/src/lib/Nav.svelte b/src/lib/Nav.svelte index f5430d3..e2ce37d 100644 --- a/src/lib/Nav.svelte +++ b/src/lib/Nav.svelte @@ -86,7 +86,7 @@
  • Kalenderansicht
  • Raumplanung
  • -
  • Raumplanung (Tabelle)
  • +
  • Verfügbare Räume
  • Aufsichtenplanung
  • Prüfungsliste für ZPA
  • diff --git a/src/routes/plan/calendar/+page.gql b/src/routes/plan/calendar/+page.server.gql similarity index 100% rename from src/routes/plan/calendar/+page.gql rename to src/routes/plan/calendar/+page.server.gql diff --git a/src/routes/plan/roomsForSlots/+page.server.gql b/src/routes/plan/roomsForSlots/+page.server.gql new file mode 100644 index 0000000..60b9aa5 --- /dev/null +++ b/src/routes/plan/roomsForSlots/+page.server.gql @@ -0,0 +1,26 @@ +query RoomsForSlots { + rooms { + name + seats + handicap + lab + placesWithSocket + exahm + seb + needsRequest + } + roomsForSlots { + day + slot + rooms { + name + seats + handicap + lab + placesWithSocket + exahm + seb + needsRequest + } + } +} diff --git a/src/routes/plan/roomsForSlots/+page.svelte b/src/routes/plan/roomsForSlots/+page.svelte new file mode 100644 index 0000000..78403ab --- /dev/null +++ b/src/routes/plan/roomsForSlots/+page.svelte @@ -0,0 +1,77 @@ + + +
    +
    Verfügbare Räume
    + +
    + +
    + {#each availableDays as day} + + {/each} +
    +
    +
    +
    +
    +
    + + + + + + {#each $RoomsForSlots?.data?.rooms as room} + + {/each} + + + + {#each filteredSlots as slot} + + + {#each $RoomsForSlots?.data?.rooms as room} + + {/each} + + {/each} + +
    Slot{room.name}
    ({slot.day}, {slot.slot}){roomAvailable(room.name, slot)}
    +
    +
    +
    diff --git a/src/routes/rooms/+page.gql b/src/routes/rooms/+page.gql deleted file mode 100644 index 50c8455..0000000 --- a/src/routes/rooms/+page.gql +++ /dev/null @@ -1,12 +0,0 @@ -query Rooms { - rooms { - name - seats - handicap - lab - placesWithSocket - exahm - seb - needsRequest - } -} diff --git a/src/routes/rooms/+page.server.gql b/src/routes/rooms/+page.server.gql new file mode 100644 index 0000000..ee9c0a0 --- /dev/null +++ b/src/routes/rooms/+page.server.gql @@ -0,0 +1,26 @@ +query Rooms { + rooms { + name + seats + handicap + lab + placesWithSocket + exahm + seb + needsRequest + } + roomsForSlots { + day + slot + rooms { + name + seats + handicap + lab + placesWithSocket + exahm + seb + needsRequest + } + } +} diff --git a/src/routes/rooms/+page.svelte b/src/routes/rooms/+page.svelte index b85aa15..d08356b 100644 --- a/src/routes/rooms/+page.svelte +++ b/src/routes/rooms/+page.svelte @@ -28,6 +28,8 @@ rooms?.sort((r1: any, r2: any) => r1.name.localeCompare(r2.name)); } } + + let roomsForSlots = $Rooms?.data?.roomsForSlots || [];