From 6048129507e0dbb7489fbc8d3ca24e4653dbe11e Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Wed, 4 Oct 2023 15:41:46 +0200 Subject: [PATCH] Add courseSessionId query param to url and switch to it --- .../src/components/dueDates/DueDateSingle.vue | 19 +++++- .../src/components/dueDates/DueDatesList.vue | 6 +- .../components/dueDates/DueDatesShortList.vue | 1 + client/src/components/header/AccountMenu.vue | 2 +- client/src/pages/AppointmentsPage.vue | 1 + client/src/pages/DashboardPage.vue | 1 + client/src/router/guards.ts | 59 +++++++++++++++---- client/src/router/index.ts | 6 +- client/src/stores/courseSessions.ts | 23 +++++++- server/vbv_lernwelt/course/admin.py | 8 ++- server/vbv_lernwelt/course_session/models.py | 18 +++--- .../migrations/0005_auto_20230925_1648.py | 50 ++++------------ server/vbv_lernwelt/learnpath/models.py | 9 ++- 13 files changed, 137 insertions(+), 66 deletions(-) diff --git a/client/src/components/dueDates/DueDateSingle.vue b/client/src/components/dueDates/DueDateSingle.vue index 2fff8b4a..45148417 100644 --- a/client/src/components/dueDates/DueDateSingle.vue +++ b/client/src/components/dueDates/DueDateSingle.vue @@ -3,10 +3,12 @@ import type { CourseSession, DueDate } from "@/types"; import { useCourseSessionsStore } from "@/stores/courseSessions"; import { useTranslation } from "i18next-vue"; import dayjs from "dayjs"; +import { computed } from "vue"; const props = defineProps<{ dueDate: DueDate; singleLine?: boolean; + showCourseSession?: boolean; }>(); const { t } = useTranslation(); @@ -24,6 +26,16 @@ if (!courseSession) { const isExpert = courseSessionsStore.hasCockpit(courseSession); const url = isExpert ? props.dueDate.url_expert : props.dueDate.url; + +const courseSessionTitle = computed(() => { + if (props.dueDate.course_session) { + return ( + courseSessionsStore.getCourseSessionById(props.dueDate.course_session)?.title ?? + "" + ); + } + return ""; +}); diff --git a/client/src/components/header/AccountMenu.vue b/client/src/components/header/AccountMenu.vue index 3ed1bc55..a6f0db29 100644 --- a/client/src/components/header/AccountMenu.vue +++ b/client/src/components/header/AccountMenu.vue @@ -18,7 +18,7 @@ const logout = () => { userStore.handleLogout(); }; const selectCourseSession = (courseSession: CourseSession) => { - courseSessionsStore.switchCourseSession(courseSession); + courseSessionsStore.switchCourseSessionById(courseSession.id); }; const courseSessionsStore = useCourseSessionsStore(); diff --git a/client/src/pages/AppointmentsPage.vue b/client/src/pages/AppointmentsPage.vue index 3518ab65..9bfdfca2 100644 --- a/client/src/pages/AppointmentsPage.vue +++ b/client/src/pages/AppointmentsPage.vue @@ -138,6 +138,7 @@ async function loadAdditionalAppointments() { :show-all-due-dates-link="false" :max-count="numAppointmentsToShow" data-cy="appointments-list" + :show-course-session="true" />