fix: misc issues

This commit is contained in:
Jannat Patel
2024-09-18 08:43:16 +05:30
parent d1200d0fa9
commit d18ca232e3
16 changed files with 327 additions and 83 deletions

View File

@@ -13,13 +13,9 @@
<div class="text-lg font-semibold mb-4">
{{ __('Details') }}
</div>
<div class="grid grid-cols-2 gap-10 mb-4">
<div class="grid grid-cols-2 gap-10 mb-4 space-y-2">
<div>
<FormControl
v-model="batch.title"
:label="__('Title')"
class="mb-4"
/>
<FormControl v-model="batch.title" :label="__('Title')" />
</div>
<div class="flex flex-col space-y-2">
<FormControl

View File

@@ -420,7 +420,7 @@ const validateMandatoryFields = () => {
}
}
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.')
}
}

View File

@@ -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');
}
</style>

View File

@@ -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');
}
</style>

View File

@@ -22,7 +22,7 @@
"
/>
<div v-if="quizDetails.data?.name">
<div class="grid grid-cols-3 gap-5 mt-2 mb-8">
<div class="grid grid-cols-3 gap-5 mt-4 mb-8">
<FormControl
v-model="quiz.max_attempts"
:label="__('Maximun Attempts')"
@@ -125,7 +125,7 @@
<div class="flex gap-2">
<Button
variant="ghost"
@click="deleteQuizzes(selections, unselectAll)"
@click="deleteQuestions(selections, unselectAll)"
>
<Trash2 class="h-4 w-4 stroke-1.5" />
</Button>
@@ -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)
</script>

View File

@@ -5,7 +5,7 @@
<Breadcrumbs :items="breadcrumbs" />
<router-link
:to="{
name: 'QuizCreation',
name: 'QuizForm',
params: {
quizID: 'new',
},
@@ -36,7 +36,7 @@
<router-link
v-for="row in quizzes.data"
:to="{
name: 'QuizCreation',
name: 'QuizForm',
params: {
quizID: row.name,
},
@@ -62,6 +62,7 @@ import {
import { useRouter } from 'vue-router'
import { computed, inject, onMounted } from 'vue'
import { Plus } from 'lucide-vue-next'
import { updateDocumentTitle } from '@/utils'
const user = inject('$user')
const router = useRouter()
@@ -123,4 +124,13 @@ const breadcrumbs = computed(() => {
},
]
})
const pageMeta = computed(() => {
return {
title: __('Quizzes'),
description: __('List of quizzes'),
}
})
updateDocumentTitle(pageMeta)
</script>