+
+ {{ __('Find the perfect job for you') }}
+
+
+ Assignment: ${assignment}
+
+
`
+ return
+ }
+
+ renderAssignmentModal() {
+ if (this.readOnly) {
+ return
+ }
+ const app = createApp(AssessmentPlugin, {
+ onAddition: (assignment) => {
+ this.data.assignment = assignment
+ this.renderAssignment(assignment)
+ },
+ })
+ app.use(translationPlugin)
+ app.mount(this.wrapper)
+ }
+
+ save(blockContent) {
+ return {
+ assignment: this.data.assignment,
+ }
+ }
+}
diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js
index 07c04d48..df10a793 100644
--- a/frontend/src/utils/index.js
+++ b/frontend/src/utils/index.js
@@ -1,6 +1,7 @@
import { toast } from 'frappe-ui'
import { useTimeAgo } from '@vueuse/core'
import { Quiz } from '@/utils/quiz'
+import { Assignment } from '@/utils/Assignment'
import { Upload } from '@/utils/upload'
import { Markdown } from '@/utils/markdownParser'
import Header from '@editorjs/header'
@@ -155,6 +156,7 @@ export function getEditorTools() {
},
},
quiz: Quiz,
+ assignment: Assignment,
upload: Upload,
markdown: Markdown,
image: SimpleImage,
diff --git a/frontend/src/utils/quiz.js b/frontend/src/utils/quiz.js
index 3758eb99..d636721a 100644
--- a/frontend/src/utils/quiz.js
+++ b/frontend/src/utils/quiz.js
@@ -1,5 +1,5 @@
import QuizBlock from '@/components/QuizBlock.vue'
-import QuizPlugin from '@/components/QuizPlugin.vue'
+import AssessmentPlugin from '@/components/AssessmentPlugin.vue'
import { createApp, h } from 'vue'
import { usersStore } from '../stores/user'
import translationPlugin from '../translation'
@@ -63,8 +63,8 @@ export class Quiz {
if (this.readOnly) {
return
}
- const app = createApp(QuizPlugin, {
- onQuizAddition: (quiz) => {
+ const app = createApp(AssessmentPlugin, {
+ onAddition: (quiz) => {
this.data.quiz = quiz
this.renderQuiz(quiz)
},
diff --git a/lms/lms/doctype/lms_assignment/lms_assignment.json b/lms/lms/doctype/lms_assignment/lms_assignment.json
index a0e3dde8..dcd21f23 100644
--- a/lms/lms/doctype/lms_assignment/lms_assignment.json
+++ b/lms/lms/doctype/lms_assignment/lms_assignment.json
@@ -9,10 +9,11 @@
"engine": "InnoDB",
"field_order": [
"title",
- "grade_assignment",
"question",
"column_break_hmwv",
"type",
+ "grade_assignment",
+ "section_break_sjti",
"show_answer",
"answer"
],
@@ -20,7 +21,8 @@
{
"fieldname": "question",
"fieldtype": "Text Editor",
- "label": "Question"
+ "label": "Question",
+ "reqd": 1
},
{
"fieldname": "type",
@@ -28,14 +30,16 @@
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Type",
- "options": "Document\nPDF\nURL\nImage\nText"
+ "options": "Document\nPDF\nURL\nImage\nText",
+ "reqd": 1
},
{
"fieldname": "title",
"fieldtype": "Data",
"in_list_view": 1,
"in_standard_filter": 1,
- "label": "Title"
+ "label": "Title",
+ "reqd": 1
},
{
"fieldname": "column_break_hmwv",
@@ -60,11 +64,15 @@
"fieldname": "grade_assignment",
"fieldtype": "Check",
"label": "Grade Assignment"
+ },
+ {
+ "fieldname": "section_break_sjti",
+ "fieldtype": "Section Break"
}
],
"index_web_pages_for_search": 1,
"links": [],
- "modified": "2024-04-05 12:01:36.601160",
+ "modified": "2024-12-24 09:36:31.464508",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Assignment",
diff --git a/lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json b/lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json
index c9745ae6..00ac7f09 100644
--- a/lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json
+++ b/lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json
@@ -14,19 +14,17 @@
"member",
"member_name",
"section_break_dlzh",
- "question",
- "column_break_zvis",
"assignment_attachment",
"answer",
- "section_break_rqal",
- "status",
+ "column_break_oqqy",
"evaluator",
- "column_break_esgd",
+ "status",
"comments",
- "section_break_cwaw",
- "lesson",
+ "section_break_rqal",
+ "question",
+ "column_break_esgd",
"course",
- "column_break_ygdu"
+ "lesson"
],
"fields": [
{
@@ -89,8 +87,7 @@
"fieldname": "evaluator",
"fieldtype": "Link",
"label": "Evaluator",
- "options": "User",
- "read_only": 1
+ "options": "User"
},
{
"depends_on": "eval:!([\"URL\", \"Text\"]).includes(doc.type);",
@@ -128,14 +125,6 @@
"fieldname": "column_break_esgd",
"fieldtype": "Column Break"
},
- {
- "fieldname": "section_break_cwaw",
- "fieldtype": "Section Break"
- },
- {
- "fieldname": "column_break_ygdu",
- "fieldtype": "Column Break"
- },
{
"depends_on": "eval:([\"URL\", \"Text\"]).includes(doc.type);",
"fieldname": "answer",
@@ -148,14 +137,14 @@
"fieldtype": "Section Break"
},
{
- "fieldname": "column_break_zvis",
+ "fieldname": "column_break_oqqy",
"fieldtype": "Column Break"
}
],
"index_web_pages_for_search": 1,
"links": [],
"make_attachments_public": 1,
- "modified": "2024-04-05 15:57:22.758563",
+ "modified": "2024-12-24 21:22:35.212732",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Assignment Submission",
diff --git a/lms/lms/utils.py b/lms/lms/utils.py
index 7541c921..76b4c23b 100644
--- a/lms/lms/utils.py
+++ b/lms/lms/utils.py
@@ -1487,11 +1487,19 @@ def get_batch_students(batch):
detail.courses_completed = courses_completed
detail.assessments_completed = assessments_completed
- detail.progress = (
- (courses_completed + assessments_completed)
- / (len(batch_courses) + len(assessments))
- * 100
- )
+
+ if len(batch_courses) or len(assessments):
+ detail.progress = flt(
+ (
+ (courses_completed + assessments_completed)
+ / (len(batch_courses) + len(assessments))
+ * 100
+ ),
+ 2,
+ )
+ else:
+ detail.progress = 0
+
students.append(detail)
return students