From 6efb82cd1088bc01a29ec80964ff1277bba2cded Mon Sep 17 00:00:00 2001 From: Rotimi Best Date: Wed, 26 Jul 2023 20:48:00 +0100 Subject: [PATCH] CLASSROOMIO-T-11: Refactoring --- .../components/Ceritficate/Design.svelte | 33 +++++++++++++------ .../Ceritficate/certificates/Plain.svelte | 8 ++--- .../certificates/Professional.svelte | 10 +++--- .../Course/components/Ceritficate/store.js | 6 ---- src/components/Course/store.ts | 1 + src/routes/courses/[id]/certificates.svelte | 22 +++++++------ src/utils/types/index.ts | 1 + 7 files changed, 47 insertions(+), 34 deletions(-) diff --git a/src/components/Course/components/Ceritficate/Design.svelte b/src/components/Course/components/Ceritficate/Design.svelte index 8d2cbfb8..ae8e2147 100644 --- a/src/components/Course/components/Ceritficate/Design.svelte +++ b/src/components/Course/components/Ceritficate/Design.svelte @@ -6,8 +6,8 @@ } from 'carbon-components-svelte'; import UploadImage from './Upload.svelte'; import PrimaryButton from '../../../PrimaryButton/index.svelte'; + import { course } from '../../../Course/store'; import TextArea from '../../../Form/TextArea.svelte'; - import { certificateInfo } from './store'; import Professional from './certificates/Professional.svelte'; import Plain from './certificates/Plain.svelte'; @@ -20,9 +20,22 @@ ]; let Selectedtheme = themes[0]; - const saveCertificate = () => {}; - const onToggle = (e) => { - console.log(e); + let isSaving = false; + + const saveCertificate = () => { + // set isSaving to true + // Validation - make sure description isn't empty + // Upload the brand logo to give you a URL + // Update organisation logo (like in `src/components/Org/Settings/OrgSettings.svelte` line 25-51) + // - Note from the file above both logo and name is updated, in this case we only want to update logo + /** + * Update only course description (like in src/components/Course/components/Settings/index.svelte) + * + * await updateCourse($course.id, undefined, { + description: $course.description, + }); + * */ + // set isSaving to false }; @@ -59,15 +72,14 @@ rows={6} placeholder="a little description about the course" bgColor="bg-gray-100" - bind:value={$certificateInfo.Desc} - onChange={$certificateInfo.Desc} + bind:value={$course.description} /> onToggle(e)} - class="my-2" + labelText="Automatically send certificates on completion" + bind:toggled={$course.auto_send_certificate} + class="my-4" size="sm" > Automatic @@ -94,7 +106,8 @@ saveCertificate()} + onClick={saveCertificate} + isLoading={isSaving} /> diff --git a/src/components/Course/components/Ceritficate/certificates/Plain.svelte b/src/components/Course/components/Ceritficate/certificates/Plain.svelte index 0092c4b1..2cbf846e 100644 --- a/src/components/Course/components/Ceritficate/certificates/Plain.svelte +++ b/src/components/Course/components/Ceritficate/certificates/Plain.svelte @@ -1,7 +1,7 @@ @@ -11,20 +11,22 @@ import CourseContainer from '../../../components/CourseContainer/index.svelte'; import PageNav from '../../../components/PageNav/index.svelte'; - import PrimaryButton from '../../../components/PrimaryButton/index.svelte'; + // import PrimaryButton from '../../../components/PrimaryButton/index.svelte'; import PageBody from '../../../components/PageBody/index.svelte'; import RoleBasedSecurity from '../../../components/RoleBasedSecurity/index.svelte'; - import { setCourse, course, group } from '../../../components/Course/store'; + import { setCourse, course } from '../../../components/Course/store'; import IssueCertificateModal from '../../../components/Course/components/Ceritficate/IssueCertificateModal.svelte'; // import DeleteConfirmation from '../../../components/Course/components/People/DeleteConfirmation.svelte'; import Design from '../../../components/Course/components/Ceritficate/Design.svelte'; import Reports from '../../../components/Course/components/Ceritficate/Reports.svelte'; - import { issueCertificateModal } from '../../../components/Course/components/Ceritficate/store'; - import { Tabs, Tab, TabContent } from 'carbon-components-svelte'; + // import { issueCertificateModal } from '../../../components/Course/components/Ceritficate/store'; + import { Tabs, Tab } from 'carbon-components-svelte'; + import TabContent from 'carbon-components-svelte/src/Tabs/TabContent.svelte'; export let courseId: string = ''; let isStudent = false; + onMount(async () => { if ($course.id) return; const { data } = await fetchCourse(courseId); @@ -33,18 +35,21 @@ + - + + @@ -61,6 +66,3 @@ - - diff --git a/src/utils/types/index.ts b/src/utils/types/index.ts index d1e10b0c..84c0731b 100644 --- a/src/utils/types/index.ts +++ b/src/utils/types/index.ts @@ -96,6 +96,7 @@ export interface Course { currency?: string; group?: Group; organization?: Organization; + auto_send_certificate?: boolean; } export interface Groupmember {