feat: overview page
This commit is contained in:
parent
964c1f7276
commit
3011fa2ef4
|
|
@ -12,6 +12,7 @@ import {
|
||||||
} from "@/pages/competence/utils";
|
} from "@/pages/competence/utils";
|
||||||
import { useSelfEvaluationFeedbackSummaries } from "@/services/selfEvaluationFeedback";
|
import { useSelfEvaluationFeedbackSummaries } from "@/services/selfEvaluationFeedback";
|
||||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||||
|
import { VV_COURSE_IDS } from "@/constants";
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
courseSlug: string;
|
courseSlug: string;
|
||||||
|
|
@ -65,13 +66,23 @@ const isFeedbackEvaluationVisible = computed(
|
||||||
selfEvaluationFeedbackSummaries.aggregates.value?.feedback_assessment_visible ??
|
selfEvaluationFeedbackSummaries.aggregates.value?.feedback_assessment_visible ??
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// FIXME 22.02.24: To-be-tackled NEXT in a separate PR (shippable member comp.navi)
|
||||||
|
// -> Do not use the VV_COURSE_ID anymore (discuss with @chrigu) -> We do this next.
|
||||||
|
const hasCompetenceCertificates = computed(() => {
|
||||||
|
return !VV_COURSE_IDS.includes(useCurrentCourseSession().value.course.id);
|
||||||
|
});
|
||||||
|
|
||||||
|
const isLoaded = computed(
|
||||||
|
() =>
|
||||||
|
!selfEvaluationFeedbackSummaries.loading.value && !certificatesQuery.fetching.value
|
||||||
|
);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="container-large lg:mt-4">
|
<div v-if="isLoaded" class="container-large lg:mt-4">
|
||||||
<h1 class="mb-8">{{ $t("a.KompetenzNavi") }}</h1>
|
<!-- Competence certificates -->
|
||||||
|
<section v-if="hasCompetenceCertificates" class="mb-4 bg-white p-8">
|
||||||
<section class="mb-4 bg-white p-8">
|
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<h3>{{ $t("a.Kompetenznachweise") }}</h3>
|
<h3>{{ $t("a.Kompetenznachweise") }}</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -145,79 +156,34 @@ const isFeedbackEvaluationVisible = computed(
|
||||||
|
|
||||||
<!-- Self-evaluation -->
|
<!-- Self-evaluation -->
|
||||||
<section class="mb-4 bg-white px-8 py-4 lg:mb-8 lg:py-8">
|
<section class="mb-4 bg-white px-8 py-4 lg:mb-8 lg:py-8">
|
||||||
<h3 class="mb-4 pb-4 lg:pb-0">
|
<div class="mb-8">
|
||||||
{{ $t("a.Selbsteinschätzungen") }}
|
<h3 class="mb-4 pb-4 lg:pb-0">
|
||||||
</h3>
|
{{ $t("a.Selbsteinschätzungen") }}
|
||||||
<ul
|
|
||||||
class="mb-6 flex flex-col lg:flex-row lg:items-center lg:justify-between lg:gap-8"
|
|
||||||
>
|
|
||||||
<li class="mb-4 inline-block flex-1 pb-4 lg:mb-0 lg:w-1/3 lg:pb-0">
|
|
||||||
<h5 class="mb-4 text-gray-700">«{{ $t("selfEvaluation.no") }}»</h5>
|
|
||||||
<div class="flex flex-row items-center">
|
|
||||||
<it-icon-smiley-thinking class="h-16 w-16"></it-icon-smiley-thinking>
|
|
||||||
<p
|
|
||||||
class="ml-4 inline-block text-7xl font-bold"
|
|
||||||
data-cy="self-evaluation-fail"
|
|
||||||
>
|
|
||||||
{{ selfAssessmentCounts?.fail }}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="mb-4 inline-block flex-1 pb-4 lg:mb-0 lg:w-1/3 lg:pb-0">
|
|
||||||
<h5 class="mb-4 text-gray-700">«{{ $t("selfEvaluation.yes") }}»</h5>
|
|
||||||
<div class="flex flex-row items-center">
|
|
||||||
<it-icon-smiley-happy class="h-16 w-16"></it-icon-smiley-happy>
|
|
||||||
<p
|
|
||||||
class="ml-4 inline-block text-7xl font-bold"
|
|
||||||
data-cy="self-evaluation-success"
|
|
||||||
>
|
|
||||||
{{ selfAssessmentCounts?.pass }}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="flex-1 pb-4 lg:mb-0 lg:w-1/3 lg:pb-0">
|
|
||||||
<h5 class="mb-4 text-gray-700">{{ $t("competences.notAssessed") }}</h5>
|
|
||||||
<div class="flex flex-row items-center">
|
|
||||||
<it-icon-smiley-neutral class="h-16 w-16"></it-icon-smiley-neutral>
|
|
||||||
<p
|
|
||||||
class="ml-4 inline-block text-7xl font-bold"
|
|
||||||
data-cy="self-evaluation-unknown"
|
|
||||||
>
|
|
||||||
{{ selfAssessmentCounts?.unknown }}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<!-- Feedback evaluation -->
|
|
||||||
<template v-if="isFeedbackEvaluationVisible">
|
|
||||||
<h3 class="mb-4 border-t pb-4 pt-4 lg:pb-0">
|
|
||||||
{{ $t("a.Fremdeinschätzungen") }}
|
|
||||||
</h3>
|
</h3>
|
||||||
<ul
|
<ul
|
||||||
class="mb-6 flex flex-col lg:flex-row lg:items-center lg:justify-between lg:gap-8"
|
class="mb-6 flex flex-col lg:flex-row lg:items-center lg:justify-between lg:gap-8"
|
||||||
>
|
>
|
||||||
<li class="mb-4 inline-block flex-1 pb-4 lg:mb-0 lg:w-1/3 lg:pb-0">
|
<li class="mb-4 inline-block flex-1 pb-4 lg:mb-0 lg:w-1/3 lg:pb-0">
|
||||||
<h5 class="mb-4 text-gray-700">«{{ $t("receivedEvaluation.no") }}»</h5>
|
<h5 class="mb-4 text-gray-700">«{{ $t("selfEvaluation.no") }}»</h5>
|
||||||
<div class="flex flex-row items-center">
|
<div class="flex flex-row items-center">
|
||||||
<it-icon-smiley-thinking class="h-16 w-16"></it-icon-smiley-thinking>
|
<it-icon-smiley-thinking class="h-16 w-16"></it-icon-smiley-thinking>
|
||||||
<p
|
<p
|
||||||
class="ml-4 inline-block text-7xl font-bold"
|
class="ml-4 inline-block text-7xl font-bold"
|
||||||
data-cy="self-evaluation-fail"
|
data-cy="self-evaluation-fail"
|
||||||
>
|
>
|
||||||
{{ feedbackEvaluationCounts?.fail }}
|
{{ selfAssessmentCounts?.fail }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="mb-4 inline-block flex-1 pb-4 lg:mb-0 lg:w-1/3 lg:pb-0">
|
<li class="mb-4 inline-block flex-1 pb-4 lg:mb-0 lg:w-1/3 lg:pb-0">
|
||||||
<h5 class="mb-4 text-gray-700">«{{ $t("receivedEvaluation.yes") }}»</h5>
|
<h5 class="mb-4 text-gray-700">«{{ $t("selfEvaluation.yes") }}»</h5>
|
||||||
<div class="flex flex-row items-center">
|
<div class="flex flex-row items-center">
|
||||||
<it-icon-smiley-happy class="h-16 w-16"></it-icon-smiley-happy>
|
<it-icon-smiley-happy class="h-16 w-16"></it-icon-smiley-happy>
|
||||||
<p
|
<p
|
||||||
class="ml-4 inline-block text-7xl font-bold"
|
class="ml-4 inline-block text-7xl font-bold"
|
||||||
data-cy="self-evaluation-success"
|
data-cy="self-evaluation-success"
|
||||||
>
|
>
|
||||||
{{ feedbackEvaluationCounts?.pass }}
|
{{ selfAssessmentCounts?.pass }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -229,17 +195,55 @@ const isFeedbackEvaluationVisible = computed(
|
||||||
class="ml-4 inline-block text-7xl font-bold"
|
class="ml-4 inline-block text-7xl font-bold"
|
||||||
data-cy="self-evaluation-unknown"
|
data-cy="self-evaluation-unknown"
|
||||||
>
|
>
|
||||||
|
{{ selfAssessmentCounts?.unknown }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Feedback evaluation -->
|
||||||
|
<div v-if="isFeedbackEvaluationVisible" class="mb-8 border-t pt-8">
|
||||||
|
<h3 class="mb-4 pb-4 lg:pb-0">
|
||||||
|
{{ $t("a.Fremdeinschätzungen") }}
|
||||||
|
</h3>
|
||||||
|
<ul
|
||||||
|
class="mb-6 flex flex-col lg:flex-row lg:items-center lg:justify-between lg:gap-8"
|
||||||
|
>
|
||||||
|
<li class="mb-4 inline-block flex-1 pb-4 lg:mb-0 lg:w-1/3 lg:pb-0">
|
||||||
|
<h5 class="mb-4 text-gray-700">«{{ $t("receivedEvaluation.no") }}»</h5>
|
||||||
|
<div class="flex flex-row items-center">
|
||||||
|
<it-icon-smiley-thinking class="h-16 w-16"></it-icon-smiley-thinking>
|
||||||
|
<p class="ml-4 inline-block text-7xl font-bold">
|
||||||
|
{{ feedbackEvaluationCounts?.fail }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="mb-4 inline-block flex-1 pb-4 lg:mb-0 lg:w-1/3 lg:pb-0">
|
||||||
|
<h5 class="mb-4 text-gray-700">«{{ $t("receivedEvaluation.yes") }}»</h5>
|
||||||
|
<div class="flex flex-row items-center">
|
||||||
|
<it-icon-smiley-happy class="h-16 w-16"></it-icon-smiley-happy>
|
||||||
|
<p class="ml-4 inline-block text-7xl font-bold">
|
||||||
|
{{ feedbackEvaluationCounts?.pass }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="flex-1 pb-4 lg:mb-0 lg:w-1/3 lg:pb-0">
|
||||||
|
<h5 class="mb-4 text-gray-700">{{ $t("competences.notAssessed") }}</h5>
|
||||||
|
<div class="flex flex-row items-center">
|
||||||
|
<it-icon-smiley-neutral class="h-16 w-16"></it-icon-smiley-neutral>
|
||||||
|
<p class="ml-4 inline-block text-7xl font-bold">
|
||||||
{{ feedbackEvaluationCounts?.unknown }}
|
{{ feedbackEvaluationCounts?.unknown }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</template>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<router-link
|
<router-link
|
||||||
:to="`/course/${props.courseSlug}/competence/criteria`"
|
:to="`/course/${props.courseSlug}/competence/self-evaluation-and-feedback`"
|
||||||
class="btn-text mt-4 inline-flex items-center py-2 pl-0"
|
class="btn-text inline-flex items-center py-2 pl-0"
|
||||||
>
|
>
|
||||||
<span>{{ $t("general.showAll") }}</span>
|
<span>{{ $t("general.showAll") }}</span>
|
||||||
<it-icon-arrow-right></it-icon-arrow-right>
|
<it-icon-arrow-right></it-icon-arrow-right>
|
||||||
|
|
|
||||||
|
|
@ -19,10 +19,6 @@ function routeInCompetenceCertificate() {
|
||||||
return route.path.includes("/certificate");
|
return route.path.includes("/certificate");
|
||||||
}
|
}
|
||||||
|
|
||||||
function routeInPerformanceCriteria() {
|
|
||||||
return route.path.endsWith("/criteria");
|
|
||||||
}
|
|
||||||
|
|
||||||
function routeInActionCompetences() {
|
function routeInActionCompetences() {
|
||||||
return route.path.endsWith("/competences");
|
return route.path.endsWith("/competences");
|
||||||
}
|
}
|
||||||
|
|
@ -59,18 +55,6 @@ onMounted(async () => {
|
||||||
{{ $t("a.Kompetenznachweise") }}
|
{{ $t("a.Kompetenznachweise") }}
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li
|
|
||||||
class="border-t-2 border-t-transparent lg:ml-12"
|
|
||||||
:class="{ 'border-b-2 border-b-blue-900': routeInPerformanceCriteria() }"
|
|
||||||
>
|
|
||||||
<router-link
|
|
||||||
:to="`/course/${courseSlug}/competence/criteria`"
|
|
||||||
class="block py-3"
|
|
||||||
>
|
|
||||||
{{ $t("a.Selbsteinschätzungen") }}
|
|
||||||
</router-link>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li
|
<li
|
||||||
class="border-t-2 border-t-transparent lg:ml-12"
|
class="border-t-2 border-t-transparent lg:ml-12"
|
||||||
:class="{ 'border-b-2 border-b-blue-900': routeInActionCompetences() }"
|
:class="{ 'border-b-2 border-b-blue-900': routeInActionCompetences() }"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import log from "loglevel";
|
|
||||||
import { useSelfEvaluationFeedbackSummaries } from "@/services/selfEvaluationFeedback";
|
import { useSelfEvaluationFeedbackSummaries } from "@/services/selfEvaluationFeedback";
|
||||||
import { useCurrentCourseSession } from "@/composables";
|
import { useCurrentCourseSession } from "@/composables";
|
||||||
import { computed, ref } from "vue";
|
import { computed, ref } from "vue";
|
||||||
|
|
@ -42,8 +41,6 @@ const headerTitle = computed(() => {
|
||||||
return t("a.Selbsteinschätzungen");
|
return t("a.Selbsteinschätzungen");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
log.info("SelfEvaluationsAndFeedbackPage created");
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ const competenceCertificateUrl = computed(() => {
|
||||||
});
|
});
|
||||||
|
|
||||||
const competenceCriteriaUrl = computed(() => {
|
const competenceCriteriaUrl = computed(() => {
|
||||||
return `/course/${courseSlug.value}/competence/criteria?courseSessionId=${courseSessionProgress.value?.session_to_continue_id}`;
|
return `/course/${courseSlug.value}/competence/self-evaluation-and-feedback?courseSessionId=${courseSessionProgress.value?.session_to_continue_id}`;
|
||||||
});
|
});
|
||||||
|
|
||||||
const isVVCourse = computed(() => {
|
const isVVCourse = computed(() => {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue