Skip to content

Commit 24029a1

Browse files
Merge pull request #6232 from christianbeeznest/fixes-updates90
Catalogue: Add natural courses order and proper filtering
2 parents 94ebd87 + 2313ab7 commit 24029a1

File tree

3 files changed

+28
-21
lines changed

3 files changed

+28
-21
lines changed

assets/vue/services/courseService.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,18 @@ export default {
66

77
/**
88
* @param {Object} searchParams
9+
* @param {boolean} disablePagination
910
* @returns {Promise<{totalItems, items}>}
1011
*/
11-
listAll: async (searchParams = {}) => await baseService.getCollection("/api/courses", searchParams),
12+
listAll: async (searchParams = {}, disablePagination = false) => {
13+
const params = { ...searchParams }
14+
15+
if (disablePagination) {
16+
params.pagination = false
17+
}
18+
19+
return await baseService.getCollection("/api/courses", params)
20+
},
1221

1322
/**
1423
* @param {number} cid

assets/vue/views/course/CatalogueCourses.vue

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
<div class="flex flex-wrap justify-between items-center mb-6 gap-4">
44
<div>
55
<strong>{{ $t("Total number of courses") }}:</strong>
6-
{{ filteredVisibleCourses.length }}<br />
6+
{{ totalVisibleCourses }}<br />
77
<strong>{{ $t("Matching courses") }}:</strong>
8-
{{ filteredVisibleCourses.length }}
8+
{{ totalVisibleCourses }}
99
</div>
1010
<div class="flex gap-3">
1111
<Button
@@ -101,7 +101,7 @@ const onUserSubscribed = ({ courseId, newUser }) => {
101101
const load = async () => {
102102
status.value = true
103103
try {
104-
const { items } = await courseService.listAll()
104+
const { items } = await courseService.listAll({}, true)
105105
courses.value = items.map((course) => ({
106106
...course,
107107
courseLanguage: findByIsoCode(course.courseLanguage)?.originalName || course.courseLanguage,
@@ -159,28 +159,25 @@ const filteredCourses = computed(() => {
159159
)
160160
})
161161
162-
const filteredVisibleCourses = computed(() => {
162+
const visibleCoursesBase = computed(() => {
163163
const hidePrivate = platformConfigStore.getSetting("platform.course_catalog_hide_private") === "true"
164164
165-
return filteredCourses.value.filter((course) => {
166-
const visibility = Number(course.visibility)
167-
168-
if (visibility === 0 || visibility === 4) {
169-
return false
170-
}
171-
172-
if (visibility === 1 && hidePrivate) {
173-
return false
174-
}
175-
176-
return true
177-
})
165+
return filteredCourses.value
166+
.filter((course) => {
167+
const visibility = Number(course.visibility)
168+
if (visibility === 0 || visibility === 4) return false
169+
if (visibility === 1 && hidePrivate) return false
170+
return true
171+
})
172+
.sort((a, b) => a.title.localeCompare(b.title, undefined, { numeric: true, sensitivity: "base" }))
178173
})
179174
180175
const visibleCourses = computed(() => {
181-
return filteredVisibleCourses.value.slice(0, visibleCount.value)
176+
return visibleCoursesBase.value.slice(0, visibleCount.value)
182177
})
183178
179+
const totalVisibleCourses = computed(() => visibleCoursesBase.value.length)
180+
184181
const handleScroll = () => {
185182
if (loadingMore.value) return
186183
@@ -190,7 +187,7 @@ const handleScroll = () => {
190187
const fullHeight = document.documentElement.scrollHeight
191188
192189
if (scrollTop + viewportHeight + threshold >= fullHeight) {
193-
if (visibleCount.value < filteredCourses.value.length) {
190+
if (visibleCount.value < visibleCoursesBase.value.length) {
194191
loadingMore.value = true
195192
setTimeout(() => {
196193
visibleCount.value += rowsPerScroll

src/CoreBundle/Entity/Course.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@
4747
filters: [
4848
'course.sticky_boolean_filter',
4949
],
50-
security: "is_granted('ROLE_USER')"
50+
paginationClientEnabled: true,
51+
security: "is_granted('ROLE_USER')",
5152
)]
5253
#[ORM\Table(name: 'course')]
5354
#[ORM\Index(columns: ['sticky'], name: 'idx_course_sticky')]

0 commit comments

Comments
 (0)