From 83ebfececf580602557a66bc6751172c754ea004 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Mon, 16 Jun 2025 15:13:30 +0530 Subject: [PATCH] feat: edit related courses from frontend --- frontend/components.d.ts | 1 + frontend/src/components/CourseOutline.vue | 17 ++++++++++---- frontend/src/components/CourseReviews.vue | 15 +++++++++--- frontend/src/components/RelatedCourses.vue | 27 ++++++++-------------- frontend/src/components/VideoBlock.vue | 4 ++-- frontend/src/pages/CourseDetail.vue | 22 +++++++----------- frontend/src/pages/CourseForm.vue | 27 ++++++++++++++++++++++ 7 files changed, 72 insertions(+), 41 deletions(-) diff --git a/frontend/components.d.ts b/frontend/components.d.ts index 2212eb18..09f63fdd 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -83,6 +83,7 @@ declare module 'vue' { QuizBlock: typeof import('./src/components/QuizBlock.vue')['default'] QuizInVideo: typeof import('./src/components/Modals/QuizInVideo.vue')['default'] Rating: typeof import('./src/components/Controls/Rating.vue')['default'] + RelatedCourses: typeof import('./src/components/RelatedCourses.vue')['default'] ReviewModal: typeof import('./src/components/Modals/ReviewModal.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] diff --git a/frontend/src/components/CourseOutline.vue b/frontend/src/components/CourseOutline.vue index ecbac74d..479c8aec 100644 --- a/frontend/src/components/CourseOutline.vue +++ b/frontend/src/components/CourseOutline.vue @@ -148,7 +148,7 @@ diff --git a/frontend/src/components/VideoBlock.vue b/frontend/src/components/VideoBlock.vue index 0465a1d3..f1d9e288 100644 --- a/frontend/src/components/VideoBlock.vue +++ b/frontend/src/components/VideoBlock.vue @@ -81,7 +81,7 @@ v-for="(quiz, index) in quizzes" :key="index" :style="getQuizMarkerStyle(quiz.time)" - class="absolute top-0 h-full w-0.5 bg-red-500" + class="absolute top-0 h-full w-2 bg-surface-amber-3" > @@ -303,7 +303,7 @@ const toggleFullscreen = () => { } const getQuizMarkerStyle = (time) => { - const percentage = ((time - 5) / Math.ceil(duration.value)) * 100 + const percentage = ((time - 7) / Math.ceil(duration.value)) * 100 return { left: `${percentage}%`, } diff --git a/frontend/src/pages/CourseDetail.vue b/frontend/src/pages/CourseDetail.vue index da16d37e..a128aa19 100644 --- a/frontend/src/pages/CourseDetail.vue +++ b/frontend/src/pages/CourseDetail.vue @@ -83,12 +83,12 @@ :avg_rating="course.data.rating" :membership="course.data.membership" /> - + @@ -109,10 +109,8 @@ import CourseReviews from '@/components/CourseReviews.vue' import UserAvatar from '@/components/UserAvatar.vue' import CourseInstructors from '@/components/CourseInstructors.vue' import RelatedCourses from '@/components/RelatedCourses.vue' -import { useRoute } from 'vue-router' const { brand } = sessionStore() -const route = useRoute() const props = defineProps({ courseName: { @@ -124,22 +122,18 @@ const props = defineProps({ const course = createResource({ url: 'lms.lms.utils.get_course_details', cache: ['course', props.courseName], - params: { - course: props.courseName, + makeParams() { + return { + course: props.courseName, + } }, auto: true, }) watch( - () => route.params.courseName, - (newCourseName, oldCourseName) => { - if (newCourseName && newCourseName !== oldCourseName) { - course.update({ - cache: ['course', newCourseName], - params: { course: newCourseName }, - }) - course.reload() - } + () => props.courseName, + () => { + course.reload() } ) diff --git a/frontend/src/pages/CourseForm.vue b/frontend/src/pages/CourseForm.vue index e9df2256..154856bb 100644 --- a/frontend/src/pages/CourseForm.vue +++ b/frontend/src/pages/CourseForm.vue @@ -199,6 +199,21 @@ ) " /> + +
@@ -319,6 +334,7 @@ const newTag = ref('') const { brand } = sessionStore() const router = useRouter() const instructors = ref([]) +const related_courses = ref([]) const app = getCurrentInstance() const { updateOnboardingStep } = useOnboarding('learning') const { $dialog } = app.appContext.config.globalProperties @@ -400,6 +416,9 @@ const courseCreationResource = createResource({ instructors: instructors.value.map((instructor) => ({ instructor: instructor, })), + related_courses: related_courses.value.map((course) => ({ + course: course, + })), ...values, }, } @@ -418,6 +437,9 @@ const courseEditResource = createResource({ instructors: instructors.value.map((instructor) => ({ instructor: instructor, })), + related_courses: related_courses.value.map((course) => ({ + course: course, + })), ...course, }, } @@ -440,6 +462,11 @@ const courseResource = createResource({ data.instructors.forEach((instructor) => { instructors.value.push(instructor.instructor) }) + } else if (key == 'related_courses') { + related_courses.value = [] + data.related_courses.forEach((course) => { + related_courses.value.push(course.course) + }) } else if (Object.hasOwn(course, key)) course[key] = data[key] }) let checkboxes = [