diff --git a/client/src/components/FeedbackForm.vue b/client/src/components/FeedbackForm.vue index 7cd1e9db..facbb4dd 100644 --- a/client/src/components/FeedbackForm.vue +++ b/client/src/components/FeedbackForm.vue @@ -1,3 +1,133 @@ + + - - diff --git a/client/src/components/ui/ItNavigationProgress.vue b/client/src/components/ui/ItNavigationProgress.vue index ebd9e595..03b06ca5 100644 --- a/client/src/components/ui/ItNavigationProgress.vue +++ b/client/src/components/ui/ItNavigationProgress.vue @@ -9,14 +9,14 @@ export interface Props { startBadgeText?: string; endBadgeText?: string; baseUrl?: string; - queryParam?: string; + stepQueryParam?: string; } const props = withDefaults(defineProps(), { startBadgeText: undefined, endBadgeText: undefined, baseUrl: undefined, - queryParam: "page", + stepQueryParam: "step", }); const hasStartBadge = computed(() => typeof props.startBadgeText !== "undefined"); @@ -67,7 +67,10 @@ function calcStepIndex(step: number) { :class="startBadgeClasses" data-cy="nav-progress-step-start" > - + {{ props.startBadgeText }} {{ props.startBadgeText }} @@ -84,7 +87,7 @@ function calcStepIndex(step: number) { > {{ step + 1 }} @@ -100,7 +103,7 @@ function calcStepIndex(step: number) { > {{ props.endBadgeText }} diff --git a/client/src/locales/de.json b/client/src/locales/de.json index 6d1fb2ed..b6f0a240 100644 --- a/client/src/locales/de.json +++ b/client/src/locales/de.json @@ -87,23 +87,23 @@ "circleFeedback": "Feedback zum Circle", "completionDescription": "Dein Feedback ist anonym. Dein Vor- und Nachname werden bei deiner Trainer/-in nicht angezeigt.", "completionTitle": "Schicke dein Feedback an {name}", - "courseNegativeFeedbackLabel": "Wo sehen Sie Verbesserungspotenzial?", - "coursePositiveFeedbackLabel": "Was hat Ihnen besonders gut gefallen?", + "courseNegativeFeedbackLabel": "Wo siehst du Verbesserungspotential?", + "coursePositiveFeedbackLabel": "Was hat dir besonders gut gefallen?", "feedbackPageInfo": "Teilnehmer haben das Feedback ausgefüllt", "feedbackPageTitle": "Feedback zum Lehrgang", "feedbackSent": "Dein Feedback wurde abgeschickt", "goalAttainmentLabel": "Zielerreichung insgesamt", "happy": "Zufrieden", - "instructorCompetenceLabel": "Der Kursleiter war themenstark, fachkompetent.", - "instructorOpenFeedbackLabel": "Was ich dem Kursleiter sonst noch sagen wollte:", - "instructorRespectLabel": "Fragen und Anregungen der Kursteilnehmenden wurden ernst genommen und aufgegriffen.", + "instructorCompetenceLabel": "Wie beurteilst du die Themensicherheit und Fachkompetenz des Kursleiters/der Kursleiterin?", + "instructorOpenFeedbackLabel": "Was möchtest du dem Kursleiter/der Kursleiterin sonst noch sagen?", + "instructorRespectLabel": "Wurden Fragen und Anregungen der Kursteilnehmenden ernst genommen und aufgegriffen?", "intro": "{name}, dein/e Trainer/-in, bittet dich, ihm/ihr Feedback zu geben. Das ist freiwillig, würde aber ihm/ihr helfen, deine Lernerlebniss zu verbessern.", "materialsRatingLabel": "Falls ja: Wie beurteilen Sie die Vorbereitungsunterlagen (z.B. eLearning)?", "noFeedbacks": "Es wurden noch keine Feedbacks abgegeben", - "proficiencyLabel": "Wie beurteilen Sie Ihre Sicherheit bezüglichen den Themen nach dem Kurs?", + "preparationTaskClarityLabel": "Waren die Vorbereitungsaufträge klar und verständlich?", + "proficiencyLabel": "Wie beurteilst du deine Sicherheit bezüglichen den Themen nach dem Kurs?", "questionTitle": "Frage", - "receivedMaterialsLabel": "Haben Sie Vorbereitungsunterlagen (z.B. eLearning) erhalten?", - "recommendLabel": "Würden Sie den Kurs weiterempfehlen?", + "recommendLabel": "Würdest du den Kurs weiterempfehlen?", "satisfactionLabel": "Zufriedenheit insgesamt", "sendFeedback": "Feedback abschicken", "sentByUsers": "Von {count} Teilnehmern ausgefüllt", diff --git a/client/src/pages/cockpit/FeedbackPage.vue b/client/src/pages/cockpit/FeedbackPage.vue index 63b5eb58..9e0dbc9f 100644 --- a/client/src/pages/cockpit/FeedbackPage.vue +++ b/client/src/pages/cockpit/FeedbackPage.vue @@ -83,10 +83,6 @@ const courseSessionsStore = useCourseSessionsStore(); const { t } = useI18n(); const orderedQuestions = [ - { - key: "would_recommend", - question: t("feedback.recommendLabel"), - }, { key: "satisfaction", question: t("feedback.satisfactionLabel"), @@ -100,12 +96,8 @@ const orderedQuestions = [ question: t("feedback.proficiencyLabel"), }, { - key: "received_materials", - question: t("feedback.receivedMaterialsLabel"), - }, - { - key: "materials_rating", - question: t("feedback.materialsRatingLabel"), + key: "preparation_task_clarity", + question: t("feedback.preparationTaskClarityLabel"), }, { key: "instructor_competence", @@ -119,6 +111,10 @@ const orderedQuestions = [ key: "instructor_open_feedback", question: t("feedback.instructorOpenFeedbackLabel"), }, + { + key: "would_recommend", + question: t("feedback.recommendLabel"), + }, { key: "course_negative_feedback", question: t("feedback.courseNegativeFeedbackLabel"), @@ -132,11 +128,10 @@ const orderedQuestions = [ const ratingKeys = [ "satisfaction", "goal_attainment", - "materials_rating", "instructor_competence", "instructor_respect", ]; -const verticalChartKyes = ["received_materials", "would_recommend"]; +const verticalChartKyes = ["preparation_task_clarity", "would_recommend"]; const horizontalChartKeys = ["proficiency"]; const openKeys = [ "course_negative_feedback", diff --git a/client/src/pages/cockpit/assignmentEvaluationPage/EvaluationContainer.vue b/client/src/pages/cockpit/assignmentEvaluationPage/EvaluationContainer.vue index 45579a4b..1df4d380 100644 --- a/client/src/pages/cockpit/assignmentEvaluationPage/EvaluationContainer.vue +++ b/client/src/pages/cockpit/assignmentEvaluationPage/EvaluationContainer.vue @@ -9,10 +9,11 @@ import type { AssignmentEvaluationTask, CourseSessionUser, } from "@/types"; +import { useRouteQuery } from "@vueuse/router"; import dayjs from "dayjs"; import { findIndex } from "lodash"; import * as log from "loglevel"; -import { computed, onMounted, reactive } from "vue"; +import { computed, onMounted } from "vue"; const props = defineProps<{ assignmentUser: CourseSessionUser; @@ -24,14 +25,8 @@ const emit = defineEmits(["close"]); log.debug("UserEvaluation setup"); -interface StateInterface { - // 0 = introduction, 1 - n = tasks, n+1 = submission - pageIndex: number; -} - -const state: StateInterface = reactive({ - pageIndex: 0, -}); +// 0 = introduction, 1 - n = tasks, n+1 = submission +const stepIndex = useRouteQuery("step", "0", { transform: Number, mode: "push" }); const assignmentStore = useAssignmentStore(); @@ -41,21 +36,19 @@ const evaluationSubmitted = computed( ); onMounted(() => { - if (evaluationSubmitted.value) { - state.pageIndex = props.assignment.evaluation_tasks?.length + 1 ?? 0; - } else { - state.pageIndex = 0; + if (stepIndex.value === 0 && evaluationSubmitted.value) { + stepIndex.value = props.assignment.evaluation_tasks?.length + 1 ?? 0; } }); function previousPage() { log.debug("previousTask"); - state.pageIndex = Math.max(0, state.pageIndex - 1); + stepIndex.value = Math.max(0, stepIndex.value - 1); } function nextPage() { log.debug("nextTask"); - state.pageIndex = Math.min(numTasks.value + 1, state.pageIndex + 1); + stepIndex.value = Math.min(numTasks.value + 1, stepIndex.value + 1); } function editTask(task: AssignmentEvaluationTask) { @@ -64,7 +57,7 @@ function editTask(task: AssignmentEvaluationTask) { findIndex(props.assignment.evaluation_tasks, { id: task.id, }) ?? 0; - state.pageIndex = taskIndex + 1; + stepIndex.value = taskIndex + 1; } const assignmentDetail = computed(() => @@ -76,9 +69,9 @@ const dueDate = computed(() => ); const inEvaluationTask = computed( - () => state.pageIndex >= 1 && state.pageIndex <= numTasks.value + () => stepIndex.value >= 1 && stepIndex.value <= numTasks.value ); -const taskIndex = computed(() => state.pageIndex - 1); +const taskIndex = computed(() => stepIndex.value - 1); const task = computed(() => props.assignment.evaluation_tasks[taskIndex.value]); const taskExpertDataText = computed(() => { @@ -108,7 +101,7 @@ function finishButtonEnabled() {
-