@@ -110,6 +115,7 @@
import {
Avatar,
Button,
+ createListResource,
createResource,
FeatherIcon,
ListHeader,
@@ -139,39 +145,48 @@ const props = defineProps({
},
})
-const students = createResource({
- url: 'lms.lms.utils.get_batch_students',
+const studentCount = createResource({
+ url: 'frappe.client.get_count',
+ cache: ['batch_student_count', props.batch?.data?.name],
params: {
+ doctype: 'LMS Batch Enrollment',
+ filters: { batch: props.batch?.data?.name },
+ },
+ auto: true,
+})
+
+const students = createListResource({
+ doctype: 'LMS Batch Enrollment',
+ url: 'lms.lms.utils.get_batch_students',
+ cache: ['batch_students', props.batch?.data?.name],
+ pageLength: 50,
+ filters: {
batch: props.batch?.data?.name,
},
auto: true,
})
-const getStudentColumns = () => {
- let columns = [
- {
- label: 'Full Name',
- key: 'full_name',
- width: '20rem',
- icon: 'user',
- },
- {
- label: 'Progress',
- key: 'progress',
- width: '15rem',
- icon: 'activity',
- },
- {
- label: 'Last Active',
- key: 'last_active',
- width: '10rem',
- align: 'center',
- icon: 'clock',
- },
- ]
-
- return columns
-}
+const studentColumns = [
+ {
+ label: 'Full Name',
+ key: 'full_name',
+ width: '20rem',
+ icon: 'user',
+ },
+ {
+ label: 'Progress',
+ key: 'progress',
+ width: '15rem',
+ icon: 'activity',
+ },
+ {
+ label: 'Last Active',
+ key: 'last_active',
+ width: '10rem',
+ align: 'center',
+ icon: 'clock',
+ },
+]
const openStudentModal = () => {
showStudentModal.value = true
@@ -200,6 +215,7 @@ const removeStudents = (selections, unselectAll) => {
{
onSuccess(data) {
students.reload()
+ studentCount.reload()
props.batch.reload()
toast.success(__('Students deleted successfully'))
unselectAll()
diff --git a/frontend/src/components/Controls/ChildTable.vue b/frontend/src/components/Controls/ChildTable.vue
index dd34a34f..5e6ef47e 100644
--- a/frontend/src/components/Controls/ChildTable.vue
+++ b/frontend/src/components/Controls/ChildTable.vue
@@ -3,55 +3,56 @@
{{ label }}
-
-
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
@@ -154,10 +155,7 @@ const getGridTemplateColumns = () => {
}
const toggleMenu = (index: number, event: MouseEvent) => {
- const rect = (event.target as HTMLElement).getBoundingClientRect()
- menuOpenIndex.value = index
- menuTopPosition.value = rect.bottom + 'px'
- menuLeftPosition.value = rect.right + 'px'
+ menuOpenIndex.value = menuOpenIndex.value === index ? null : index
}
onClickOutside(menuRef, () => {
diff --git a/frontend/src/components/Controls/Uploader.vue b/frontend/src/components/Controls/Uploader.vue
index 73643892..8c83ff4c 100644
--- a/frontend/src/components/Controls/Uploader.vue
+++ b/frontend/src/components/Controls/Uploader.vue
@@ -70,7 +70,7 @@ const props = withDefaults(
modelValue: string
label?: string
description?: string
- type: 'image' | 'video'
+ type?: 'image' | 'video'
required?: boolean
}>(),
{
diff --git a/frontend/src/components/CourseCardOverlay.vue b/frontend/src/components/CourseCardOverlay.vue
index d401836b..a357a747 100644
--- a/frontend/src/components/CourseCardOverlay.vue
+++ b/frontend/src/components/CourseCardOverlay.vue
@@ -189,15 +189,16 @@ import {
import { computed, inject, ref } from 'vue'
import { Badge, Button, call, createResource, toast } from 'frappe-ui'
import { formatAmount } from '@/utils/'
-import { capture } from '@/telemetry'
import { useRouter } from 'vue-router'
import CertificationLinks from '@/components/CertificationLinks.vue'
import CourseProgressSummary from '@/components/Modals/CourseProgressSummary.vue'
+import { useTelemetry } from 'frappe-ui/frappe'
const router = useRouter()
const user = inject('$user')
const showProgressModal = ref(false)
const readOnlyMode = window.read_only_mode
+const { capture } = useTelemetry()
const props = defineProps({
course: {
@@ -215,7 +216,7 @@ const video_link = computed(() => {
function enrollStudent() {
if (!user.data) {
- toast.success(__('You need to login first to enroll for this course'))
+ toast.warning(__('You need to login first to enroll for this course'))
setTimeout(() => {
window.location.href = `/login?redirect-to=${window.location.pathname}`
}, 500)
diff --git a/frontend/src/components/LiveClass.vue b/frontend/src/components/LiveClass.vue
index 3ee8b91a..fffbd23a 100644
--- a/frontend/src/components/LiveClass.vue
+++ b/frontend/src/components/LiveClass.vue
@@ -107,7 +107,11 @@
v-model:reloadLiveClasses="liveClasses"
/>
-
+