chore: disable mark as complete if all exercises are not complete #513

This commit is contained in:
Rotimi Best
2024-12-23 02:31:53 +01:00
parent 39665fb65d
commit b3ca8b00a6
12 changed files with 76 additions and 34 deletions
@@ -128,6 +128,7 @@
$course.id,
getGroupMemberId($group.people, $profile.id)
);
if (response) {
submissionResponse = response;
}
@@ -263,8 +264,8 @@
{:else if !$questionnaire.questions.length}
<Box>
<img src="/images/empty-exercise-icon.svg" alt="Exercise svg" class="my-2.5" />
<h2 class="text-xl my-1.5">No question added for this exercise</h2>
<p class="text-sm text-center px-44">
<h2 class="my-1.5 text-xl">No question added for this exercise</h2>
<p class="px-44 text-center text-sm">
<RoleBasedSecurity allowedRoles={[1, 2]}>
Click the <span class="text-primary-700">Edit</span> button to add.
</RoleBasedSecurity>
@@ -276,25 +277,25 @@
<h2 class="my-1">{$questionnaire.title}</h2>
<div class="flex items-center">
<p class="dark:text-white mx-2">
<p class="mx-2 dark:text-white">
<strong>{$questionnaire.questions.length}</strong> questions
</p>
|
<p class="dark:text-white mx-2">
<p class="mx-2 dark:text-white">
<strong>{getTotalPossibleGrade($questionnaire.questions)}</strong> points.
</p>
|
<p class="dark:text-white mx-2">All required</p>
<p class="mx-2 dark:text-white">All required</p>
{#if $questionnaire.due_by}
|
<p class="dark:text-white mx-2">
<p class="mx-2 dark:text-white">
<strong>Due by:</strong>
{new Date($questionnaire.due_by).toLocaleString()}
</p>
{/if}
</div>
<article class="mt-3 preview prose prose-sm sm:prose p-2">
<article class="preview prose prose-sm sm:prose mt-3 p-2">
{@html $questionnaire.description || 'No desription'}
</article>
@@ -309,26 +310,26 @@
{:else if $questionnaireMetaData.isFinished}
{#if !isLoadingAutoSavedData}
<div class="flex items-center justify-between">
<div class="flex flex-col lg:flex-row items-start lg:items-center lg:space-x-4 w-full">
<div class="flex w-full flex-col items-start lg:flex-row lg:items-center lg:space-x-4">
<h2 class="text-xl font-normal">{$questionnaire.title}</h2>
{#if STATUS.GRADED === $questionnaireMetaData.status}
<span
class="status-text bg-green-700 text-white py-1 px-2 text-center"
class="status-text bg-green-700 px-2 py-1 text-center text-white"
title={$t('course.navItem.lessons.exercises.all_exercises.view_mode.status_graded')}
>
{$t('course.navItem.lessons.exercises.all_exercises.view_mode.graded')}
</span>
{:else if $course.type === COURSE_TYPE.SELF_PACED}
<span
class="status-text bg-green-700 text-white py-1 px-2 text-center"
class="status-text bg-green-700 px-2 py-1 text-center text-white"
title={$t('course.navItem.lessons.exercises.all_exercises.view_mode.status_submitted')}
>
{$t('course.navItem.lessons.exercises.all_exercises.view_mode.submitted')}
</span>
{:else}
<span
class="status-text bg-yellow-600 text-white py-1 px-2 text-center"
class="status-text bg-yellow-600 px-2 py-1 text-center text-white"
title={$t('course.navItem.lessons.exercises.all_exercises.view_mode.status_pending')}
>
{$t('course.navItem.lessons.exercises.all_exercises.view_mode.pending')}
@@ -337,7 +338,7 @@
</div>
{#if STATUS.GRADED === $questionnaireMetaData.status && $course.type !== COURSE_TYPE.SELF_PACED}
<span
class="p-6 border-2 border-gray-300 bg-[#F5F8FE] rounded-full h-10 w-10 flex items-center justify-center text-[#2751DA] text-sm font-semibold"
class="flex h-10 w-10 items-center justify-center rounded-full border-2 border-gray-300 bg-[#F5F8FE] p-6 text-sm font-semibold text-[#2751DA]"
title={$t('course.navItem.lessons.exercises.all_exercises.view_mode.status_graded')}
>
{$questionnaireMetaData.finalTotalGrade}/{$questionnaireMetaData.totalPossibleGrade}
@@ -346,7 +347,7 @@
</div>
{#if $questionnaireMetaData.status === STATUS.GRADED && $questionnaireMetaData.comment && $course.type !== COURSE_TYPE.SELF_PACED}
<div class="flex items-center justify-between bg-primary-700 p-4 text-white rounded-sm mt-3">
<div class="bg-primary-700 mt-3 flex items-center justify-between rounded-sm p-4 text-white">
<span> {$questionnaireMetaData.comment}</span>
</div>
{/if}
@@ -61,6 +61,18 @@ export async function fetchProfileCourseProgress(
return { data, error };
}
export async function checkExercisesComplete(
lessonId: Lesson['id'],
groupMemberId: Groupmember['id']
) {
const { data, error } = await supabase.rpc('check_if_student_completed_exercises', {
lesson_id_arg: lessonId,
groupmember_id_arg: groupMemberId
});
return { data, error };
}
const SLUG_QUERY = `
id,
title,
@@ -43,7 +43,8 @@
},
"lessons": {
"error": {
"try_later": "Etwas stimmt nicht. Bitte versuchen Sie es später"
"try_later": "Etwas stimmt nicht. Bitte versuchen Sie es später",
"exercise_not_complete": "Schließen Sie alle Übungen ab, um sie als abgeschlossen zu markieren"
},
"success": {
"complete_marked": "Als abgeschlossen markiert",
@@ -1337,7 +1337,8 @@
"version_restored": "Version restored sucessfully"
},
"error": {
"try_later": "Something's not right - Please try later"
"try_later": "Something's not right - Please try later",
"exercise_not_complete": "Complete all exercises to mark as complete"
}
},
@@ -43,7 +43,8 @@
},
"lessons": {
"error": {
"try_later": "Algo no está bien. Inténtelo más tarde."
"try_later": "Algo no está bien. Inténtelo más tarde.",
"exercise_not_complete": "Completa todos los ejercicios para marcarlos como completos."
},
"success": {
"complete_marked": "Marcado como completo",
@@ -43,7 +43,8 @@
},
"lessons": {
"error": {
"try_later": "Quelque chose ne va pas – Veuillez réessayer plus tard"
"try_later": "Quelque chose ne va pas – Veuillez réessayer plus tard",
"exercise_not_complete": "Terminez tous les exercices pour les marquer comme terminés"
},
"success": {
"complete_marked": "Marqué comme terminé",
@@ -43,7 +43,8 @@
},
"lessons": {
"error": {
"try_later": "कुछ ठीक नहीं है - कृपया बाद में प्रयास करें"
"try_later": "कुछ ठीक नहीं है - कृपया बाद में प्रयास करें",
"exercise_not_complete": "पूर्ण के रूप में चिह्नित करने के लिए सभी अभ्यास पूर्ण करें"
},
"success": {
"complete_marked": "पूर्ण के रूप में चिह्नित",
@@ -43,7 +43,8 @@
},
"lessons": {
"error": {
"try_later": "Algo não está certo - tente mais tarde"
"try_later": "Algo não está certo - tente mais tarde",
"exercise_not_complete": "Conclua todos os exercícios para marcá-los como concluídos"
},
"success": {
"complete_marked": "Marcado como concluído",
@@ -43,7 +43,8 @@
},
"lessons": {
"error": {
"try_later": "Что-то не так. Повторите попытку позже."
"try_later": "Что-то не так. Повторите попытку позже.",
"exercise_not_complete": "Выполните все упражнения, чтобы отметить их как выполненные."
},
"success": {
"complete_marked": "Помечено как завершенное",
@@ -43,7 +43,8 @@
},
"lessons": {
"error": {
"try_later": "Đã xảy ra sự cố - Vui lòng thử lại sau"
"try_later": "Đã xảy ra sự cố - Vui lòng thử lại sau",
"exercise_not_complete": "Hoàn thành tất cả các bài tập để đánh dấu là hoàn thành"
},
"success": {
"complete_marked": "Được đánh dấu là hoàn thành",