From 6b6cb08bb7d6012c839fe97cec9f9cdd7818e938 Mon Sep 17 00:00:00 2001 From: Michael Bauer <michael-bauer@posteo.de> Date: Wed, 14 Feb 2024 18:51:14 +0100 Subject: [PATCH] Add class & course navigation by selection --- .../frontend/components/Coursebook.vue | 29 +++++++++++++++++++ .../frontend/components/coursebook.graphql | 1 + 2 files changed, 30 insertions(+) diff --git a/aleksis/apps/alsijil/frontend/components/Coursebook.vue b/aleksis/apps/alsijil/frontend/components/Coursebook.vue index 6a5ef7c38..1723f10ce 100644 --- a/aleksis/apps/alsijil/frontend/components/Coursebook.vue +++ b/aleksis/apps/alsijil/frontend/components/Coursebook.vue @@ -7,6 +7,15 @@ :enable-edit="false" @lastQuery="lastQuery = $event" > + <template #additionalActions="{ attrs, on }"> + <v-autocomplete + :items="selectable" + item-text="name" + clearable + return-object + @input="changeSelection" + /> + </template> <template #default="{ items }"> <v-list-item v-for="day in groupDocsByDay(items)" two-line> <v-list-item-content> @@ -87,8 +96,28 @@ export default { dateEnd: this.dateEnd, }; }, + selectable() { + // TODO: i18n + return [ + { header: "Klassen" }, + ...this.groups.map((group) => ({ type: "group", ...group })), + { header: "Kurse" }, + ...this.courses.map((course) => ({ type: "course", ...course })), + ]; + }, }, methods: { + changeSelection(selection) { + this.$router.push({ + name: "alsijil.coursebook_by_obj_id_and_date", + params: { + objType: selection.type, + objId: selection.id, + dateStart: this.dateStart, + dateEnd: this.dateEnd, + }, + }); + }, // => [[dt doc ...] ...] groupDocsByDay(docs) { const byDay = docs.reduce((byDay, doc) => { diff --git a/aleksis/apps/alsijil/frontend/components/coursebook.graphql b/aleksis/apps/alsijil/frontend/components/coursebook.graphql index b3ad6cc0b..ab7a3a901 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook.graphql +++ b/aleksis/apps/alsijil/frontend/components/coursebook.graphql @@ -11,6 +11,7 @@ query coursesOfTeacher { name groups { id + name } } } -- GitLab