diff --git a/aleksis/apps/chronos/frontend/components/amendLesson.graphql b/aleksis/apps/chronos/frontend/components/amendLesson.graphql index 2f017f687aa941aaec46be77c67567823b893781..bf6d16e4820b1f31da4b33a28660ad7036287d33 100644 --- a/aleksis/apps/chronos/frontend/components/amendLesson.graphql +++ b/aleksis/apps/chronos/frontend/components/amendLesson.graphql @@ -1,3 +1,24 @@ +query gqlSubjects { + amendableSubjects: subjects { + id + name + } +} + +query gqlPersons { + amendableTeachers: persons { + id + fullName + } +} + +query gqlRooms { + amendableRooms: rooms { + id + name + } +} + mutation createAmendLesson($input: CreateLessonEventInput!) { createAmendLesson(input: $input) { lessonEvent { diff --git a/aleksis/apps/chronos/frontend/components/calendar_feeds/details/LessonDetails.vue b/aleksis/apps/chronos/frontend/components/calendar_feeds/details/LessonDetails.vue index 39cb0d03590757f9f86229c5c95c4b89b4d87fbd..0dd8bc7229d3aa5cc5f8b920389f8aa80e648899 100644 --- a/aleksis/apps/chronos/frontend/components/calendar_feeds/details/LessonDetails.vue +++ b/aleksis/apps/chronos/frontend/components/calendar_feeds/details/LessonDetails.vue @@ -114,7 +114,40 @@ :edit-item="initPatchData" @cancel="amendEvent.open = false" > - <template #cancelled.field="{ on, attrs }"> + <template #subject.field="{ attrs, on }"> + <v-autocomplete + :items="amendableSubjects" + item-text="name" + item-value="id" + v-bind="attrs" + v-on="on" + /> + </template> + <template #teachers.field="{ attrs, on }"> + <v-autocomplete + multiple + :items="amendableTeachers" + item-text="fullName" + item-value="id" + v-bind="attrs" + v-on="on" + chips + deletable-chips + /> + </template> + <template #rooms.field="{ attrs, on }"> + <v-autocomplete + multiple + :items="amendableRooms" + item-text="name" + item-value="id" + v-bind="attrs" + v-on="on" + chips + deletable-chips + /> + </template> + <template #cancelled.field="{ attrs, on }"> <v-checkbox v-bind="attrs" v-on="on" @@ -139,6 +172,9 @@ import LessonRelatedObjectChip from "../../LessonRelatedObjectChip.vue"; import lessonEvent from "../mixins/lessonEvent"; import LessonEventSubject from "../../LessonEventSubject.vue"; import { + gqlSubjects, + gqlPersons, + gqlRooms, createAmendLesson, patchAmendLesson } from "../../amendLesson.graphql"; @@ -214,13 +250,18 @@ export default { initPatchData() { return { id: this.selectedEvent.meta.id, - subject: this.selectedEvent.meta.subject?.id, - teachers: this.selectedEvent.meta.teachers.map((teacher) => teacher.id), - rooms: this.selectedEvent.meta.rooms.map((room) => room.id), + subject: this.selectedEvent.meta.subject?, + teachers: this.selectedEvent.meta.teachers, + rooms: this.selectedEvent.meta.rooms, cancelled: this.selectedEvent.meta.cancelled, comment: this.selectedEvent.meta.comment, }; }, }, + apollo: { + amendableSubjects: gqlSubjects, + amendableTeachers: gqlPersons, + amendableRooms: gqlRooms, + }, }; </script>