feat: mentor feedback UI
This commit is contained in:
parent
c5ff3e9fb6
commit
f123e2bddf
|
|
@ -87,7 +87,7 @@ const filteredAssignments: Ref<Assignment[]> = computed(() => {
|
||||||
:pending-tasks="item.pending_evaluations"
|
:pending-tasks="item.pending_evaluations"
|
||||||
:task-link="{
|
:task-link="{
|
||||||
name: 'mentorCockpitSelfEvaluationFeedbackAssignments',
|
name: 'mentorCockpitSelfEvaluationFeedbackAssignments',
|
||||||
params: { selfEvaluationFeedbackId: item.id },
|
params: { learningUnitId: item.id },
|
||||||
}"
|
}"
|
||||||
:task-title="item.title"
|
:task-title="item.title"
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
|
|
@ -5,14 +5,14 @@ import { computed, type Ref } from "vue";
|
||||||
import { useCurrentCourseSession } from "@/composables";
|
import { useCurrentCourseSession } from "@/composables";
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
selfEvaluationFeedbackId: string;
|
learningUnitId: string;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const courseSession = useCurrentCourseSession();
|
const courseSession = useCurrentCourseSession();
|
||||||
const mentorCockpitStore = useMentorCockpit(courseSession.value.id);
|
const mentorCockpitStore = useMentorCockpit(courseSession.value.id);
|
||||||
|
|
||||||
const selfEvaluationFeedback: Ref<Assignment | null> = computed(() =>
|
const selfEvaluationFeedback: Ref<Assignment | null> = computed(() =>
|
||||||
mentorCockpitStore.getAssignmentById(props.selfEvaluationFeedbackId)
|
mentorCockpitStore.getAssignmentById(props.learningUnitId)
|
||||||
);
|
);
|
||||||
|
|
||||||
const getParticipantById = (id: string): Participant | null => {
|
const getParticipantById = (id: string): Participant | null => {
|
||||||
|
|
@ -107,7 +107,7 @@ const getParticipantById = (id: string): Participant | null => {
|
||||||
:to="{
|
:to="{
|
||||||
name: 'mentorSelfEvaluationFeedback',
|
name: 'mentorSelfEvaluationFeedback',
|
||||||
params: {
|
params: {
|
||||||
selfEvaluationFeedbackId: selfEvaluationFeedback.id,
|
learningUnitId: learningUnitId,
|
||||||
},
|
},
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,97 @@
|
||||||
<script setup lang="ts"></script>
|
<script setup lang="ts">
|
||||||
|
import LearningContentMultiLayout from "@/pages/learningPath/learningContentPage/layouts/LearningContentMultiLayout.vue";
|
||||||
|
import LearningContentContainer from "@/pages/learningPath/learningContentPage/LearningContentContainer.vue";
|
||||||
|
import { useRouter } from "vue-router";
|
||||||
|
import { computed, onMounted, ref, toValue } from "vue";
|
||||||
|
import { useCSRFFetch } from "@/fetchHelpers";
|
||||||
|
import type { FeedbackRequest } from "@/services/selfEvaluationFeedback";
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
const props = defineProps<{
|
||||||
|
learningUnitId: string;
|
||||||
|
courseSlug: string;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
const url = computed(
|
||||||
|
() =>
|
||||||
|
`/api/self-evaluation-feedback/provider/${toValue(props.learningUnitId)}/feedback`
|
||||||
|
);
|
||||||
|
|
||||||
|
const feedback = ref<FeedbackRequest | null>();
|
||||||
|
const isFeedbackLoading = ref(false);
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
feedback.value = null;
|
||||||
|
isFeedbackLoading.value = true;
|
||||||
|
const { data, error } = await useCSRFFetch(url.value).json();
|
||||||
|
isFeedbackLoading.value = false;
|
||||||
|
if (error.value) {
|
||||||
|
console.error(error.value);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
feedback.value = data.value;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const stepsCount = computed(() => 10);
|
||||||
|
const currentStep = 1;
|
||||||
|
|
||||||
|
const title = "TITLE " + props.learningUnitId;
|
||||||
|
|
||||||
|
const showNextButton = true;
|
||||||
|
const showExitButton = true;
|
||||||
|
const showPreviousButton = true;
|
||||||
|
const base_url = "BASE_URL";
|
||||||
|
|
||||||
|
const endBadgeText = "END_BADGE_TEXT";
|
||||||
|
|
||||||
|
const handleBack = () => {
|
||||||
|
console.log("handleBack");
|
||||||
|
};
|
||||||
|
const handleContinue = () => {
|
||||||
|
console.log("handleContinue");
|
||||||
|
};
|
||||||
|
|
||||||
|
const clickExit = () => {
|
||||||
|
router.push({
|
||||||
|
name: "mentorCockpitSelfEvaluationFeedbackAssignments",
|
||||||
|
params: {
|
||||||
|
learningUnitId: props.learningUnitId,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<b>TODO Continue Here</b>
|
<LearningContentContainer v-if="feedback" @exit="clickExit">
|
||||||
|
<LearningContentMultiLayout
|
||||||
|
:current-step="currentStep"
|
||||||
|
:sub-title="$t('a.Selbsteinschätzung')"
|
||||||
|
:title="title"
|
||||||
|
icon="it-icon-lc-learning-module"
|
||||||
|
:steps-count="stepsCount"
|
||||||
|
:show-next-button="showNextButton"
|
||||||
|
:show-exit-button="showExitButton"
|
||||||
|
:show-start-button="false"
|
||||||
|
:show-previous-button="showPreviousButton"
|
||||||
|
:base-url="base_url"
|
||||||
|
:end-badge-text="endBadgeText"
|
||||||
|
@exit="clickExit"
|
||||||
|
@previous="handleBack()"
|
||||||
|
@next="handleContinue()"
|
||||||
|
>
|
||||||
|
<div v-if="currentStep" class="h-full">
|
||||||
|
<div class="mt-8">
|
||||||
|
<h3 class="heading-3">{{ "Some title " }}}</h3>
|
||||||
|
<div
|
||||||
|
class="mt-4 flex flex-col justify-between gap-8 lg:mt-8 lg:flex-row lg:gap-12"
|
||||||
|
>
|
||||||
|
<div>TEST {{ feedback }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</LearningContentMultiLayout>
|
||||||
|
</LearningContentContainer>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|
|
||||||
|
|
@ -196,7 +196,7 @@ const router = createRouter({
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "self-evaluation-feedback/:selfEvaluationFeedbackId",
|
path: "self-evaluation-feedback/:learningUnitId",
|
||||||
component: () =>
|
component: () =>
|
||||||
import("@/pages/cockpit/cockpitPage/mentor/SelfEvaluationFeedback.vue"),
|
import("@/pages/cockpit/cockpitPage/mentor/SelfEvaluationFeedback.vue"),
|
||||||
name: "mentorSelfEvaluationFeedback",
|
name: "mentorSelfEvaluationFeedback",
|
||||||
|
|
@ -226,7 +226,7 @@ const router = createRouter({
|
||||||
props: true,
|
props: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "self-evaluation-feedback-assignments/:selfEvaluationFeedbackId",
|
path: "self-evaluation-feedback-assignments/:learningUnitId",
|
||||||
component: () =>
|
component: () =>
|
||||||
import(
|
import(
|
||||||
"@/pages/cockpit/cockpitPage/mentor/MentorSelfEvaluationFeedbackAssignment.vue"
|
"@/pages/cockpit/cockpitPage/mentor/MentorSelfEvaluationFeedbackAssignment.vue"
|
||||||
|
|
|
||||||
|
|
@ -270,7 +270,7 @@ class SelfEvaluationFeedbackAPI(APITestCase):
|
||||||
response = self.client.get(
|
response = self.client.get(
|
||||||
reverse(
|
reverse(
|
||||||
"get_self_evaluation_feedback_as_provider",
|
"get_self_evaluation_feedback_as_provider",
|
||||||
args=[self_evaluation_feedback.id],
|
args=[self_evaluation_feedback.learning_unit.id],
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,11 @@ urlpatterns = [
|
||||||
get_self_evaluation_feedback_as_requester,
|
get_self_evaluation_feedback_as_requester,
|
||||||
name="get_self_evaluation_feedback_as_requester",
|
name="get_self_evaluation_feedback_as_requester",
|
||||||
),
|
),
|
||||||
|
path(
|
||||||
|
"provider/<int:learning_unit_id>/feedback",
|
||||||
|
get_self_evaluation_feedback_as_provider,
|
||||||
|
name="get_self_evaluation_feedback_as_provider",
|
||||||
|
),
|
||||||
path(
|
path(
|
||||||
"provider/feedback/<int:feedback_id>/submit",
|
"provider/feedback/<int:feedback_id>/submit",
|
||||||
submit_provider_self_evaluation_feedback,
|
submit_provider_self_evaluation_feedback,
|
||||||
|
|
@ -29,9 +34,4 @@ urlpatterns = [
|
||||||
add_provider_self_evaluation_feedback,
|
add_provider_self_evaluation_feedback,
|
||||||
name="add_self_evaluation_feedback_assessment",
|
name="add_self_evaluation_feedback_assessment",
|
||||||
),
|
),
|
||||||
path(
|
|
||||||
"provider/feedback/<int:feedback_id>",
|
|
||||||
get_self_evaluation_feedback_as_provider,
|
|
||||||
name="get_self_evaluation_feedback_as_provider",
|
|
||||||
),
|
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -61,9 +61,11 @@ def submit_provider_self_evaluation_feedback(request, feedback_id):
|
||||||
|
|
||||||
@api_view(["GET"])
|
@api_view(["GET"])
|
||||||
@permission_classes([IsAuthenticated])
|
@permission_classes([IsAuthenticated])
|
||||||
def get_self_evaluation_feedback_as_provider(request, feedback_id):
|
def get_self_evaluation_feedback_as_provider(request, learning_unit_id):
|
||||||
feedback = get_object_or_404(
|
feedback = get_object_or_404(
|
||||||
SelfEvaluationFeedback, id=feedback_id, feedback_provider_user=request.user
|
SelfEvaluationFeedback,
|
||||||
|
learning_unit_id=learning_unit_id,
|
||||||
|
feedback_provider_user=request.user,
|
||||||
)
|
)
|
||||||
|
|
||||||
return Response(SelfEvaluationFeedbackSerializer(feedback).data)
|
return Response(SelfEvaluationFeedbackSerializer(feedback).data)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue