11<template >
22 <!-- Breadcrumb -->
33 <v-row dense >
4- <v-col class =" pl-5 mb-1" cols =" 12" md =" 10" >
5- <div class =" path-text d-flex align-center" >
6- <span
7- class =" breadcrumb-link"
8- @click =" navigateTo(constants.HOME_PAGE_ROUTE)"
9- >
10- {{ translate("titles.home") }}
11- </span >
12- <span class =" breadcrumb-arrow" >›</span >
13- <span
14- class =" breadcrumb-link"
15- @click =" navigateTo(constants.MONITORING_ROUTE)"
16- >
17- {{ translate("titles.monitoring") }}
18- </span >
19- <span
20- v-if =" monitoringStore.selectedExam !== null"
21- class =" breadcrumb-arrow"
22- >›</span
23- >
24- <span
25- v-if =" monitoringStore.selectedExam !== null"
26- class =" breadcrumb-link"
27- @click ="
28- navigateTo(
29- constants.MONITORING_OVERVIEW_ROUTE +
30- '/' +
31- monitoringStore.selectedExam.id.toString(),
32- )
33- "
34- >
35- {{ translate("titles.overview") }}
36- </span >
37- </div >
4+ <v-col cols =" 12" md =" 10" >
5+ <BreadCrumb :items =" breadCrumbItems " />
386 </v-col >
397 </v-row >
408 <v-window
9361</template >
9462
9563<script setup lang="ts">
96- import { onBeforeMount , onBeforeUnmount , ref , watch } from " vue" ;
64+ import { computed , onBeforeMount , onBeforeUnmount , ref , watch } from " vue" ;
9765import { useRoute } from " vue-router" ;
9866import { useAppBarStore } from " @/stores/store" ;
9967import { storeToRefs } from " pinia" ;
10068import GalleryImage from " ./GalleryImage.vue" ;
10169import { SortOrder } from " @/models/screen-proctoring/sortOrderEnum" ;
10270import { MetaData , ScreenshotData } from " @/models/screen-proctoring/session" ;
10371import { GroupUuid } from " @/models/screen-proctoring/group" ;
104- import { navigateTo } from " @/router/navigation" ;
105- import * as constants from " @/utils/constants" ;
10672import { translate } from " @/utils/generalUtils" ;
10773import { useMonitoringStore } from " @/stores/seb-server/monitoringStore" ;
10874import { getGroupByUuid } from " @/services/screen-proctoring/groupService" ;
10975import * as galleryUtils from " @/components/views/screen-proctoring/gallery/utils/galleryUtils.ts" ;
76+ import BreadCrumb from " @/components/widgets/breadCrumb/BreadCrumb.vue" ;
77+ import type { BreadCrumbItem } from " @/components/widgets/breadCrumb/types.ts" ;
11078
11179import { getScreenshotDataByTimestamp } from " @/services/screen-proctoring/screenshotDataService.ts" ;
11280
@@ -130,6 +98,24 @@ const appBarStore = useAppBarStore();
13098const appBarStoreRef = storeToRefs (appBarStore );
13199const monitoringStore = useMonitoringStore ();
132100
101+ const breadCrumbItems = computed <BreadCrumbItem []>(() => {
102+ const items: BreadCrumbItem [] = [
103+ { label: translate (" titles.monitoring" ), link: " MonitoringList" },
104+ ];
105+
106+ const selectedExam = monitoringStore .selectedExam ;
107+ if (selectedExam !== null ) {
108+ items .push ({
109+ label: translate (" titles.overview" ),
110+ link: " MonitoringOverview" ,
111+ params: { examId: selectedExam .id .toString () },
112+ });
113+ }
114+
115+ items .push ({ label: translate (" titles.galleryView" ) });
116+ return items ;
117+ });
118+
133119// remaining
134120const groupUuid: string = useRoute ().params .uuid .toString ();
135121let intervalGroup: ReturnType <typeof setInterval > | null = null ;
0 commit comments