diff --git a/schema.graphql b/schema.graphql index ce6dc98..4df2104 100644 --- a/schema.graphql +++ b/schema.graphql @@ -179,7 +179,8 @@ type ExamWithRegs { type ExamWithRegsAndRooms { exam: PlannedExam! normalRegsMtknr: [String!]! - ntas: [NTA!]! + ntasInAloneRooms: [NTA!]! + ntasInNormalRooms: [NTA!]! rooms: [PlannedRoom!]! } @@ -416,6 +417,8 @@ type PreExam { type PrePlannedRoom { ancode: Int! + mtknr: String + reserve: Boolean! roomName: String! } @@ -498,6 +501,7 @@ type Query { plannedRoomForStudent(ancode: Int!, mtknr: String!): PlannedRoom plannedRoomNames: [String!] plannedRoomNamesInSlot(day: Int!, time: Int!): [String!] + plannedRooms: [PlannedRoom!]! plannedRoomsInSlot(day: Int!, time: Int!): [PlannedRoom!] preExamsInSlot(day: Int!, time: Int!): [PreExam!] primussExam(ancode: Int!, program: String!): PrimussExam! diff --git a/src/lib/Nav.svelte b/src/lib/Nav.svelte index e2ce37d..7e31486 100644 --- a/src/lib/Nav.svelte +++ b/src/lib/Nav.svelte @@ -86,7 +86,7 @@
  • Kalenderansicht
  • Raumplanung
  • -
  • Verfügbare Räume
  • +
  • Geplante Räume
  • Aufsichtenplanung
  • Prüfungsliste für ZPA
  • diff --git a/src/routes/plan/plannedRooms/+page.server.ts b/src/routes/plan/plannedRooms/+page.server.ts new file mode 100644 index 0000000..deb24b9 --- /dev/null +++ b/src/routes/plan/plannedRooms/+page.server.ts @@ -0,0 +1,53 @@ +import { env } from '$env/dynamic/private'; +import { request, gql } from 'graphql-request'; + +export async function load({ params }) { + const semesterQuery = gql` + query { + semesterConfig { + days { + number + date + } + starttimes { + number + start + } + } + } + `; + + const semesterData = await request(env.PLEXAMS_SERVER, semesterQuery); + + const roomQuery = gql` + query { + plannedRoomNames + } + `; + + const roomData = await request(env.PLEXAMS_SERVER, roomQuery); + + const plannedRoomsQuery = gql` + query { + plannedRooms { + day + slot + room { + name + } + } + } + `; + + const plannedRoomsData = await request(env.PLEXAMS_SERVER, plannedRoomsQuery); + + const plannedRoomsSet = new Set( + plannedRoomsData.plannedRooms.map((room: any) => `${room.day}-${room.slot}-${room.room.name}`) + ); + + return { + semesterConfig: semesterData.semesterConfig, + plannedRoomNames: roomData.plannedRoomNames, + plannedRooms: plannedRoomsSet + }; +} diff --git a/src/routes/plan/plannedRooms/+page.svelte b/src/routes/plan/plannedRooms/+page.svelte new file mode 100644 index 0000000..97d4e83 --- /dev/null +++ b/src/routes/plan/plannedRooms/+page.svelte @@ -0,0 +1,108 @@ + + +
    +
    Geplante Räume
    +
    + +
    + +
    + +
    +
    + +
    + + + + + {#each data.semesterConfig.days as day} + + {/each} + + + + {#each data.plannedRoomNames as roomName} + + + {#each data.semesterConfig.days as day} + + {/each} + + {/each} + +
    RaumTag {day.number}
    {mkDateShort(day.date)}
    {roomName} +
    + {#each data.semesterConfig.starttimes as slot} +
    + {showSlotNumber(day, slot.number, roomName)} +
    + {/each} +
    +
    +