Skip to content

Commit 50ab832

Browse files
add dashboard navigation
1 parent 6991815 commit 50ab832

File tree

2 files changed

+65
-9
lines changed

2 files changed

+65
-9
lines changed

app/pages/home/index.vue

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,77 @@
11
<template>
22
<div class="min-h-screen text-label-primary">
3-
<div class="container mx-auto px-4 py-4">
4-
<h1>Home</h1>
3+
<div class="container mx-auto px-4 py-8">
4+
<div class="max-w-4xl mx-auto">
5+
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
6+
<NuxtLink
7+
to="/karma"
8+
class="group bg-fill-secondary p-6 rounded-xl border border-separator-primary hover:border-accent-primary transition-all duration-200 cursor-pointer"
9+
>
10+
<div class="flex flex-col gap-4">
11+
<div
12+
class="w-12 h-12 rounded-lg bg-accent-primary/10 flex items-center justify-center group-hover:bg-accent-primary/20 transition-all duration-200"
13+
>
14+
<Icon
15+
icon="mdi:chart-line"
16+
class="text-2xl text-accent-primary"
17+
/>
18+
</div>
19+
<div>
20+
<h2
21+
class="text-xl font-bold text-label-primary mb-2"
22+
>
23+
Подивитися карму людей
24+
</h2>
25+
<p class="text-sm text-label-secondary">
26+
Переглянути рейтинг та карму всіх учасників
27+
спільноти
28+
</p>
29+
</div>
30+
</div>
31+
</NuxtLink>
32+
33+
<NuxtLink
34+
to="/design/buttons"
35+
class="group bg-fill-secondary p-6 rounded-xl border border-separator-primary hover:border-accent-primary transition-all duration-200 cursor-pointer"
36+
>
37+
<div class="flex flex-col gap-4">
38+
<div
39+
class="w-12 h-12 rounded-lg bg-accent-primary/10 flex items-center justify-center group-hover:bg-accent-primary/20 transition-all duration-200"
40+
>
41+
<Icon
42+
icon="mdi:palette"
43+
class="text-2xl text-accent-primary"
44+
/>
45+
</div>
46+
<div>
47+
<h2
48+
class="text-xl font-bold text-label-primary mb-2"
49+
>
50+
Подивитися на дизайн систему
51+
</h2>
52+
<p class="text-sm text-label-secondary">
53+
Вивчити компоненти та стилі дизайн системи
54+
</p>
55+
</div>
56+
</div>
57+
</NuxtLink>
58+
</div>
59+
</div>
560
</div>
661
</div>
762
</template>
863

964
<script setup lang="ts">
1065
import { definePageMeta } from '#imports'
66+
import { onMounted } from 'vue'
67+
import { trackEvent } from '~~/app/utils/track'
68+
import { Icon } from '@iconify/vue'
1169
1270
definePageMeta({
1371
layout: 'default',
1472
})
73+
74+
onMounted(() => {
75+
trackEvent('page_view', { page: 'home' })
76+
})
1577
</script>

server/core/discord/karma.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,6 @@ export class KarmaService {
144144
*/
145145
async getAllMembersWithKarma() {
146146
try {
147-
// Get karma aggregation
148147
const karmaAggregation = await this.db.collection('karma_events').aggregate([
149148
{
150149
$group: {
@@ -154,21 +153,17 @@ export class KarmaService {
154153
}
155154
]).toArray()
156155

157-
// Map for quick lookup: discordId -> karma
158156
const karmaMap: Record<string, number> = {}
159157
for (const k of karmaAggregation) {
160158
karmaMap[k._id] = k.total_karma
161159
}
162160

163-
// Get all discord members
164161
const members = await this.db.collection('discord_members').find({}).toArray()
165162

166-
// Compose final list, including avatar URL
167163
const membersWithKarma = members.map(member => {
168164
let avatarUrl: string | null = null
169165
if (member.avatarFilename) {
170-
// Build URL matching the style used in avatar.png.get.ts route
171-
avatarUrl = `/api/user/discord:${member.discord_id}/avatar.png`
166+
avatarUrl = `/api/user/discord:${member.discordId}/avatar.png`
172167
}
173168
return {
174169
discord_id: member.discord_id,
@@ -179,7 +174,6 @@ export class KarmaService {
179174
}
180175
})
181176

182-
// Sort by karma descending
183177
membersWithKarma.sort((a, b) => b.karma - a.karma)
184178

185179
return {

0 commit comments

Comments
 (0)