mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-08 03:20:12 +08:00
feat: load leadboard data in frontend
This commit is contained in:
1 parent
1a5655d7ce
commit
a90b0a3c83
1 file changed
+29
-2
@@ -1,6 +1,33 @@
|
|||||||
|
<script setup>
|
||||||
|
import { ref, onMounted } from 'vue'
|
||||||
|
import { useToast } from 'vue-toastification'
|
||||||
|
import api from '../utils/api'
|
||||||
|
|
||||||
|
const leaderboard = ref([])
|
||||||
|
|
||||||
|
const toast = useToast()
|
||||||
|
async function getLeaderboard() {
|
||||||
|
try {
|
||||||
|
const res = await api.get('/leaderboard')
|
||||||
|
leaderboard.value = res.data
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err)
|
||||||
|
toast.error('讀取排行榜失敗')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
await getLeaderboard()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<h1>Leaderboard</h1>
|
<h1 class="text-text-primary">Leaderboard</h1>
|
||||||
<p>Coming soon...</p>
|
<div>
|
||||||
|
<div class="text-text" v-for="user in leaderboard" :key="user.username">
|
||||||
|
{{ user.username }}: {{ user.score }} {{ user.completedQuests }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
Reference in new issue
Block a user