From 96028c9f423f17d2bdc13a6a329beb4320de0950 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Tue, 25 Jun 2024 18:43:28 +0530 Subject: [PATCH] feat: instructors in courses and batches --- frontend/src/components/BatchCard.vue | 41 ++- frontend/src/components/BatchOverlay.vue | 4 +- .../src/components/Controls/MultiSelect.vue | 255 ++++++++++++++++++ frontend/src/components/CourseCardOverlay.vue | 4 +- frontend/src/pages/Batch.vue | 18 +- frontend/src/pages/BatchCreation.vue | 129 +++++---- frontend/src/pages/BatchDetail.vue | 16 ++ frontend/src/pages/Batches.vue | 2 +- frontend/src/pages/CreateCourse.vue | 26 +- lms/lms/doctype/lms_batch/lms_batch.json | 19 +- lms/lms/doctype/lms_course/lms_course.json | 5 +- lms/lms/utils.py | 5 +- 12 files changed, 449 insertions(+), 75 deletions(-) create mode 100644 frontend/src/components/Controls/MultiSelect.vue diff --git a/frontend/src/components/BatchCard.vue b/frontend/src/components/BatchCard.vue index 65b3ae16..ad601ffc 100644 --- a/frontend/src/components/BatchCard.vue +++ b/frontend/src/components/BatchCard.vue @@ -1,6 +1,6 @@ @@ -56,6 +70,8 @@ import { Badge } from 'frappe-ui' import { formatTime } from '../utils' import { Clock, BookOpen, Globe } from 'lucide-vue-next' import DateRange from '@/components/Common/DateRange.vue' +import CourseInstructors from '@/components/CourseInstructors.vue' +import UserAvatar from '@/components/UserAvatar.vue' const props = defineProps({ batch: { @@ -75,4 +91,17 @@ const props = defineProps({ margin: 0.25rem 0 1.25rem; line-height: 1.5; } + +.avatar-group { + display: inline-flex; + align-items: center; +} + +.avatar-group .avatar { + transition: margin 0.1s ease-in-out; +} + +.avatar-group.overlap .avatar + .avatar { + margin-left: calc(-8px); +} diff --git a/frontend/src/components/BatchOverlay.vue b/frontend/src/components/BatchOverlay.vue index 3f9ce617..c0a73115 100644 --- a/frontend/src/components/BatchOverlay.vue +++ b/frontend/src/components/BatchOverlay.vue @@ -5,7 +5,9 @@ theme="green" class="self-start mb-2 float-right" > - {{ seats_left }} {{ __('Seats Left') }}{{ __('Seat Left') }} + {{ seats_left }} + {{ __('Seats Left') }} + {{ __('Seat Left') }} +
+ +
+ +
+ + + + + + +
+
+ +
+ + + diff --git a/frontend/src/components/CourseCardOverlay.vue b/frontend/src/components/CourseCardOverlay.vue index 47fd88b5..33157b85 100644 --- a/frontend/src/components/CourseCardOverlay.vue +++ b/frontend/src/components/CourseCardOverlay.vue @@ -16,10 +16,10 @@ params: { courseName: course.name, chapterNumber: course.data.current_lesson - ? course.data.current_lesson.split('.')[0] + ? course.data.current_lesson.split('-')[0] : 1, lessonNumber: course.data.current_lesson - ? course.data.current_lesson.split('.')[1] + ? course.data.current_lesson.split('-')[1] : 1, }, }" diff --git a/frontend/src/pages/Batch.vue b/frontend/src/pages/Batch.vue index b9868a2c..5f3b0b0d 100644 --- a/frontend/src/pages/Batch.vue +++ b/frontend/src/pages/Batch.vue @@ -80,8 +80,22 @@
{{ batch.data.title }}
-
+
+
+
+ +
+ +
import { Breadcrumbs, Button, createResource, Tabs, Badge } from 'frappe-ui' import { computed, inject, ref } from 'vue' +import CourseInstructors from '@/components/CourseInstructors.vue' +import UserAvatar from '@/components/UserAvatar.vue' import { Clock, LayoutDashboard, diff --git a/frontend/src/pages/BatchCreation.vue b/frontend/src/pages/BatchCreation.vue index 6b954de1..2ac16ac9 100644 --- a/frontend/src/pages/BatchCreation.vue +++ b/frontend/src/pages/BatchCreation.vue @@ -8,8 +8,8 @@ {{ __('Save') }} -
-
+
+
{{ __('Details') }}
@@ -20,54 +20,13 @@ :label="__('Title')" class="mb-4" /> +
+
-
-
- - - -
-
- {{ __('Meta Image') }} -
-
-
- -
-
- - {{ batch.image.file_name }} - - - {{ getFileSize(batch.image.file_size) }} - -
- -
-
-
+
+
+ + + +
+
+ {{ __('Meta Image') }} +
+
+
+ +
+
+ + {{ batch.image.file_name }} + + + {{ getFileSize(batch.image.file_size) }} + +
+ +
+
+
+ +
+
-
+
{{ __('Date and Time') }}
@@ -137,7 +142,7 @@
-
+
{{ __('Settings') }}
@@ -182,7 +187,7 @@
-
+
{{ __('Payment') }}
@@ -210,7 +215,14 @@