Skip to content
Snippets Groups Projects
Verified Commit 07e54625 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Improve and restructure mini timetables, include mini timetable for teachers

diff --git a/aleksis/apps/lesrooster/frontend/components/timetable_management/TimetableManagement.vue b/aleksis/apps/lesrooster/frontend/components/timetable_management/TimetableManagement.vue
index 931306c..5370144 100644
--- a/aleksis/apps/lesrooster/frontend/components/timetable_management/TimetableManagement.vue
+++ b/aleksis/apps/lesrooster/frontend/components/timetable_management/TimetableManagement.vue
@@ -22,8 +22,8 @@ import SubjectField from "aleksis.apps.cursus/components/SubjectField.vue";
 import LessonCard from "./LessonCard.vue";

 import { RRule } from "rrule";
-import TeacherTimeTable from "./timetables/TeacherTimeTable.vue";
-import RoomTimeTable from "./timetables/RoomTimeTable.vue";
+import TeacherTimeTable from "../timetables/TeacherTimeTable.vue";
+import RoomTimeTable from "../timetables/RoomTimeTable.vue";
 import LessonRatioChip from "./LessonRatioChip.vue";
 import TimeGridField from "../validity_range/TimeGridField.vue";
 import BlockingCard from "./BlockingCard.vue";
