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