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