You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.6 KiB
74 lines
1.6 KiB
<script>
|
|
import CourseCard from "../course/CourseCard.vue"
|
|
import { ref } from "vue"
|
|
import isEmpty from "lodash/isEmpty"
|
|
|
|
export default {
|
|
name: "SessionCard",
|
|
components: {
|
|
CourseCard,
|
|
},
|
|
props: {
|
|
session: Object,
|
|
},
|
|
setup(props) {
|
|
const courses = ref([])
|
|
|
|
let showAllCourses = false
|
|
|
|
if (!isEmpty(props.session.users) && !isEmpty(props.session.users.edges)) {
|
|
props.session.users.edges.forEach(({ node }) => {
|
|
// User is Session::SESSION_ADMIN
|
|
if (4 === node.relationType) {
|
|
showAllCourses = true
|
|
|
|
}
|
|
})
|
|
}
|
|
|
|
if (showAllCourses) {
|
|
courses.value = props.session.courses.edges.map(({ node }) => {
|
|
return node.course
|
|
})
|
|
} else {
|
|
if (!isEmpty(props.session.courses) && !isEmpty(props.session.courses.edges)) {
|
|
props.session.sessionRelCourseRelUsers.edges.map(({ node }) => {
|
|
const courseExists =
|
|
props.session.courses.edges.findIndex((courseItem) => courseItem.node.course._id === node.course._id) >= 0
|
|
|
|
if (courseExists) {
|
|
courses.value.push(node.course)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
return {
|
|
courses,
|
|
}
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<div class="text-h6 mt-4">{{ session.title }}</div>
|
|
<div class="grid gap-4 grid-cols-1 md:grid-cols-2 lg:grid-cols-4">
|
|
<div
|
|
v-for="(course, idx) in courses"
|
|
:key="idx"
|
|
style="max-width: 540px"
|
|
>
|
|
<CourseCard
|
|
:course="course"
|
|
:session-id="session._id"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<style scoped>
|
|
.my-card {
|
|
width: 100%;
|
|
max-width: 370px;
|
|
}
|
|
</style>
|
|
|