Update Test.vue

This commit is contained in:
Alexandrina-Kuzeleva
2025-11-26 18:09:45 +03:00
parent 3108235521
commit ce603cac1e

View File

@@ -5,11 +5,12 @@
<p>Все пользователи: {{ usersList }}</p>
<p>Количество пользователей: {{ usersCount }}</p>
<p>logsResource: {{ logsResource?.data }}</p>
<p>Leaderboard: {{ leaderboard }}</p>
</div>
</template>
<script setup>
import { computed, onMounted } from 'vue'
import { computed, onMounted, ref } from 'vue'
import { usersStore } from '@/stores/user'
import { createResource } from 'frappe-ui'
@@ -30,8 +31,40 @@ const logsResource = createResource({
onError: (err) => console.error("Ошибка загрузки Energy Point Log:", err)
})
onMounted(() => {
allUsers.reload()
logsResource.reload()
const leaderboard = ref([])
function calculateLeaderboard() {
if (!logsResource.data) return
const pointsMap = {}
// Считаем сумму очков для каждого пользователя
logsResource.data.forEach(log => {
if (!pointsMap[log.user]) pointsMap[log.user] = 0
pointsMap[log.user] += log.points
})
// Создаем leaderboard
leaderboard.value = Object.keys(pointsMap).map(user => {
const u = usersList.value.find(x => x.name === user) || {
full_name: user,
username: user.split('@')[0],
roles: []
}
return {
user,
points: pointsMap[user],
full_name: u.full_name,
username: u.username,
roles: u.roles,
bonus: Math.min(Math.floor(pointsMap[user]/100), 10)
}
}).sort((a,b) => b.points - a.points)
}
onMounted(async () => {
await allUsers.reload()
await logsResource.reload()
calculateLeaderboard()
})
</script>