From 21305c5d65399bee252713c8e609eefd704c4081 Mon Sep 17 00:00:00 2001 From: Rotimi Best Date: Sun, 1 Oct 2023 19:31:18 +0100 Subject: [PATCH] CLASSROOMIO-T-108: Attendance improvement + complete lms exercise --- .../Lesson/Exercise/UpdateDescription.svelte | 6 +- .../Lesson/Exercise/ViewMode.svelte | 10 +- .../components/Lesson/Materials/index.svelte | 2 + src/lib/components/Course/store.ts | 10 +- src/lib/components/PageNav/index.svelte | 2 +- src/lib/components/PrimaryButton/constants.js | 2 +- .../Question/CheckboxQuestion/index.svelte | 6 +- .../Question/RadioQuestion/index.svelte | 2 +- src/lib/components/Tabs/index.svelte | 12 +- src/lib/utils/services/courses/index.ts | 15 +- src/lib/utils/services/lms/exercises.ts | 96 +++++++++ src/lib/utils/store/attendance.js | 3 - src/lib/utils/store/attendance.ts | 10 + src/lib/utils/types/index.ts | 19 ++ .../courses/[id]/attendance/+page.svelte | 33 ++- src/routes/courses/[id]/lessons/+page.svelte | 1 - .../lessons/[...lessonParams]/+page.svelte | 7 +- .../courses/[id]/submissions/+page.svelte | 12 +- src/routes/lms/exercises/+page.svelte | 204 ++++++++++-------- src/routes/lms/mylearning/+page.svelte | 9 +- 20 files changed, 316 insertions(+), 145 deletions(-) create mode 100644 src/lib/utils/services/lms/exercises.ts delete mode 100644 src/lib/utils/store/attendance.js create mode 100644 src/lib/utils/store/attendance.ts diff --git a/src/lib/components/Course/components/Lesson/Exercise/UpdateDescription.svelte b/src/lib/components/Course/components/Lesson/Exercise/UpdateDescription.svelte index 3710b340..e2a798ab 100644 --- a/src/lib/components/Course/components/Lesson/Exercise/UpdateDescription.svelte +++ b/src/lib/components/Course/components/Lesson/Exercise/UpdateDescription.svelte @@ -7,8 +7,8 @@ import { marked } from 'marked'; export let preview; - function getTotalPossibleGrade() { - return $questionnaire.questions.reduce((acc, question) => { + function getTotalPossibleGrade(questions) { + return questions.reduce((acc, question) => { acc += parseFloat(question.points, 10); return acc; }, 0); @@ -48,7 +48,7 @@

|

- {getTotalPossibleGrade()} points. + {getTotalPossibleGrade($questionnaire.questions)} points.

|

All required

diff --git a/src/lib/components/Course/components/Lesson/Exercise/ViewMode.svelte b/src/lib/components/Course/components/Lesson/Exercise/ViewMode.svelte index e1e33518..a30056db 100644 --- a/src/lib/components/Course/components/Lesson/Exercise/ViewMode.svelte +++ b/src/lib/components/Course/components/Lesson/Exercise/ViewMode.svelte @@ -63,7 +63,7 @@ // If last question send to server if (isFinished) { $questionnaireMetaData.status = 1; - $questionnaireMetaData.totalPossibleGrade = getTotalPossibleGrade(); + $questionnaireMetaData.totalPossibleGrade = getTotalPossibleGrade($questionnaire.questions); $questionnaireMetaData.grades = {}; submitExercise( $questionnaireMetaData.answers, @@ -87,8 +87,8 @@ return Math.round(((currentQuestionIndex - 1) / $questionnaire.questions.length) * 100) || 0; } - function getTotalPossibleGrade() { - return $questionnaire.questions.reduce((acc, question) => { + function getTotalPossibleGrade(questions) { + return questions.reduce((acc, question) => { acc += parseFloat(question.points, 10); return acc; }, 0); @@ -119,7 +119,7 @@ answers: submission.answers }); - $questionnaireMetaData.totalPossibleGrade = getTotalPossibleGrade(); + $questionnaireMetaData.totalPossibleGrade = getTotalPossibleGrade($questionnaire.questions); $questionnaireMetaData.currentQuestionIndex = $questionnaire.questions.length; $questionnaireMetaData.isFinished = true; @@ -192,7 +192,7 @@

|

- {getTotalPossibleGrade()} points. + {getTotalPossibleGrade($questionnaire.questions)} points.

|

All required

diff --git a/src/lib/components/Course/components/Lesson/Materials/index.svelte b/src/lib/components/Course/components/Lesson/Materials/index.svelte index 87337fd9..a91138ce 100644 --- a/src/lib/components/Course/components/Lesson/Materials/index.svelte +++ b/src/lib/components/Course/components/Lesson/Materials/index.svelte @@ -218,6 +218,8 @@ $: addBadgeValueToTab($lesson.materials); + $: console.log('$lesson.materials', $lesson.materials); + $: updateNoteByCompletion($completion); $: initPlyr(player, $lesson.materials.videos); diff --git a/src/lib/components/Course/store.ts b/src/lib/components/Course/store.ts index db4fe260..9b726cf9 100644 --- a/src/lib/components/Course/store.ts +++ b/src/lib/components/Course/store.ts @@ -2,7 +2,7 @@ import { writable } from 'svelte/store'; import type { Writable } from 'svelte/store'; import { lessons } from './components/Lesson/store/lessons'; import { ROLE } from '$lib/utils/constants/roles'; -import type { Course } from '$lib/utils/types'; +import type { Course, GroupPerson } from '$lib/utils/types'; export const course: Writable = writable({ id: '', @@ -16,6 +16,7 @@ export const course: Writable = writable({ is_published: false, created_at: new Date().toDateString(), updated_at: new Date().toDateString(), + attendance: [], metadata: { requirements: '', description: '', @@ -61,7 +62,12 @@ export const mockGroupMember = { } }; -export const group = writable({ +export const group = writable<{ + id: number | null; + tutors: GroupPerson[]; + students: GroupPerson[]; + people: GroupPerson[]; +}>({ id: null, tutors: [], students: [], diff --git a/src/lib/components/PageNav/index.svelte b/src/lib/components/PageNav/index.svelte index 09e25ab3..8acadf46 100644 --- a/src/lib/components/PageNav/index.svelte +++ b/src/lib/components/PageNav/index.svelte @@ -20,7 +20,7 @@
diff --git a/src/lib/components/PrimaryButton/constants.js b/src/lib/components/PrimaryButton/constants.js index 4b93c17e..3b003b2a 100644 --- a/src/lib/components/PrimaryButton/constants.js +++ b/src/lib/components/PrimaryButton/constants.js @@ -24,7 +24,7 @@ export const VARIANTS_CLASS = { [VARIANTS.OUTLINED]: 'border border-primary-700 hover:border-black-300 hover:bg-primary-700 text-black dark:text-white', [VARIANTS.NONE]: - 'border-none hover:border-black-300 hover:bg-gray-200 dark:hover:bg-gray-500 text-black', + 'border-none hover:border-black-300 hover:bg-gray-200 dark:hover:bg-neutral-800 text-black', [VARIANTS.TEXT]: 'text-black hover:underline', [VARIANTS.LINK]: 'text-primary-500 dark:text-primary-500 hover:underline', [VARIANTS.TEXT_DANGER]: diff --git a/src/lib/components/Question/CheckboxQuestion/index.svelte b/src/lib/components/Question/CheckboxQuestion/index.svelte index 21551f3c..4ccfc585 100644 --- a/src/lib/components/Question/CheckboxQuestion/index.svelte +++ b/src/lib/components/Question/CheckboxQuestion/index.svelte @@ -82,7 +82,7 @@
{#each options as option}