From d18ca232e30cb805c1e2522bba289dfa793eb908 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Wed, 18 Sep 2024 08:43:16 +0530 Subject: [PATCH] fix: misc issues --- frontend/src/components/Assessments.vue | 97 ++++++++++++++++++- frontend/src/components/BatchCourses.vue | 34 ++++--- frontend/src/components/BatchStudents.vue | 30 +++--- frontend/src/components/CourseOutline.vue | 2 +- .../src/components/Modals/AssessmentModal.vue | 86 ++++++++++++++++ .../src/components/Modals/ChapterModal.vue | 20 +++- frontend/src/components/Modals/Question.vue | 14 +-- frontend/src/pages/BatchForm.vue | 8 +- frontend/src/pages/CourseForm.vue | 4 +- frontend/src/pages/Lesson.vue | 9 ++ frontend/src/pages/LessonForm.vue | 27 ++++-- .../pages/{QuizCreation.vue => QuizForm.vue} | 48 +++++---- frontend/src/pages/Quizzes.vue | 14 ++- frontend/src/router.js | 4 +- frontend/src/utils/index.js | 6 +- lms/lms/api.py | 7 ++ 16 files changed, 327 insertions(+), 83 deletions(-) create mode 100644 frontend/src/components/Modals/AssessmentModal.vue rename frontend/src/pages/{QuizCreation.vue => QuizForm.vue} (89%) diff --git a/frontend/src/components/Assessments.vue b/frontend/src/components/Assessments.vue index ddc03580..bfe429e6 100644 --- a/frontend/src/components/Assessments.vue +++ b/frontend/src/components/Assessments.vue @@ -1,7 +1,15 @@ diff --git a/frontend/src/components/BatchStudents.vue b/frontend/src/components/BatchStudents.vue index dc73322f..496a10ec 100644 --- a/frontend/src/components/BatchStudents.vue +++ b/frontend/src/components/BatchStudents.vue @@ -1,9 +1,9 @@ diff --git a/frontend/src/components/Modals/Question.vue b/frontend/src/components/Modals/Question.vue index 1dd09530..a50cba2c 100644 --- a/frontend/src/components/Modals/Question.vue +++ b/frontend/src/components/Modals/Question.vue @@ -212,7 +212,8 @@ const questionCreation = createResource({ }) const submitQuestion = (close) => { - if (questionData.data?.name) updateQuestion(close) + console.log(questionData.data?.name) + if (props.questionDetail?.question) updateQuestion(close) else addQuestion(close) } @@ -239,7 +240,7 @@ const addQuestion = (close) => { ) }, onError(err) { - showToast(__('Error'), __(err.message?.[0] || err), 'x') + showToast(__('Error'), __(err.messages?.[0] || err), 'x') }, } ) @@ -259,7 +260,7 @@ const addQuestionRow = (question, close) => { close() }, onError(err) { - showToast(__('Error'), __(err.message?.[0] || err), 'x') + showToast(__('Error'), __(err.messages?.[0] || err), 'x') close() }, } @@ -312,13 +313,12 @@ const updateQuestion = (close) => { quiz.value.reload() close() }, - onError(err) { - showToast(__('Error'), __(err.message?.[0] || err), 'x') - close() - }, } ) }, + onError(err) { + showToast(__('Error'), __(err.messages?.[0] || err), 'x') + }, } ) } diff --git a/frontend/src/pages/BatchForm.vue b/frontend/src/pages/BatchForm.vue index c5fd6d80..01ce923c 100644 --- a/frontend/src/pages/BatchForm.vue +++ b/frontend/src/pages/BatchForm.vue @@ -13,13 +13,9 @@
{{ __('Details') }}
-
+
- +
{ } } if (course.paid_course && (!course.course_price || !course.currency)) { - return 'Course price and currency are mandatory for paid courses' + return __('Course price and currency are mandatory for paid courses') } } @@ -436,7 +436,7 @@ watch( const validateFile = (file) => { let extension = file.name.split('.').pop().toLowerCase() if (!['jpg', 'jpeg', 'png', 'webp'].includes(extension)) { - return 'Only image file is allowed.' + return __('Only image file is allowed.') } } diff --git a/frontend/src/pages/Lesson.vue b/frontend/src/pages/Lesson.vue index a4a8ba5d..9676a0aa 100644 --- a/frontend/src/pages/Lesson.vue +++ b/frontend/src/pages/Lesson.vue @@ -541,4 +541,13 @@ updateDocumentTitle(pageMeta) color: #383a42; background-color: #fafafa; } + +.codeBoxTextArea { + line-height: 1.7; +} + +iframe { + border-top: 3px solid theme('colors.gray.700'); + border-bottom: 3px solid theme('colors.gray.700'); +} diff --git a/frontend/src/pages/LessonForm.vue b/frontend/src/pages/LessonForm.vue index 13fe0d63..dee621fd 100644 --- a/frontend/src/pages/LessonForm.vue +++ b/frontend/src/pages/LessonForm.vue @@ -117,7 +117,7 @@ onMounted(() => { const renderEditor = (holder) => { return new EditorJS({ holder: holder, - tools: getEditorTools(), + tools: getEditorTools(true), autofocus: true, }) } @@ -143,7 +143,9 @@ const lessonDetails = createResource({ Object.keys(data.lesson).forEach((key) => { lesson[key] = data.lesson[key] }) - lesson.include_in_preview = data.include_in_preview ? true : false + lesson.include_in_preview = data?.lesson?.include_in_preview + ? true + : false addLessonContent(data) addInstructorNotes(data) enableAutoSave() @@ -180,7 +182,7 @@ const addInstructorNotes = (data) => { const enableAutoSave = () => { autoSaveInterval = setInterval(() => { saveLesson() - }, 5000) + }, 10000) } onBeforeUnmount(() => { @@ -423,7 +425,7 @@ const breadcrumbs = computed(() => { }, { label: lessonDetails.data?.course_title, - route: { name: 'CourseDetail', params: { courseName: props.courseName } }, + route: { name: 'CourseForm', params: { courseName: props.courseName } }, }, ] @@ -549,10 +551,6 @@ updateDocumentTitle(pageMeta) cursor: pointer; } -.codeBoxSelectItem:hover { - opacity: 0.7; -} - .codeBoxSelectedItem { background-color: lightblue !important; } @@ -570,4 +568,17 @@ updateDocumentTitle(pageMeta) color: #383a42; background-color: #fafafa; } + +.codeBoxTextArea { + line-height: 1.7; +} + +.prose :where(pre):not(:where([class~='not-prose'], [class~='not-prose'] *)) { + overflow-x: unset; +} + +iframe { + border-top: 3px solid theme('colors.gray.700'); + border-bottom: 3px solid theme('colors.gray.700'); +} diff --git a/frontend/src/pages/QuizCreation.vue b/frontend/src/pages/QuizForm.vue similarity index 89% rename from frontend/src/pages/QuizCreation.vue rename to frontend/src/pages/QuizForm.vue index 112ff111..731b4d43 100644 --- a/frontend/src/pages/QuizCreation.vue +++ b/frontend/src/pages/QuizForm.vue @@ -22,7 +22,7 @@ " />
-
+
@@ -174,7 +174,7 @@ import { } from 'vue' import { Plus, Trash2 } from 'lucide-vue-next' import Question from '@/components/Modals/Question.vue' -import { showToast } from '../utils' +import { showToast, updateDocumentTitle } from '@/utils' import { useRouter } from 'vue-router' const showQuestionModal = ref(false) @@ -306,7 +306,7 @@ const createQuiz = () => { onSuccess(data) { showToast(__('Success'), __('Quiz created successfully'), 'check') router.push({ - name: 'QuizCreation', + name: 'QuizForm', params: { quizID: data.name }, }) }, @@ -375,24 +375,29 @@ const openQuestionModal = (question = null) => { showQuestionModal.value = true } -const deleteQuiz = createResource({ - url: 'frappe.client.delete', +const deleteQuestionResource = createResource({ + url: 'lms.lms.api.delete_documents', makeParams(values) { return { doctype: 'LMS Quiz Question', - name: values.quiz, + documents: values.questions, } }, }) -const deleteQuizzes = (selections, unselectAll) => { - selections.forEach(async (quiz) => { - deleteQuiz.submit({ quiz }) - }) - setTimeout(() => { - quizDetails.reload() - unselectAll() - }, 500) +const deleteQuestions = (selections, unselectAll) => { + deleteQuestionResource.submit( + { + questions: Array.from(selections), + }, + { + onSuccess() { + showToast(__('Success'), __('Questions deleted successfully'), 'check') + quizDetails.reload() + unselectAll() + }, + } + ) } const breadcrumbs = computed(() => { @@ -410,9 +415,18 @@ const breadcrumbs = computed(() => { }) } */ crumbs.push({ - label: props.quizID == 'new' ? 'New Quiz' : quizDetails.data?.title, - route: { name: 'QuizCreation', params: { quizID: props.quizID } }, + label: props.quizID == 'new' ? __('New Quiz') : quizDetails.data?.title, + route: { name: 'QuizForm', params: { quizID: props.quizID } }, }) return crumbs }) + +const pageMeta = computed(() => { + return { + title: props.quizID == 'new' ? __('New Quiz') : quizDetails.data?.title, + description: __('Form to create and edit quizzes'), + } +}) + +updateDocumentTitle(pageMeta) diff --git a/frontend/src/pages/Quizzes.vue b/frontend/src/pages/Quizzes.vue index 3a678e91..c94ed135 100644 --- a/frontend/src/pages/Quizzes.vue +++ b/frontend/src/pages/Quizzes.vue @@ -5,7 +5,7 @@