diff --git a/client/src/composables.ts b/client/src/composables.ts index f9f049e7..094f60c2 100644 --- a/client/src/composables.ts +++ b/client/src/composables.ts @@ -28,8 +28,8 @@ import type { import { useQuery } from "@urql/vue"; import orderBy from "lodash/orderBy"; import log from "loglevel"; -import type { ComputedRef } from "vue"; -import { computed, onMounted, ref, watchEffect } from "vue"; +import type { ComputedRef, Ref } from "vue"; +import { computed, onMounted, ref, toValue, watchEffect } from "vue"; export function useCurrentCourseSession() { /** @@ -469,17 +469,52 @@ export function useFileUpload() { export function useLearningMentors() { const learningMentors = ref([]); const currentCourseSessionId = useCurrentCourseSession().value.id; + const loading = ref(false); const fetchMentors = async () => { + loading.value = true; const { data } = await useCSRFFetch( `/api/mentor/${currentCourseSessionId}/mentors` ).json(); learningMentors.value = data.value; + loading.value = false; }; onMounted(fetchMentors); return { learningMentors, + loading, + }; +} + +export function useSelfEvaluationFeedback(learningUnitId: Ref | string) { + const feedback = ref({}); + const loading = ref(false); + const exists = ref(false); + + const url = `/api/self-evaluation-feedback/requester/${toValue( + learningUnitId + )}/feedback`; + + const fetchSelfEvaluationFeedback = async () => { + loading.value = true; + const { data, statusCode } = await useCSRFFetch(url).json(); + loading.value = false; + + if (statusCode.value === 404) { + exists.value = false; + return; + } else { + exists.value = true; + feedback.value = data.value; + } + }; + onMounted(fetchSelfEvaluationFeedback); + + return { + feedback, + exists, + loading, }; } diff --git a/client/src/pages/learningPath/selfEvaluationPage/SelfEvaluation.vue b/client/src/pages/learningPath/selfEvaluationPage/SelfEvaluation.vue index 42cd010f..1efbe2f7 100644 --- a/client/src/pages/learningPath/selfEvaluationPage/SelfEvaluation.vue +++ b/client/src/pages/learningPath/selfEvaluationPage/SelfEvaluation.vue @@ -11,7 +11,7 @@ import { useRouteQuery } from "@vueuse/router"; import { computed, onUnmounted } from "vue"; import { getPreviousRoute } from "@/router/history"; import { getCompetenceNaviUrl } from "@/utils/utils"; -import SelfEvaluationSubmit from "@/pages/learningPath/selfEvaluationPage/SelfEvaluationSubmit.vue"; +import SelfEvaluationSubmit from "@/pages/learningPath/selfEvaluationPage/SelfEvaluationRequestFeedback.vue"; log.debug("LearningContent.vue setup"); diff --git a/client/src/pages/learningPath/selfEvaluationPage/SelfEvaluationRequestFeedback.vue b/client/src/pages/learningPath/selfEvaluationPage/SelfEvaluationRequestFeedback.vue new file mode 100644 index 00000000..e658e5ca --- /dev/null +++ b/client/src/pages/learningPath/selfEvaluationPage/SelfEvaluationRequestFeedback.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/client/src/pages/learningPath/selfEvaluationPage/SelfEvaluationSubmit.vue b/client/src/pages/learningPath/selfEvaluationPage/SelfEvaluationSubmit.vue deleted file mode 100644 index 4e3d7664..00000000 --- a/client/src/pages/learningPath/selfEvaluationPage/SelfEvaluationSubmit.vue +++ /dev/null @@ -1,101 +0,0 @@ - - - - - diff --git a/server/vbv_lernwelt/self_evaluation_feedback/admin.py b/server/vbv_lernwelt/self_evaluation_feedback/admin.py index 8c38f3f3..acabf04e 100644 --- a/server/vbv_lernwelt/self_evaluation_feedback/admin.py +++ b/server/vbv_lernwelt/self_evaluation_feedback/admin.py @@ -1,3 +1,49 @@ from django.contrib import admin -# Register your models here. +from vbv_lernwelt.self_evaluation_feedback.models import ( + CourseCompletionFeedback, + SelfEvaluationFeedback, +) + + +@admin.register(SelfEvaluationFeedback) +class CourseSessionAdmin(admin.ModelAdmin): + list_display = ( + "id", + "feedback_submitted", + "feedback_requester_user", + "feedback_provider_user", + "learning_unit", + ) + list_filter = ( + "feedback_submitted", + "feedback_requester_user", + "feedback_provider_user", + "learning_unit", + ) + search_fields = ( + "feedback_submitted", + "feedback_requester_user", + "feedback_provider_user", + "learning_unit", + ) + + +@admin.register(CourseCompletionFeedback) +class CourseSessionAdmin(admin.ModelAdmin): + list_display = ( + "id", + "feedback", + "course_completion", + "feedback_assessment", + ) + list_filter = ( + "feedback", + "course_completion", + "feedback_assessment", + ) + search_fields = ( + "feedback", + "course_completion", + "feedback_assessment", + )