Update LeaderBoard.vue

This commit is contained in:
Alexandrina-Kuzeleva
2025-11-25 15:34:35 +03:00
parent 8fa3d8ba4a
commit c6d05111cc

View File

@@ -185,21 +185,27 @@ watchEffect(() => {
if (currentUserRole.value && !loading.value) selectedRole.value = currentUserRole.value
})
// Получаем роли пользователя
// Получаем роли пользователя безопасно
function getRolesByEmail(email) {
return userResource.data?.find(u => u.name === email)?.roles || []
if (!userResource.data || !Array.isArray(userResource.data)) return []
const u = userResource.data.find(u => u.name === email)
return u?.roles || []
}
// Подсчёт по ролям для табов
const countByRole = (role) => {
return userResource.data?.filter(u => u.roles.includes(role)).length || 0
if (!userResource.data || !Array.isArray(userResource.data)) return 0
return userResource.data.filter(u => u.roles.includes(role)).length
}
// Фильтруем leaderboard по выбранной роли
const filteredLeaderboard = computed(() =>
leaderboard.value.map(u => ({ ...u, roles: getRolesByEmail(u.user) }))
.filter(u => u.roles.includes(selectedRole.value))
)
const filteredLeaderboard = computed(() => {
if (!userResource.data || !Array.isArray(userResource.data)) return []
return leaderboard.value
.map(u => ({ ...u, roles: getRolesByEmail(u.user) }))
.filter(u => u.roles.includes(selectedRole.value))
})
const currentUserInGroup = computed(() => currentUserRole.value === selectedRole.value)
const currentUserGroupPoints = computed(() => {
@@ -249,6 +255,7 @@ async function loadData() {
loading.value = true
try {
await userResource.fetch()
const logsResponse = await logsResource.fetch()
const pointsMap = {}