mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19:25 +00:00
fix: improve question handling in TaskFormObject for teacher view and enhance user answer blur functionality
This commit is contained in:
parent
ca0a177472
commit
2cbbb1ec49
1 changed files with 30 additions and 3 deletions
|
|
@ -162,8 +162,10 @@ function TaskFormObject({ view, assignmentTaskUUID, user_id }: TaskFormObjectPro
|
|||
...userSubmissions,
|
||||
submissions: updatedSubmissions,
|
||||
});
|
||||
};
|
||||
|
||||
// Auto-focus next blank if current one is filled
|
||||
const handleUserAnswerBlur = (questionUUID: string, blankUUID: string, answer: string) => {
|
||||
// Auto-focus next blank only when user leaves the current input and it has content
|
||||
if (answer.trim() && view === 'student') {
|
||||
const allBlanks = questions.flatMap(q => q.blanks.map(b => ({ questionUUID: q.questionUUID, blankUUID: b.blankUUID })));
|
||||
const currentIndex = allBlanks.findIndex(b => b.questionUUID === questionUUID && b.blankUUID === blankUUID);
|
||||
|
|
@ -285,7 +287,14 @@ function TaskFormObject({ view, assignmentTaskUUID, user_id }: TaskFormObjectPro
|
|||
const res = await getAssignmentTask(assignmentTaskUUID, access_token);
|
||||
if (res.success) {
|
||||
setAssignmentTaskOutsideProvider(res.data);
|
||||
// Only set questions if they exist and we're not in teacher view, or if we're in teacher view and there are existing questions
|
||||
if (res.data.contents?.questions && res.data.contents.questions.length > 0) {
|
||||
setQuestions(res.data.contents.questions);
|
||||
} else if (view !== 'teacher') {
|
||||
// For non-teacher views, set empty array if no questions exist
|
||||
setQuestions([]);
|
||||
}
|
||||
// For teacher view, keep the initial state if no questions exist
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -339,7 +348,24 @@ function TaskFormObject({ view, assignmentTaskUUID, user_id }: TaskFormObjectPro
|
|||
}
|
||||
}, [userSubmissions, initialUserSubmissions]);
|
||||
|
||||
if (questions && (questions.length > 0 || view === 'teacher')) {
|
||||
// Ensure questions is always an array for teacher view
|
||||
if (view === 'teacher' && (!questions || questions.length === 0)) {
|
||||
setQuestions([
|
||||
{
|
||||
questionText: '',
|
||||
questionUUID: 'question_' + uuidv4(),
|
||||
blanks: [{
|
||||
placeholder: 'Enter the correct answer',
|
||||
correctAnswer: '',
|
||||
hint: '',
|
||||
blankUUID: 'blank_' + uuidv4()
|
||||
}]
|
||||
},
|
||||
]);
|
||||
return null; // Return null to prevent rendering while state updates
|
||||
}
|
||||
|
||||
if (view === 'teacher' || (questions && questions.length > 0)) {
|
||||
return (
|
||||
<AssignmentBoxUI
|
||||
submitFC={submitFC}
|
||||
|
|
@ -462,6 +488,7 @@ function TaskFormObject({ view, assignmentTaskUUID, user_id }: TaskFormObjectPro
|
|||
(submission) => submission.questionUUID === question.questionUUID && submission.blankUUID === blank.blankUUID
|
||||
)?.answer || ''}
|
||||
onChange={(e) => handleUserAnswerChange(question.questionUUID!, blank.blankUUID!, e.target.value)}
|
||||
onBlur={(e) => handleUserAnswerBlur(question.questionUUID!, blank.blankUUID!, e.target.value)}
|
||||
placeholder={blank.placeholder}
|
||||
data-blank-id={blank.blankUUID}
|
||||
className="w-full mx-2 px-3 pr-6 text-neutral-600 bg-[#00008b00] border-2 border-gray-200 rounded-md focus:border-blue-400 focus:ring-2 focus:ring-blue-200 text-sm font-bold transition-all"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue