feat: Auto move to the next question (#324)
* move to the next question * remove console * minor changes * updated the confetti timeout * updated the button --------- Co-authored-by: Rotimi Best <[email protected]>
This commit is contained in:
@@ -124,7 +124,7 @@
|
||||
</form>
|
||||
</Modal>
|
||||
|
||||
<div class="w-full">
|
||||
<div class="w-full mb-20">
|
||||
{#if Object.values(errors).length}
|
||||
<div class="w-full flex justify-center mb-4">
|
||||
<ErrorMessage
|
||||
|
||||
+47
-32
@@ -14,7 +14,7 @@
|
||||
import { removeDuplicate } from '$lib/utils/functions/removeDuplicate';
|
||||
import { QUESTION_TYPE } from '$lib/components/Question/constants';
|
||||
import { STATUS } from './constants';
|
||||
import { getPropsForQuestion, filterOutDeleted } from './functions';
|
||||
import { getPropsForQuestion, filterOutDeleted, wasCorrectAnswerSelected } from './functions';
|
||||
import { formatAnswers, getGroupMemberId } from '$lib/components/Course/function';
|
||||
import { submitExercise } from '$lib/utils/services/courses';
|
||||
import {
|
||||
@@ -166,7 +166,7 @@
|
||||
handleSubmit({ preventDefault: () => {} });
|
||||
}
|
||||
|
||||
async function onSubmit(id, value, moveToNextQuestion = false) {
|
||||
async function onSubmit(id, value) {
|
||||
if ($course.type === COURSE_TYPE.SELF_PACED) {
|
||||
isLoading = true;
|
||||
}
|
||||
@@ -183,47 +183,62 @@
|
||||
[id]: formattedAnswer
|
||||
};
|
||||
|
||||
if (moveToNextQuestion) {
|
||||
$questionnaireMetaData.currentQuestionIndex += 1;
|
||||
localStorage.setItem(
|
||||
`autosave-exercise-${exerciseId}`,
|
||||
JSON.stringify($questionnaireMetaData)
|
||||
);
|
||||
}
|
||||
const isCorrect = wasCorrectAnswerSelected(currentQuestion, $questionnaireMetaData.answers);
|
||||
console.log({ isCorrect });
|
||||
|
||||
const isFinished = !questions[$questionnaireMetaData.currentQuestionIndex - 1];
|
||||
const isFinished = !questions[$questionnaireMetaData.currentQuestionIndex];
|
||||
console.log(`isFinished`, isFinished);
|
||||
console.log(
|
||||
`$questionnaireMetaData.currentQuestionIndex`,
|
||||
$questionnaireMetaData.currentQuestionIndex
|
||||
);
|
||||
|
||||
// If last question send to server
|
||||
if (isFinished) {
|
||||
localStorage.removeItem(`autosave-exercise-${exerciseId}`);
|
||||
$questionnaireMetaData.status = 1;
|
||||
$questionnaireMetaData.totalPossibleGrade = getTotalPossibleGrade($questionnaire.questions);
|
||||
$questionnaireMetaData.grades = {};
|
||||
if (isCorrect) {
|
||||
setTimeout(async () => {
|
||||
$questionnaireMetaData.currentQuestionIndex += 1;
|
||||
localStorage.setItem(
|
||||
`autosave-exercise-${exerciseId}`,
|
||||
JSON.stringify($questionnaireMetaData)
|
||||
);
|
||||
|
||||
$questionnaireMetaData.comment = '';
|
||||
let response = await submitExercise(
|
||||
$questionnaireMetaData.answers,
|
||||
questions,
|
||||
exerciseId,
|
||||
$course.id,
|
||||
getGroupMemberId($group.people, $profile.id)
|
||||
);
|
||||
if (response) {
|
||||
submissionResponse = response;
|
||||
submissionId = submissionResponse.submission[0]?.id;
|
||||
}
|
||||
// If last question send to server
|
||||
if (isFinished) {
|
||||
localStorage.removeItem(`autosave-exercise-${exerciseId}`);
|
||||
$questionnaireMetaData.status = 1;
|
||||
$questionnaireMetaData.totalPossibleGrade = getTotalPossibleGrade(
|
||||
$questionnaire.questions
|
||||
);
|
||||
$questionnaireMetaData.grades = {};
|
||||
|
||||
if ($course.type === COURSE_TYPE.SELF_PACED) {
|
||||
automaticGrading($questionnaireMetaData, $questionnaire.questions);
|
||||
}
|
||||
$questionnaireMetaData.comment = '';
|
||||
let response = await submitExercise(
|
||||
$questionnaireMetaData.answers,
|
||||
questions,
|
||||
exerciseId,
|
||||
$course.id,
|
||||
getGroupMemberId($group.people, $profile.id)
|
||||
);
|
||||
if (response) {
|
||||
submissionResponse = response;
|
||||
submissionId = submissionResponse.submission[0]?.id;
|
||||
}
|
||||
|
||||
notifyEducator();
|
||||
if ($course.type === COURSE_TYPE.SELF_PACED) {
|
||||
automaticGrading($questionnaireMetaData, $questionnaire.questions);
|
||||
}
|
||||
|
||||
notifyEducator();
|
||||
}
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
// if (moveToNextQuestion) {
|
||||
// $questionnaireMetaData.currentQuestionIndex += 1;
|
||||
// localStorage.setItem(
|
||||
// `autosave-exercise-${exerciseId}`,
|
||||
// JSON.stringify($questionnaireMetaData)
|
||||
// );
|
||||
// }
|
||||
}
|
||||
|
||||
function onPrevious() {
|
||||
|
||||
@@ -26,7 +26,7 @@ export function wasCorrectAnswerSelected(currentQuestion, answers, isFinished) {
|
||||
if (isCorrect && !isFinished) {
|
||||
toggleConfetti();
|
||||
|
||||
setTimeout(toggleConfetti, 1500);
|
||||
setTimeout(toggleConfetti, 100);
|
||||
}
|
||||
|
||||
return isCorrect;
|
||||
@@ -80,7 +80,8 @@ export function getPropsForQuestion(
|
||||
? {
|
||||
label: isLast ? 'Finish' : 'Next',
|
||||
isActive: true,
|
||||
disableOptionSelect: true
|
||||
disableOptionSelect: true,
|
||||
isDisabled: isLast ? false : true // Disable Next button because auto next is enabled
|
||||
}
|
||||
: {
|
||||
label: 'Check',
|
||||
|
||||
Reference in New Issue
Block a user