Update LeaderBoard.vue
This commit is contained in:
@@ -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 = {}
|
||||
|
||||
Reference in New Issue
Block a user