diff --git a/src/components/Course/components/Lesson/Exercise/EditMode.svelte b/src/components/Course/components/Lesson/Exercise/EditMode.svelte index 5707dd4c..8ea75b62 100644 --- a/src/components/Course/components/Lesson/Exercise/EditMode.svelte +++ b/src/components/Course/components/Lesson/Exercise/EditMode.svelte @@ -36,7 +36,8 @@ QUESTION_TYPES, } from '../../../../Question/constants'; import { filterOutDeleted } from './functions'; - import Date from '../../../../Form/Date.svelte'; + import { deleteExercise } from '../../../../../utils/services/courses'; + import { lesson } from '../store/lessons'; // import EditContent from "../../../../EditContent/index.svelte"; // import readme from "../../readme.js"; @@ -45,10 +46,14 @@ const initialQuestionsLength = $questionnaire.questions.length; export let editDescription = false; + export let exerciseId; + export let goBack = () => {}; let errors = {}; let questionIdToDelete = null; let questions = []; + let shouldDelete = false; + let isDeleting = false; function shouldScrollToLast(questionId, questions) { const currentQuestionsLength = questions.length; @@ -88,6 +93,22 @@ return errors[question.id] ? errors[question.id][errorKey] : null; } + async function handleDelete() { + console.log('delete'); + isDeleting = true; + await deleteExercise(questions, exerciseId); + + lesson.update((_lesson) => ({ + ..._lesson, + exercises: _lesson.exercises.filter( + (exercise) => exercise.id !== exerciseId + ), + })); + + shouldDelete = false; + goBack(); + } + $: errors = $questionnaireValidation; $: questions = filterOutDeleted($questionnaire.questions); @@ -105,32 +126,62 @@ width="w-2/4" modalHeading="Update description" > -
- - ($questionnaire.is_title_dirty = true)} - /> - { - $questionnaire.due_by = e.target.value; - $questionnaire.is_due_by_dirty = true; - }} - /> - ($questionnaire.is_description_dirty = true)} - /> - -
+ {#if shouldDelete} +
(shouldDelete = false)}> +

Are you sure?

+ +
+ + +
+
+ {:else} +
+ + ($questionnaire.is_title_dirty = true)} + /> + { + $questionnaire.due_by = e.target.value; + $questionnaire.is_due_by_dirty = true; + }} + /> + ($questionnaire.is_description_dirty = true)} + /> + +
+ (shouldDelete = true)} + /> +
+
+ {/if}
diff --git a/src/components/Course/components/Lesson/Exercise/ViewMode.svelte b/src/components/Course/components/Lesson/Exercise/ViewMode.svelte index 8924d9d7..b553cd94 100644 --- a/src/components/Course/components/Lesson/Exercise/ViewMode.svelte +++ b/src/components/Course/components/Lesson/Exercise/ViewMode.svelte @@ -230,13 +230,12 @@ Graded {:else} Pending @@ -245,7 +244,7 @@
{#if STATUS.GRADED === $questionnaireMetaData.status} {$questionnaireMetaData.finalTotalGrade}/{$questionnaireMetaData.totalPossibleGrade} diff --git a/src/components/Course/components/Lesson/Exercise/index.svelte b/src/components/Course/components/Lesson/Exercise/index.svelte index cbe1762b..0da6c757 100644 --- a/src/components/Course/components/Lesson/Exercise/index.svelte +++ b/src/components/Course/components/Lesson/Exercise/index.svelte @@ -25,6 +25,7 @@ export let exerciseId; export let refetchExercise = () => {}; + export let goBack = () => {}; let mode = MODES.view; let preview = false; @@ -135,7 +136,7 @@ {#if mode === MODES.edit && !preview} - + {:else} {/if} diff --git a/src/components/Course/components/Lesson/Exercises/index.svelte b/src/components/Course/components/Lesson/Exercises/index.svelte index 325dffc7..725022c5 100644 --- a/src/components/Course/components/Lesson/Exercises/index.svelte +++ b/src/components/Course/components/Lesson/Exercises/index.svelte @@ -1,4 +1,5 @@ {#if exerciseId} - getExercise(exerciseId)} /> + getExercise(exerciseId)} + /> {:else}