fix: misc assignments bugs

This commit is contained in:
swve 2025-03-16 10:59:53 +01:00
parent d244ff2076
commit a6b5db29ca
6 changed files with 121 additions and 37 deletions

View file

@ -12,6 +12,7 @@ import toast from 'react-hot-toast';
type FileSchema = {
fileUUID: string;
assignment_task_submission_uuid?: string;
};
type TaskFileObjectProps = {
@ -64,13 +65,13 @@ export default function TaskFileObject({ view, user_id, assignmentTaskUUID }: Ta
// wait for 1 second to show loading animation
await new Promise((r) => setTimeout(r, 1500))
if (res.success === false) {
setError(res.data.detail)
setIsLoading(false)
} else {
assignmentTaskStateHook({ type: 'reload' })
setUserSubmissions({
fileUUID: res.data.file_uuid,
assignment_task_submission_uuid: res.data.assignment_task_submission_uuid
})
setIsLoading(false)
setError('')
@ -86,8 +87,14 @@ export default function TaskFileObject({ view, user_id, assignmentTaskUUID }: Ta
if (assignmentTaskUUID) {
const res = await getAssignmentTaskSubmissionsMe(assignmentTaskUUID, assignment.assignment_object.assignment_uuid, access_token);
if (res.success) {
setUserSubmissions(res.data.task_submission);
setInitialUserSubmissions(res.data.task_submission);
setUserSubmissions({
...res.data.task_submission,
assignment_task_submission_uuid: res.data.assignment_task_submission_uuid
});
setInitialUserSubmissions({
...res.data.task_submission,
assignment_task_submission_uuid: res.data.assignment_task_submission_uuid
});
}
}
}
@ -101,6 +108,7 @@ export default function TaskFileObject({ view, user_id, assignmentTaskUUID }: Ta
// Save the quiz to the server
const values = {
assignment_task_submission_uuid: userSubmissions.assignment_task_submission_uuid,
task_submission: userSubmissions,
grade: 0,
task_submission_grade_feedback: '',
@ -156,9 +164,15 @@ export default function TaskFileObject({ view, user_id, assignmentTaskUUID }: Ta
if (assignmentTaskUUID && user_id) {
const res = await getAssignmentTaskSubmissionsUser(assignmentTaskUUID, user_id, assignment.assignment_object.assignment_uuid, access_token);
if (res.success) {
setUserSubmissions(res.data.task_submission);
setUserSubmissions({
...res.data.task_submission,
assignment_task_submission_uuid: res.data.assignment_task_submission_uuid
});
setUserSubmissionObject(res.data);
setInitialUserSubmissions(res.data.task_submission);
setInitialUserSubmissions({
...res.data.task_submission,
assignment_task_submission_uuid: res.data.assignment_task_submission_uuid
});
}
}
}
@ -173,6 +187,7 @@ export default function TaskFileObject({ view, user_id, assignmentTaskUUID }: Ta
// Save the grade to the server
const values = {
assignment_task_submission_uuid: userSubmissions.assignment_task_submission_uuid,
task_submission: userSubmissions,
grade: grade,
task_submission_grade_feedback: 'Graded by teacher : @' + session.data.user.username,

View file

@ -27,6 +27,7 @@ type QuizSubmitSchema = {
optionUUID: string;
answer: boolean
}[];
assignment_task_submission_uuid?: string;
};
type TaskQuizObjectProps = {
@ -175,8 +176,14 @@ function TaskQuizObject({ view, assignmentTaskUUID, user_id }: TaskQuizObjectPro
if (assignmentTaskUUID) {
const res = await getAssignmentTaskSubmissionsMe(assignmentTaskUUID, assignment.assignment_object.assignment_uuid, access_token);
if (res.success) {
setUserSubmissions(res.data.task_submission);
setInitialUserSubmissions(res.data.task_submission);
setUserSubmissions({
...res.data.task_submission,
assignment_task_submission_uuid: res.data.assignment_task_submission_uuid
});
setInitialUserSubmissions({
...res.data.task_submission,
assignment_task_submission_uuid: res.data.assignment_task_submission_uuid
});
}
}
@ -242,9 +249,15 @@ function TaskQuizObject({ view, assignmentTaskUUID, user_id }: TaskQuizObjectPro
if (assignmentTaskUUID && user_id) {
const res = await getAssignmentTaskSubmissionsUser(assignmentTaskUUID, user_id, assignment.assignment_object.assignment_uuid, access_token);
if (res.success) {
setUserSubmissions(res.data.task_submission);
setUserSubmissions({
...res.data.task_submission,
assignment_task_submission_uuid: res.data.assignment_task_submission_uuid
});
setUserSubmissionObject(res.data);
setInitialUserSubmissions(res.data.task_submission);
setInitialUserSubmissions({
...res.data.task_submission,
assignment_task_submission_uuid: res.data.assignment_task_submission_uuid
});
}
}
@ -271,6 +284,7 @@ function TaskQuizObject({ view, assignmentTaskUUID, user_id }: TaskQuizObjectPro
// Save the grade to the server
const values = {
assignment_task_submission_uuid: userSubmissions.assignment_task_submission_uuid,
task_submission: userSubmissions,
grade: finalGrade,
task_submission_grade_feedback: 'Auto graded by system',

View file

@ -41,21 +41,27 @@ function AssignmentSubmissionsSubPage({ assignment_uuid }: { assignment_uuid: st
<X size={18} />
<h3>Late</h3>
</div>
{renderSubmissions('LATE')}
<div className='flex flex-col gap-4'>
{renderSubmissions('LATE')}
</div>
</div>
<div className='flex-1'>
<div className='flex w-fit mx-auto px-3.5 py-1 bg-amber-600/80 space-x-2 my-5 items-center text-sm font-bold text-white rounded-full'>
<SendHorizonal size={18} />
<h3>Submitted</h3>
</div>
{renderSubmissions('SUBMITTED')}
<div className='flex flex-col gap-4'>
{renderSubmissions('SUBMITTED')}
</div>
</div>
<div className='flex-1'>
<div className='flex w-fit mx-auto px-3.5 py-1 bg-emerald-600/80 space-x-2 my-5 items-center text-sm font-bold text-white rounded-full'>
<UserCheck size={18} />
<h3>Graded</h3>
</div>
{renderSubmissions('GRADED')}
<div className='flex flex-col gap-4'>
{renderSubmissions('GRADED')}
</div>
</div>
</div>

View file

@ -15,7 +15,6 @@ function EvaluateAssignment({ user_id }: any) {
const assignments = useAssignments() as any;
const session = useLHSession() as any;
const org = useOrg() as any;
const router = useRouter();
async function gradeAssignment() {
const res = await putFinalGrade(user_id, assignments?.assignment_object.assignment_uuid, session.data?.tokens?.access_token);
@ -92,17 +91,17 @@ function EvaluateAssignment({ user_id }: any) {
)
})}
<div className='flex space-x-4 font-semibold items-center justify-between'>
<button onClick={rejectAssignment} className='flex space-x-2 px-4 py-2 text-sm bg-rose-600/80 text-white rounded-lg nice-shadow items-center'>
<button onClick={rejectAssignment} className='flex space-x-2 px-4 py-2 text-sm bg-rose-600/80 text-white rounded-lg nice-shadow items-center cursor-pointer'>
<X size={18} />
<span>Reject Assignment</span>
</button>
<div className='flex space-x-3 items-center'>
<button onClick={gradeAssignment} className='flex space-x-2 px-4 py-2 text-sm bg-violet-600/80 text-white rounded-lg nice-shadow items-center'>
<button onClick={gradeAssignment} className='flex space-x-2 px-4 py-2 text-sm bg-violet-600/80 text-white rounded-lg nice-shadow items-center cursor-pointer'>
<BookOpenCheck size={18} />
<span>Set final grade</span>
</button>
<MoveRight className='text-gray-400' size={18} />
<button onClick={markActivityAsDone} className='flex space-x-2 px-4 py-2 text-sm bg-teal-600/80 text-white rounded-lg nice-shadow items-center'>
<button onClick={markActivityAsDone} className='flex space-x-2 px-4 py-2 text-sm bg-teal-600/80 text-white rounded-lg nice-shadow items-center cursor-pointer'>
<Check size={18} />
<span>Mark Activity as Done for User</span>
</button>