Get attendance day details in relevant views
This commit is contained in:
parent
1437bc9b53
commit
9177b9e003
|
|
@ -1,27 +1,31 @@
|
||||||
<template>
|
|
||||||
<div class="container-medium">
|
|
||||||
<div class="lg:mt-8">
|
|
||||||
<p class="text-large my-4">
|
|
||||||
<pre>
|
|
||||||
{{ content.contents }}
|
|
||||||
{{ content.translation_key }}
|
|
||||||
{{ content.title }}
|
|
||||||
{{ content.slug }}
|
|
||||||
</pre>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { useCourseSessionsStore } from "@/stores/courseSessions";
|
||||||
import type { LearningContent } from "@/types";
|
import type { LearningContent } from "@/types";
|
||||||
|
import { computed } from "vue";
|
||||||
|
|
||||||
|
const courseSessionsStore = useCourseSessionsStore();
|
||||||
|
|
||||||
interface Value {
|
interface Value {
|
||||||
description: string;
|
description: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
defineProps<{
|
const props = defineProps<{
|
||||||
value: Value;
|
value: Value;
|
||||||
content: LearningContent;
|
content: LearningContent;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
|
const attendanceDay = computed(() => {
|
||||||
|
return courseSessionsStore.findAttendanceDay(props.content.slug);
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="container-medium">
|
||||||
|
<div class="lg:mt-8">
|
||||||
|
<div class="text-large my-4">
|
||||||
|
<div v-if="attendanceDay">{{ attendanceDay }}</div>
|
||||||
|
<div v-else>Keine Präsenztagdaten erfasst für diese Durchführung</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ import { deleteCircleDocument } from "@/services/files";
|
||||||
import type {
|
import type {
|
||||||
CircleDocument,
|
CircleDocument,
|
||||||
CourseSession,
|
CourseSession,
|
||||||
|
CourseSessionAttendanceDay,
|
||||||
CourseSessionUser,
|
CourseSessionUser,
|
||||||
ExpertSessionUser,
|
ExpertSessionUser,
|
||||||
} from "@/types";
|
} from "@/types";
|
||||||
|
|
@ -211,6 +212,19 @@ export const useCourseSessionsStore = defineStore("courseSessions", () => {
|
||||||
courseSessionForRoute.value?.documents.filter((d) => d.id !== documentId);
|
courseSessionForRoute.value?.documents.filter((d) => d.id !== documentId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function findAttendanceDay(
|
||||||
|
contentSlug: string
|
||||||
|
): CourseSessionAttendanceDay | undefined {
|
||||||
|
const currentCourseSession = courseSessionForRoute.value;
|
||||||
|
if (currentCourseSession) {
|
||||||
|
const attendanceDays =
|
||||||
|
currentCourseSession.additional_json_data?.attendanceDays ?? [];
|
||||||
|
return attendanceDays.find(
|
||||||
|
(attendanceDay) => attendanceDay.learningContentSlug === contentSlug
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
currentCourseSlug,
|
currentCourseSlug,
|
||||||
courseSessions,
|
courseSessions,
|
||||||
|
|
@ -227,5 +241,6 @@ export const useCourseSessionsStore = defineStore("courseSessions", () => {
|
||||||
addDocument,
|
addDocument,
|
||||||
startUpload,
|
startUpload,
|
||||||
removeDocument,
|
removeDocument,
|
||||||
|
findAttendanceDay,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -338,6 +338,16 @@ export interface CircleDocument {
|
||||||
learning_sequence: number;
|
learning_sequence: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO refactor, when a user can manually create these days
|
||||||
|
export interface CourseSessionAttendanceDay {
|
||||||
|
learningContentSlug: string;
|
||||||
|
date: string;
|
||||||
|
startTime: string;
|
||||||
|
endTime: string;
|
||||||
|
location: string;
|
||||||
|
trainer: string;
|
||||||
|
}
|
||||||
|
|
||||||
export interface CourseSession {
|
export interface CourseSession {
|
||||||
id: number;
|
id: number;
|
||||||
created_at: string;
|
created_at: string;
|
||||||
|
|
@ -350,7 +360,9 @@ export interface CourseSession {
|
||||||
competence_url: string;
|
competence_url: string;
|
||||||
course_url: string;
|
course_url: string;
|
||||||
media_library_url: string;
|
media_library_url: string;
|
||||||
additional_json_data: unknown;
|
additional_json_data: {
|
||||||
|
attendanceDays?: CourseSessionAttendanceDay[];
|
||||||
|
};
|
||||||
documents: CircleDocument[];
|
documents: CircleDocument[];
|
||||||
users: CourseSessionUser[];
|
users: CourseSessionUser[];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -144,6 +144,18 @@ def create_course_uk_de():
|
||||||
cs = CourseSession.objects.create(
|
cs = CourseSession.objects.create(
|
||||||
course_id=COURSE_UK,
|
course_id=COURSE_UK,
|
||||||
title="Bern 2023 a",
|
title="Bern 2023 a",
|
||||||
|
additional_json_data={
|
||||||
|
"attendanceDays": [
|
||||||
|
{
|
||||||
|
"learningContentSlug": "überbetriebliche-kurse-lp-circle-fahrzeug-lc-präsenztag-fahrzeug",
|
||||||
|
"date": "2023-09-18",
|
||||||
|
"startTime": "08:15",
|
||||||
|
"endTime": "17:00",
|
||||||
|
"location": "Handelsschule KV Bern, Zimmer 123, Eigerstrasse 16, 3012 Bern",
|
||||||
|
"trainer": "Roland Grossenbacher, roland.grossenbacher@helvetia.ch",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
# figma demo users and data
|
# figma demo users and data
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue