From 6534cbf8dfb7318bc27cc45ea095306cdf03f3e8 Mon Sep 17 00:00:00 2001 From: Christian Cueni Date: Mon, 8 May 2023 15:39:53 +0200 Subject: [PATCH 1/4] Update feedback questions and order --- client/src/components/FeedbackForm.vue | 48 ++++++++----------- client/src/locales/de.json | 16 +++---- client/src/pages/cockpit/FeedbackPage.vue | 19 +++----- server/vbv_lernwelt/feedback/factories.py | 15 +++--- server/vbv_lernwelt/feedback/models.py | 12 ----- server/vbv_lernwelt/feedback/serializers.py | 2 +- .../feedback/tests/test_feedback_api.py | 10 ++-- server/vbv_lernwelt/feedback/views.py | 3 +- 8 files changed, 50 insertions(+), 75 deletions(-) diff --git a/client/src/components/FeedbackForm.vue b/client/src/components/FeedbackForm.vue index 7cd1e9db..6e455817 100644 --- a/client/src/components/FeedbackForm.vue +++ b/client/src/components/FeedbackForm.vue @@ -14,7 +14,7 @@ @previous="previousStep()" @next="nextStep()" > -
+

{{ $t("feedback.intro", { @@ -27,51 +27,47 @@

- -
-

{{ t("feedback.materialsRatingLabel") }}

- -
- + + (null); @@ -207,7 +202,7 @@ const sendFeedback = () => { } const input: SendFeedbackInput = reactive({ data: { - materials_rating: materialsRating, + preparation_task_clarity: preparationTaskClarity, course_negative_feedback: courseNegativeFeedback, course_positive_feedback: coursePositiveFeedback, goald_attainment: goalAttainment, @@ -216,7 +211,6 @@ const sendFeedback = () => { instructor_open_feedback: instructorOpenFeedback, satisfaction, proficiency, - received_materials: receivedMaterials, would_recommend: wouldRecommend, }, page: props.page.translation_key, 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/server/vbv_lernwelt/feedback/factories.py b/server/vbv_lernwelt/feedback/factories.py index eb21d3c8..d55d830f 100644 --- a/server/vbv_lernwelt/feedback/factories.py +++ b/server/vbv_lernwelt/feedback/factories.py @@ -11,8 +11,7 @@ class FeedbackFactory(DjangoModelFactory): "satisfaction": FuzzyInteger(2, 4), "goal_attainment": FuzzyInteger(3, 4), "proficiency": FuzzyChoice([20, 40, 60, 80]), - "received_materials": FuzzyChoice([True, False]), - "materials_rating": FuzzyInteger(2, 4), + "preparation_task_clarity": FuzzyChoice([True, False]), "instructor_competence": FuzzyInteger(3, 4), "instructor_respect": FuzzyInteger(3, 4), "instructor_open_feedback": FuzzyChoice( @@ -23,18 +22,18 @@ class FeedbackFactory(DjangoModelFactory): ] ), "would_recommend": FuzzyChoice([True, False]), - "course_positive_feedback": FuzzyChoice( - [ - "Die Präsentation war super", - "Das Beispiel mit der Katze fand ich sehr gut veranschaulicht!", - ] - ), "course_negative_feedback": FuzzyChoice( [ "Es wäre praktisch, Zugang zu einer FAQ zu haben.", "Es wäre schön, mehr Videos hinzuzufügen.", ] ), + "course_positive_feedback": FuzzyChoice( + [ + "Die Präsentation war super", + "Das Beispiel mit der Katze fand ich sehr gut veranschaulicht!", + ] + ), } ) diff --git a/server/vbv_lernwelt/feedback/models.py b/server/vbv_lernwelt/feedback/models.py index 6b4f2a10..6901601e 100644 --- a/server/vbv_lernwelt/feedback/models.py +++ b/server/vbv_lernwelt/feedback/models.py @@ -53,18 +53,6 @@ class FeedbackResponse(models.Model): ) super(FeedbackResponse, self).save(*args, **kwargs) - # satisfaction = FeedbackIntegerField() - # goal_attainment = FeedbackIntegerField() - # proficiency = models.IntegerField(null=True) - # received_materials = models.BooleanField(null=True) - # materials_rating = FeedbackIntegerField() - # instructor_competence = FeedbackIntegerField() - # instructor_respect = FeedbackIntegerField() - # instructor_open_feedback = models.TextField(blank=True) - # would_recommend = models.BooleanField(null=True) - # course_positive_feedback = models.TextField(blank=True) - # course_negative_feedback = models.TextField(blank=True) - data = models.JSONField(default=dict) created_at = models.DateTimeField(auto_now_add=True) diff --git a/server/vbv_lernwelt/feedback/serializers.py b/server/vbv_lernwelt/feedback/serializers.py index 17d149c4..3be42ed6 100644 --- a/server/vbv_lernwelt/feedback/serializers.py +++ b/server/vbv_lernwelt/feedback/serializers.py @@ -15,7 +15,7 @@ class CourseFeedbackSerializer(serializers.Serializer): satisfaction = FeedbackIntegerField() goal_attainment = FeedbackIntegerField() proficiency = serializers.IntegerField(required=False, allow_null=True) - received_materials = serializers.BooleanField(required=False, allow_null=True) + preparation_task_clarity = serializers.BooleanField() materials_rating = FeedbackIntegerField() instructor_competence = FeedbackIntegerField() instructor_respect = FeedbackIntegerField() diff --git a/server/vbv_lernwelt/feedback/tests/test_feedback_api.py b/server/vbv_lernwelt/feedback/tests/test_feedback_api.py index 51554f68..6ad2136c 100644 --- a/server/vbv_lernwelt/feedback/tests/test_feedback_api.py +++ b/server/vbv_lernwelt/feedback/tests/test_feedback_api.py @@ -190,8 +190,7 @@ class FeedbackDetailApiTestCase(FeedbackApiBaseTestCase): "satisfaction": [1, 4, 2], "goal_attainment": [2, 4, 3], "proficiency": [20, 60, 80], - "received_materials": [True, False, True], - "materials_rating": [3, 2, 1], + "preparation_task_clarity": [True, False, True], "instructor_competence": [1, 2, 3], "instructor_respect": [40, 80, 100], "instructor_open_feedback": ["super", "ok", "naja"], @@ -214,14 +213,15 @@ class FeedbackDetailApiTestCase(FeedbackApiBaseTestCase): "satisfaction": feedback_data["satisfaction"][i], "goal_attainment": feedback_data["goal_attainment"][i], "proficiency": feedback_data["proficiency"][i], - "received_materials": feedback_data["received_materials"][i], - "materials_rating": feedback_data["materials_rating"][i], + "preparation_task_clarity": feedback_data[ + "preparation_task_clarity" + ][i], "instructor_competence": feedback_data["instructor_competence"][i], "instructor_open_feedback": feedback_data[ "instructor_open_feedback" ][i], - "instructor_respect": feedback_data["instructor_respect"][i], "would_recommend": feedback_data["would_recommend"][i], + "instructor_respect": feedback_data["instructor_respect"][i], "course_positive_feedback": feedback_data[ "course_positive_feedback" ][i], diff --git a/server/vbv_lernwelt/feedback/views.py b/server/vbv_lernwelt/feedback/views.py index 150ae855..5871576f 100644 --- a/server/vbv_lernwelt/feedback/views.py +++ b/server/vbv_lernwelt/feedback/views.py @@ -12,14 +12,13 @@ FEEDBACK_FIELDS = [ "satisfaction", "goal_attainment", "proficiency", - "received_materials", - "materials_rating", "instructor_competence", "instructor_respect", "instructor_open_feedback", "would_recommend", "course_positive_feedback", "course_negative_feedback", + "preparation_task_clarity", ] From 04b179aa523ecdf893bad160cca995793b0bd4b3 Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Tue, 9 May 2023 18:13:09 +0200 Subject: [PATCH 2/4] Add query url and clickable navigation --- client/src/components/FeedbackForm.vue | 210 +++++++++--------- .../components/ui/ItNavigationProgress.vue | 13 +- .../assignment/AssignmentView.vue | 44 ++-- .../layouts/LearningContentMultiLayout.vue | 4 +- 4 files changed, 138 insertions(+), 133 deletions(-) diff --git a/client/src/components/FeedbackForm.vue b/client/src/components/FeedbackForm.vue index 6e455817..facbb4dd 100644 --- a/client/src/components/FeedbackForm.vue +++ b/client/src/components/FeedbackForm.vue @@ -1,106 +1,3 @@ - - + + 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/pages/learningPath/learningContentPage/assignment/AssignmentView.vue b/client/src/pages/learningPath/learningContentPage/assignment/AssignmentView.vue index 27123bb0..9b1eb527 100644 --- a/client/src/pages/learningPath/learningContentPage/assignment/AssignmentView.vue +++ b/client/src/pages/learningPath/learningContentPage/assignment/AssignmentView.vue @@ -41,7 +41,7 @@ const props = defineProps<{ }>(); // 0 = introduction, 1 - n = tasks, n+1 = submission -const pageIndex = useRouteQuery("page", "0", { transform: Number, mode: "push" }); +const stepIndex = useRouteQuery("step", "0", { transform: Number, mode: "push" }); const assignmentCompletion = computed(() => assignmentStore.assignmentCompletion); const completionStatus = computed(() => { @@ -64,10 +64,10 @@ onMounted(async () => { ); if ( - pageIndex.value === 0 && + stepIndex.value === 0 && (completionStatus.value ?? "in_progress") !== "in_progress" ) { - pageIndex.value = numPages.value - 1; + stepIndex.value = numPages.value - 1; } } catch (error) { log.error(error); @@ -76,9 +76,9 @@ onMounted(async () => { const numTasks = computed(() => state.assignment?.tasks?.length ?? 0); const numPages = computed(() => numTasks.value + 2); -const showPreviousButton = computed(() => pageIndex.value != 0); -const showNextButton = computed(() => pageIndex.value + 1 < numPages.value); -const showExitButton = computed(() => numPages.value === pageIndex.value + 1); +const showPreviousButton = computed(() => stepIndex.value != 0); +const showNextButton = computed(() => stepIndex.value + 1 < numPages.value); +const showExitButton = computed(() => numPages.value === stepIndex.value + 1); const dueDate = computed(() => dayjs(state.courseSessionAssignmentDetails?.submissionDeadlineDateTimeUtc) ); @@ -86,41 +86,41 @@ const courseSessionId = computed( () => courseSessionsStore.currentCourseSession?.id ?? 0 ); const currentTask = computed(() => { - if (pageIndex.value > 0 && pageIndex.value <= numTasks.value) { - return state.assignment?.tasks[pageIndex.value - 1]; + if (stepIndex.value > 0 && stepIndex.value <= numTasks.value) { + return state.assignment?.tasks[stepIndex.value - 1]; } return undefined; }); const handleBack = () => { log.debug("handleBack"); - if (pageIndex.value > 0) { - pageIndex.value -= 1; + if (stepIndex.value > 0) { + stepIndex.value -= 1; } - log.debug(`pageIndex: ${pageIndex.value}`); + log.debug(`pageIndex: ${stepIndex.value}`); }; const handleContinue = () => { log.debug("handleContinue"); - if (pageIndex.value + 1 < numPages.value) { - pageIndex.value += 1; + if (stepIndex.value + 1 < numPages.value) { + stepIndex.value += 1; } - log.debug(`pageIndex: ${pageIndex.value}`); + log.debug(`pageIndex: ${stepIndex.value}`); }; const jumpToTask = (task: AssignmentTask) => { log.debug("jumpToTask", task); const index = state.assignment?.tasks.findIndex((t) => t.id === task.id); if (index && index >= 0) { - pageIndex.value = index + 1; + stepIndex.value = index + 1; } - log.debug(`pageIndex: ${pageIndex.value}`); + log.debug(`pageIndex: ${stepIndex.value}`); }; const getTitle = () => { - if (0 === pageIndex.value) { + if (0 === stepIndex.value) { return t("general.introduction"); - } else if (pageIndex.value === numPages.value - 1) { + } else if (stepIndex.value === numPages.value - 1) { return t("general.submission"); } return currentTask?.value?.value.title ?? "Unknown"; @@ -137,7 +137,7 @@ const assignmentUser = computed(() => {
{ :show-start-button="false" :show-previous-button="showPreviousButton" :base-url="props.learningContent.frontend_url" - query-param="page" + step-query-param="step" start-badge-text="Einleitung" end-badge-text="Abgabe" close-button-variant="close" @@ -157,7 +157,7 @@ const assignmentUser = computed(() => {
@@ -167,7 +167,7 @@ const assignmentUser = computed(() => { :assignment-id="props.assignmentId" > (), { @@ -58,7 +58,7 @@ const emit = defineEmits(["previous", "next", "exit"]); :steps="stepsCount" :end-badge-text="props.endBadgeText" :base-url="props.baseUrl" - :query-param="props.queryParam" + :query-param="props.stepQueryParam" class="overflow-hidden pb-12" > From eb3db902b923794396d78dd7dd2886082454ca90 Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Tue, 9 May 2023 18:17:31 +0200 Subject: [PATCH 3/4] Add query url and clickable navigation to SelfEvaluation --- .../selfEvaluationPage/SelfEvaluation.vue | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/client/src/pages/learningPath/selfEvaluationPage/SelfEvaluation.vue b/client/src/pages/learningPath/selfEvaluationPage/SelfEvaluation.vue index 74d66c01..793c50e0 100644 --- a/client/src/pages/learningPath/selfEvaluationPage/SelfEvaluation.vue +++ b/client/src/pages/learningPath/selfEvaluationPage/SelfEvaluation.vue @@ -8,37 +8,36 @@ import LearningContentContainer from "@/pages/learningPath/learningContentPage/L import LearningContentMultiLayout from "@/pages/learningPath/learningContentPage/layouts/LearningContentMultiLayout.vue"; import { useCourseSessionsStore } from "@/stores/courseSessions"; import eventBus from "@/utils/eventBus"; -import { computed, onUnmounted, reactive } from "vue"; +import { useRouteQuery } from "@vueuse/router"; +import { computed, onUnmounted } from "vue"; log.debug("LearningContent.vue setup"); const circleStore = useCircleStore(); const courseSession = useCourseSessionsStore(); -const state = reactive({ - questionIndex: 0, -}); +const questionIndex = useRouteQuery("step", "0", { transform: Number, mode: "push" }); const props = defineProps<{ learningUnit: LearningUnit; }>(); const questions = computed(() => props.learningUnit?.children); -const currentQuestion = computed(() => questions.value[state.questionIndex]); -const showPreviousButton = computed(() => state.questionIndex != 0); +const currentQuestion = computed(() => questions.value[questionIndex.value]); +const showPreviousButton = computed(() => questionIndex.value != 0); const showNextButton = computed( - () => state.questionIndex + 1 < questions.value?.length && questions.value?.length > 1 + () => questionIndex.value + 1 < questions.value?.length && questions.value?.length > 1 ); const showExitButton = computed( () => - questions.value?.length === 1 || questions.value?.length === state.questionIndex + 1 + questions.value?.length === 1 || questions.value?.length === questionIndex.value + 1 ); function handleContinue() { log.debug("handleContinue"); - if (state.questionIndex + 1 < questions.value.length) { - log.debug("increment questionIndex", state.questionIndex); - state.questionIndex += 1; + if (questionIndex.value + 1 < questions.value.length) { + log.debug("increment questionIndex", questionIndex.value); + questionIndex.value += 1; } else { log.debug("continue to next learning content"); circleStore.continueFromSelfEvaluation(props.learningUnit); @@ -47,8 +46,8 @@ function handleContinue() { function handleBack() { log.debug("handleBack"); - if (state.questionIndex > 0 && state.questionIndex < questions.value.length) { - state.questionIndex -= 1; + if (questionIndex.value > 0 && questionIndex.value < questions.value.length) { + questionIndex.value -= 1; } } @@ -69,7 +68,7 @@ onUnmounted(() => { @exit="circleStore.closeSelfEvaluation(props.learningUnit)" > { :show-exit-button="showExitButton" :show-start-button="false" :show-previous-button="showPreviousButton" + :base-url="props.learningUnit.evaluate_url" @previous="handleBack()" @next="handleContinue()" > From 50e15f4aeb876a979b12bfb43863529335a9bc7a Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Tue, 9 May 2023 18:23:37 +0200 Subject: [PATCH 4/4] Add query url to assignment evaluation page --- .../EvaluationContainer.vue | 39 ++++++++----------- 1 file changed, 16 insertions(+), 23 deletions(-) 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() {
-