fix: assignment and quiz rendering issue in courses

This commit is contained in:
Jannat Patel
2025-03-24 13:42:24 +05:30
parent c0f4a09e22
commit 89a348b154
11 changed files with 91 additions and 102 deletions

View File

@@ -1,10 +1,13 @@
<template>
<div
v-if="assignment.data"
class="grid grid-cols-[60%,40%] h-full"
:class="{ 'border rounded-lg': !showTitle }"
class="grid grid-cols-2 h-full"
:class="{ 'border rounded-lg overflow-auto': !showTitle }"
>
<div class="border-r p-5 overflow-y-auto h-[calc(100vh-3.2rem)]">
<div
class="border-r p-5 overflow-y-auto h-[calc(100vh-3.2rem)]"
:class="{ 'h-full': !showTitle }"
>
<div v-if="showTitle" class="text-lg font-semibold mb-5 text-ink-gray-9">
<div v-if="submissionName === 'new'">
{{ __('Submission by') }} {{ user.data?.full_name }}
@@ -115,13 +118,7 @@
:readonly="!canModifyAssignment"
/>
</div>
<div v-if="true">
<div class="text-sm mb-4">
{{ __('Write your answer here') }}
</div>
<FormControl />
</div>
<!-- <div v-else>
<div v-else>
<div class="text-sm mb-4">
{{ __('Write your answer here') }}
</div>
@@ -132,7 +129,7 @@
:fixedMenu="true"
editorClass="prose-sm max-w-none border-b border-x bg-surface-gray-2 rounded-b-md py-1 px-2 min-h-[7rem]"
/>
</div> -->
</div>
<div
v-if="
@@ -144,9 +141,7 @@
<div class="text-sm text-ink-gray-5 font-medium mb-2">
{{ __('Comments by Evaluator') }}:
</div>
<div class="leading-5">
{{ submissionResource.doc.comments }}
</div>
<div class="leading-5" v-html="submissionResource.doc.comments"></div>
</div>
<!-- Grading -->
@@ -204,7 +199,6 @@ const answer = ref(null)
const comments = ref(null)
const router = useRouter()
const user = inject('$user')
const showTitle = router.currentRoute.value.name == 'AssignmentSubmission'
const isDirty = ref(false)
const props = defineProps({
@@ -216,6 +210,10 @@ const props = defineProps({
type: String,
default: 'new',
},
showTitle: {
type: Boolean,
default: true,
},
})
onMounted(() => {
@@ -359,6 +357,7 @@ const addNewSubmission = () => {
assignmentID: props.assignmentID,
submissionName: data.name,
},
query: { fromLesson: router.currentRoute.value.query.fromLesson },
})
} else {
markLessonProgress()

View File

@@ -1,46 +0,0 @@
<template>
<Assignment
v-if="user.data && submission.data"
:assignmentID="assignmentID"
:submissionName="submission.data?.name || 'new'"
/>
<div v-else class="border rounded-md text-center py-20">
<div>
{{ __('Please login to access the assignment.') }}
</div>
<Button @click="redirectToLogin()" class="mt-2">
<span>
{{ __('Login') }}
</span>
</Button>
</div>
</template>
<script setup>
import { inject } from 'vue'
import { Button, createResource } from 'frappe-ui'
import Assignment from '@/components/Assignment.vue'
const user = inject('$user')
const props = defineProps({
assignmentID: {
type: String,
required: true,
},
})
const submission = createResource({
url: 'frappe.client.get_value',
makeParams(values) {
return {
doctype: 'LMS Assignment Submission',
fieldname: 'name',
filters: {
assignment: props.assignmentID,
member: user.data?.name,
},
}
},
auto: true,
})
</script>

View File

@@ -0,0 +1,11 @@
<template>
<div class="relative flex h-full flex-col">
<div class="h-full flex-1">
<div class="flex h-screen text-base bg-surface-white">
<div class="w-full overflow-auto" id="scrollContainer">
<slot />
</div>
</div>
</div>
</div>
</template>

View File

@@ -1,7 +1,7 @@
<template>
<div v-if="quiz.data">
<div
class="bg-surface-blue-2 space-y-1 py-2 px-2 mb-4 rounded-md text-sm text-ink-blue-800"
class="bg-surface-blue-2 space-y-1 py-2 px-2 mb-4 rounded-md text-sm text-ink-blue-2"
>
<div class="leading-5">
{{
@@ -29,7 +29,7 @@
).format(quiz.data.passing_percentage)
}}
</div>
<div v-if="quiz.data.max_attempts" class="leading-relaxed">
<div v-if="quiz.data.max_attempts" class="leading-5">
{{
__('You can attempt this quiz {0}.').format(
quiz.data.max_attempts == 1
@@ -52,7 +52,7 @@
<div v-if="activeQuestion == 0">
<div class="border text-center p-20 rounded-md">
<div class="font-semibold text-lg">
<div class="font-semibold text-lg text-ink-gray-9">
{{ quiz.data.title }}
</div>
<Button
@@ -67,7 +67,7 @@
{{ __('Start') }}
</span>
</Button>
<div v-else>
<div v-else class="leading-5 text-ink-gray-7">
{{
__(
'You have already exceeded the maximum number of attempts allowed for this quiz.'
@@ -222,11 +222,14 @@
</div>
</div>
</div>
<div v-else class="border rounded-md p-20 text-center space-y-4">
<div class="text-lg font-semibold">
<div v-else class="border rounded-md p-20 text-center space-y-2">
<div class="text-lg font-semibold text-ink-gray-9">
{{ __('Quiz Summary') }}
</div>
<div v-if="quizSubmission.data.is_open_ended">
<div
v-if="quizSubmission.data.is_open_ended"
class="leading-5 text-ink-gray-7"
>
{{
__(
"Your submission has been successfully saved. The instructor will review and grade it shortly, and you'll be notified of your final result."
@@ -613,7 +616,6 @@ const getInstructions = (question) => {
}
const markLessonProgress = () => {
console.log(router)
if (router.currentRoute.value.name == 'Lesson') {
call('lms.lms.api.mark_lesson_progress', {
course: router.currentRoute.value.params.courseName,