-
-
+
+
+
Cockpit
@@ -113,7 +116,7 @@ const courseSessionDetailResult = useCourseSessionDetailQuery();
@@ -137,12 +140,12 @@ const courseSessionDetailResult = useCourseSessionDetailQuery();
:course-session-id="courseSession.id"
:course-slug="props.courseSlug"
:user-id="csu.user_id"
- :show-circle-slugs="[cockpitStore.currentCircle.slug]"
+ :show-circle-slugs="[expertCockpitStore.currentCircle.slug]"
diagram-type="singleSmall"
class="mr-4"
>
- {{ cockpitStore.currentCircle.title }}
+ {{ expertCockpitStore.currentCircle.title }}
+
{{ $t("a.Kein Circle verfügbar oder ausgewählt.") }}
+
+
+
+ {{ $t("a.Kein Circle verfügbar oder ausgewählt.") }}
+
+
diff --git a/client/src/pages/cockpit/cockpitPage/CockpitMentorPage.vue b/client/src/pages/cockpit/cockpitPage/CockpitMentorPage.vue
new file mode 100644
index 00000000..d1d56620
--- /dev/null
+++ b/client/src/pages/cockpit/cockpitPage/CockpitMentorPage.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/client/src/pages/cockpit/cockpitPage/SubmissionsOverview.vue b/client/src/pages/cockpit/cockpitPage/SubmissionsOverview.vue
index 4ee1add1..4c4ea0ac 100644
--- a/client/src/pages/cockpit/cockpitPage/SubmissionsOverview.vue
+++ b/client/src/pages/cockpit/cockpitPage/SubmissionsOverview.vue
@@ -17,6 +17,7 @@ import {
useCourseSessionDetailQuery,
} from "@/composables";
import { circleFlatLearningContents } from "@/services/circle";
+import { getCockpitUrl } from "@/utils/utils";
interface Submittable {
id: string;
@@ -126,10 +127,12 @@ const getShowDetailsText = (lc: LearningContent) => {
};
const getDetailsLink = (lc: LearningContent, circleId: string) => {
+ const base = getCockpitUrl(props.courseSession.course.slug);
+
if (isFeedback(lc)) {
- return `cockpit/feedback/${circleId}`;
+ return `${base}/feedback/${circleId}`;
} else if (isAssignment(lc) || isEdoniqTest(lc)) {
- return `cockpit/assignment/${lc.id}`;
+ return `${base}/assignment/${lc.id}`;
}
return "";
};
@@ -191,18 +194,18 @@ const getIconName = (lc: LearningContent) => {
class="grow pr-8"
>
-
+
+ {{ submittable.showDetailsText }}
+
diff --git a/client/src/pages/cockpit/cockpitPage/composables.ts b/client/src/pages/cockpit/cockpitPage/composables.ts
new file mode 100644
index 00000000..eb6c0d71
--- /dev/null
+++ b/client/src/pages/cockpit/cockpitPage/composables.ts
@@ -0,0 +1,36 @@
+import {
+ useCourseDataWithCompletion,
+ useCourseSessionDetailQuery,
+} from "@/composables";
+import { useExpertCockpitStore } from "@/stores/expertCockpit";
+import { ref } from "vue";
+
+export function useExpertCockpitPageData(courseSlug: string) {
+ const loading = ref(true);
+
+ const cockpitStore = useExpertCockpitStore();
+ const courseSessionDetailResult = useCourseSessionDetailQuery();
+
+ async function loadData() {
+ loading.value = true;
+ await courseSessionDetailResult.waitForData();
+ await cockpitStore.loadCircles(
+ courseSlug,
+ courseSessionDetailResult.findCurrentUser()
+ );
+
+ const userDataPromises = courseSessionDetailResult.filterMembers().map((m) => {
+ const completionData = useCourseDataWithCompletion(courseSlug, m.id);
+ return completionData.resultPromise;
+ });
+
+ await Promise.all(userDataPromises);
+ loading.value = false;
+ }
+
+ loadData();
+
+ return {
+ loading,
+ };
+}
diff --git a/client/src/pages/cockpit/cockpitPage/mentor/MentorDetailParentPage.vue b/client/src/pages/cockpit/cockpitPage/mentor/MentorDetailParentPage.vue
new file mode 100644
index 00000000..1c5ba781
--- /dev/null
+++ b/client/src/pages/cockpit/cockpitPage/mentor/MentorDetailParentPage.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+ {{ $t("general.back") }}
+
+
+
+
+
+
diff --git a/client/src/pages/cockpit/cockpitPage/mentor/MentorOverview.vue b/client/src/pages/cockpit/cockpitPage/mentor/MentorOverview.vue
new file mode 100644
index 00000000..67b0e047
--- /dev/null
+++ b/client/src/pages/cockpit/cockpitPage/mentor/MentorOverview.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
diff --git a/client/src/pages/cockpit/cockpitPage/mentor/MentorParticipants.vue b/client/src/pages/cockpit/cockpitPage/mentor/MentorParticipants.vue
new file mode 100644
index 00000000..c8fd6d15
--- /dev/null
+++ b/client/src/pages/cockpit/cockpitPage/mentor/MentorParticipants.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
![]()
+
+
+ {{ participant.first_name }}
+ {{ participant.last_name }}
+
+ {{ participant.email }}
+
+
+
+
+
+
+
+
diff --git a/client/src/pages/cockpit/cockpitPage/mentor/MentorPraxisAssignment.vue b/client/src/pages/cockpit/cockpitPage/mentor/MentorPraxisAssignment.vue
new file mode 100644
index 00000000..2fa4d7d4
--- /dev/null
+++ b/client/src/pages/cockpit/cockpitPage/mentor/MentorPraxisAssignment.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
{{ $t("a.Praxisauftrag") }}: {{ praxisAssignment.title }}
+
+ Circle «{{ mentorCockpitStore.getCircleTitleById(praxisAssignment.circle_id) }}»
+
+
+
+
+ {{ praxisAssignment.pending_evaluations }}
+
+
{{ $t("a.Ergebnisse abgegeben") }}
+
+
+
+
+
+
+
+
+
+
![]()
+
+
+ {{ getParticipantById(item.user_id)?.first_name }}
+ {{ getParticipantById(item.user_id)?.last_name }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("a.Ergebnisse abgegeben") }}
+
+
+
+
+
+
+
+ {{ $t("a.Bewertung freigeben") }}
+
+
+
+
+
+
+
+
+
diff --git a/client/src/pages/cockpit/documentPage/DocumentPage.vue b/client/src/pages/cockpit/documentPage/DocumentPage.vue
index 1fdfd40f..0fdb63fb 100644
--- a/client/src/pages/cockpit/documentPage/DocumentPage.vue
+++ b/client/src/pages/cockpit/documentPage/DocumentPage.vue
@@ -1,7 +1,7 @@
+
+
+
+
diff --git a/client/src/pages/competence/CompetenceParentPage.vue b/client/src/pages/competence/CompetenceParentPage.vue
index f07cbde4..0b96ec43 100644
--- a/client/src/pages/competence/CompetenceParentPage.vue
+++ b/client/src/pages/competence/CompetenceParentPage.vue
@@ -37,35 +37,44 @@ onMounted(async () => {