@@ -1138,13 +1138,13 @@ export default defineComponent({
             >
               <teacher-time-table
                 v-if="internalTimeGrid && selectedObjectType === 'teacher'"
-                :teacher-id="selectedObject"
+                :id="selectedObject"
                 :time-grid="timeGrid"
                 class="fill-height"
               />
               <room-time-table
                 v-if="internalTimeGrid && selectedObjectType === 'room'"
-                :room-id="selectedObject"
+                :id="selectedObject"
                 :time-grid="timeGrid"
                 class="fill-height"
               />
diff --git a/aleksis/apps/lesrooster/frontend/components/timetable_management/timetables/MiniTimeTable.vue b/aleksis/apps/lesrooster/frontend/components/timetables/MiniTimeTable.vue
similarity index 91%
rename from aleksis/apps/lesrooster/frontend/components/timetable_management/timetables/MiniTimeTable.vue
rename to aleksis/apps/lesrooster/frontend/components/timetables/MiniTimeTable.vue
index 988a9b8..e69b9b6 100644
--- a/aleksis/apps/lesrooster/frontend/components/timetable_management/timetables/MiniTimeTable.vue
+++ b/aleksis/apps/lesrooster/frontend/components/timetables/MiniTimeTable.vue
@@ -1,7 +1,7 @@
 <script>
 import { defineComponent } from "vue";
-import { slots } from "../../breaks_and_slots/slot.graphql";
-import LessonCard from "../LessonCard.vue";
+import { slots } from "../breaks_and_slots/slot.graphql";
+import LessonCard from "../timetable_management/LessonCard.vue";
 import MessageBox from "aleksis.core/components/generic/MessageBox.vue";

 export default defineComponent({
@@ -93,6 +93,9 @@ export default defineComponent({

       return weekdayPeriodSlots;
     },
+    loading() {
+      return false;
+    },
   },
   methods: {
     styleForWeekdayAndPeriod(weekday, period) {
@@ -105,7 +108,14 @@ export default defineComponent({
 </script>

 <template>
-  <div class="timetable">
+  <div v-if="loading" class="d-flex justify-center pa-10">
+    <v-progress-circular
+      indeterminate
+      color="primary"
+      :size="50"
+    ></v-progress-circular>
+  </div>
+  <div v-else class="timetable">
     <!-- Empty div to fill top-left corner -->
     <div></div>
     <v-card
diff --git a/aleksis/apps/lesrooster/frontend/components/timetable_management/timetables/RoomTimeTable.vue b/aleksis/apps/lesrooster/frontend/components/timetables/RoomTimeTable.vue
similarity index 84%
rename from aleksis/apps/lesrooster/frontend/components/timetable_management/timetables/RoomTimeTable.vue
rename to aleksis/apps/lesrooster/frontend/components/timetables/RoomTimeTable.vue
index a50154b..a667de1 100644
--- a/aleksis/apps/lesrooster/frontend/components/timetable_management/timetables/RoomTimeTable.vue
+++ b/aleksis/apps/lesrooster/frontend/components/timetables/RoomTimeTable.vue
@@ -7,7 +7,7 @@ export default defineComponent({
   name: "RoomTimeTable",
   extends: MiniTimeTable,
   props: {
-    roomId: {
+    id: {
       type: String,
       required: true,
     },
@@ -16,6 +16,9 @@ export default defineComponent({
     lessons() {
       return this.lessonsRoom;
     },
+    loading() {
+      return this.$apollo.queries.lessonsRoom.loading;
+    },
   },
   apollo: {
     lessonsRoom: {
@@ -23,7 +26,7 @@ export default defineComponent({
       variables() {
         return {
           timeGrid: this.timeGrid.id,
-          room: this.roomId,
+          room: this.id,
         };
       },
       skip() {
diff --git a/aleksis/apps/lesrooster/frontend/components/timetable_management/timetables/TeacherTimeTable.vue b/aleksis/apps/lesrooster/frontend/components/timetables/TeacherTimeTable.vue
similarity index 84%
rename from aleksis/apps/lesrooster/frontend/components/timetable_management/timetables/TeacherTimeTable.vue
rename to aleksis/apps/lesrooster/frontend/components/timetables/TeacherTimeTable.vue
index 5ed3211..f8d89a4 100644
--- a/aleksis/apps/lesrooster/frontend/components/timetable_management/timetables/TeacherTimeTable.vue
+++ b/aleksis/apps/lesrooster/frontend/components/timetables/TeacherTimeTable.vue
@@ -7,7 +7,7 @@ export default defineComponent({
   name: "TeacherTimeTable",
   extends: MiniTimeTable,
   props: {
-    teacherId: {
+    id: {
       type: String,
       required: true,
     },
@@ -16,6 +16,9 @@ export default defineComponent({
     lessons() {
       return this.lessonsTeacher;
     },
+    loading() {
+      return this.$apollo.queries.lessonsTeacher.loading;
+    },
   },
   apollo: {
     lessonsTeacher: {
@@ -23,7 +26,7 @@ export default defineComponent({
       variables() {
         return {
           timeGrid: this.timeGrid.id,
-          teacher: this.teacherId,
+          teacher: this.id,
         };
       },
       skip() {
diff --git a/aleksis/apps/lesrooster/frontend/components/timetable_management/timetables/timetables.graphql b/aleksis/apps/lesrooster/frontend/components/timetables/timetables.graphql
similarity index 66%
rename from aleksis/apps/lesrooster/frontend/components/timetable_management/timetables/timetables.graphql
rename to aleksis/apps/lesrooster/frontend/components/timetables/timetables.graphql
index 3bd1897..e72e857 100644
--- a/aleksis/apps/lesrooster/frontend/components/timetable_management/timetables/timetables.graphql
+++ b/aleksis/apps/lesrooster/frontend/components/timetables/timetables.graphql
@@ -110,3 +110,58 @@ query lessonsRoom($room: ID!, $timeGrid: ID!) {
     canDelete
   }
 }
+
+query lessonsGroup($group: ID!, $timeGrid: ID!) {
+  lessonsGroup: lessonObjectsForGroup(group: $group, timeGrid: $timeGrid) {
+    id
+    slotStart {
+      id
+      period
+      weekday
+    }
+    slotEnd {
+      id
+      period
+      weekday
+    }
+    subject {
+      id
+      name
+      colourFg
+      colourBg
+    }
+    teachers {
+      id
+      fullName
+      shortName
+    }
+    rooms {
+      id
+      name
+      shortName
+    }
+    course {
+      id
+      name
+      subject {
+        id
+        name
+        colourFg
+        colourBg
+      }
+      teachers {
+        id
+        fullName
+        shortName
+      }
+      groups {
+        id
+        name
+        shortName
+      }
+    }
+    recurrence
+    canEdit
+    canDelete
+  }
+}
parent b40146fb
No related branches found
No related tags found
No related merge requests found
This commit is part of merge request !36. Comments created here will be created in the context of that merge request.
......@@ -22,8 +22,8 @@ import SubjectField from "aleksis.apps.cursus/components/SubjectField.vue";
import LessonCard from "./LessonCard.vue";
import { RRule } from "rrule";
import TeacherTimeTable from "./timetables/TeacherTimeTable.vue";
import RoomTimeTable from "./timetables/RoomTimeTable.vue";
import TeacherTimeTable from "../timetables/TeacherTimeTable.vue";
import RoomTimeTable from "../timetables/RoomTimeTable.vue";
import LessonRatioChip from "./LessonRatioChip.vue";
import TimeGridField from "../validity_range/TimeGridField.vue";
import BlockingCard from "./BlockingCard.vue";
......@@ -1138,13 +1138,13 @@ export default defineComponent({
>
<teacher-time-table
v-if="internalTimeGrid && selectedObjectType === 'teacher'"
:teacher-id="selectedObject"
:id="selectedObject"
:time-grid="timeGrid"
class="fill-height"
/>
<room-time-table
v-if="internalTimeGrid && selectedObjectType === 'room'"
:room-id="selectedObject"
:id="selectedObject"
:time-grid="timeGrid"
class="fill-height"
/>
......
<script>
import { defineComponent } from "vue";
import { slots } from "../../breaks_and_slots/slot.graphql";
import LessonCard from "../LessonCard.vue";
import { slots } from "../breaks_and_slots/slot.graphql";
import LessonCard from "../timetable_management/LessonCard.vue";
import MessageBox from "aleksis.core/components/generic/MessageBox.vue";
export default defineComponent({
......@@ -93,6 +93,9 @@ export default defineComponent({
return weekdayPeriodSlots;
},
loading() {
return false;
},
},
methods: {
styleForWeekdayAndPeriod(weekday, period) {
......@@ -105,7 +108,14 @@ export default defineComponent({
</script>
<template>
<div class="timetable">
<div v-if="loading" class="d-flex justify-center pa-10">
<v-progress-circular
indeterminate
color="primary"
:size="50"
></v-progress-circular>
</div>
<div v-else class="timetable">
<!-- Empty div to fill top-left corner -->
<div></div>
<v-card
......
......@@ -7,7 +7,7 @@ export default defineComponent({
name: "RoomTimeTable",
extends: MiniTimeTable,
props: {
roomId: {
id: {
type: String,
required: true,
},
......@@ -16,6 +16,9 @@ export default defineComponent({
lessons() {
return this.lessonsRoom;
},
loading() {
return this.$apollo.queries.lessonsRoom.loading;
},
},
apollo: {
lessonsRoom: {
......@@ -23,7 +26,7 @@ export default defineComponent({
variables() {
return {
timeGrid: this.timeGrid.id,
room: this.roomId,
room: this.id,
};
},
skip() {
......
......@@ -7,7 +7,7 @@ export default defineComponent({
name: "TeacherTimeTable",
extends: MiniTimeTable,
props: {
teacherId: {
id: {
type: String,
required: true,
},
......@@ -16,6 +16,9 @@ export default defineComponent({
lessons() {
return this.lessonsTeacher;
},
loading() {
return this.$apollo.queries.lessonsTeacher.loading;
},
},
apollo: {
lessonsTeacher: {
......@@ -23,7 +26,7 @@ export default defineComponent({
variables() {
return {
timeGrid: this.timeGrid.id,
teacher: this.teacherId,
teacher: this.id,
};
},
skip() {
......
......@@ -110,3 +110,58 @@ query lessonsRoom($room: ID!, $timeGrid: ID!) {
canDelete
}
}
query lessonsGroup($group: ID!, $timeGrid: ID!) {
lessonsGroup: lessonObjectsForGroup(group: $group, timeGrid: $timeGrid) {
id
slotStart {
id
period
weekday
}
slotEnd {
id
period
weekday
}
subject {
id
name
colourFg
colourBg
}
teachers {
id
fullName
shortName
}
rooms {
id
name
shortName
}
course {
id
name
subject {
id
name
colourFg
colourBg
}
teachers {
id
fullName
shortName
}
groups {
id
name
shortName
}
}
recurrence
canEdit
canDelete
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment