Skip to content

Commit 6ed1447

Browse files
#9 Automatic faction and alphabetically sorting inside factions on the home screen.
1 parent 0afbd7a commit 6ed1447

File tree

3 files changed

+64
-42
lines changed

3 files changed

+64
-42
lines changed

pages/credits.vue

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,23 @@
1313
<div>
1414
<h3 class="text-4xl font-semibold py-4">Development Branch</h3>
1515
<MembersSection>
16-
<template v-for="id in members.filter(m => m.faction.endsWith('development')).map(m => m.id).sort(nameSort)" :key="id">
16+
<template v-for="id in members.filter(m => m.faction.endsWith('development')).map(m => m.id).sort(alphabeticalSort)" :key="id">
1717
<MemberCard :id="id" :is-live="true" />
1818
</template>
1919
</MembersSection>
2020
</div>
2121
<div>
2222
<h3 class="text-4xl font-semibold py-4">Creative Branch</h3>
2323
<MembersSection>
24-
<template v-for="id in members.filter(m => m.faction.endsWith('creative')).map(m => m.id).sort(nameSort)" :key="id">
24+
<template v-for="id in members.filter(m => m.faction.endsWith('creative')).map(m => m.id).sort(alphabeticalSort)" :key="id">
2525
<MemberCard :id="id" :is-live="true" />
2626
</template>
2727
</MembersSection>
2828
</div>
2929
<div>
3030
<h3 class="text-4xl font-semibold py-4">Acting Branch</h3>
3131
<MembersSection>
32-
<template v-for="id in members.filter(m => m.faction.endsWith('acting')).map(m => m.id).sort(nameSort)" :key="id">
32+
<template v-for="id in members.filter(m => m.faction.endsWith('acting')).map(m => m.id).sort(alphabeticalSort)" :key="id">
3333
<MemberCard :id="id" :is-live="true" />
3434
</template>
3535
</MembersSection>
@@ -63,22 +63,10 @@ import MembersSection from "~/components/members/MembersSection.vue";
6363
import MemberCard from "~/components/members/MemberCard.vue";
6464
6565
import membersData from '~/assets/members.json';
66+
import alphabeticalSort from "~/utils/alphabeticalSort";
6667
6768
const members = ref(membersData.filter(m => m.faction.startsWith('unity_team')))
6869
69-
function nameSort(a: string, b: string): number {
70-
if (a < b) {
71-
return -1
72-
}
73-
74-
if (a > b) {
75-
return 1
76-
}
77-
78-
return 0
79-
}
80-
81-
8270
definePageMeta({
8371
name: 'Credits'
8472
});

pages/index.vue

Lines changed: 49 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,42 @@
11
<template>
2-
<main class="w-full py-8">
3-
<Title>Home</Title>
4-
5-
<h2 class="text-center text-5xl pb-3 font-semibold">Member</h2>
6-
7-
<div class="py-3">
8-
<h3 class="text-center text-4xl pb-3 text-(--text-live)">
9-
<span class="material-symbols-outlined">circle</span> Currently Live
10-
</h3>
11-
<MembersSection v-if="status !== 'pending'">
12-
<template v-for="id in members.filter(a => (live ?? []).includes(a.id)).map(a => a.id)" :key="id">
13-
<MemberCard :id="id" :isLive="true"></MemberCard>
14-
</template>
15-
</MembersSection>
16-
</div>
17-
<div class="py-3">
18-
<h3 class="text-center text-4xl pb-3">
19-
<span class="material-symbols-outlined">bedtime</span> Currently Offline
20-
</h3>
21-
<MembersSection v-if="status !== 'pending'">
22-
<template v-for="id in members.filter(a => !(live ?? []).includes(a.id)).map(a => a.id)" :key="id">
23-
<MemberCard :id="id"></MemberCard>
24-
</template>
25-
</MembersSection>
26-
</div>
27-
</main>
2+
<main class="w-full py-8">
3+
<Title>Home</Title>
4+
5+
<h2 class="text-center text-5xl pb-3 font-semibold">Member</h2>
6+
7+
<div class="py-3">
8+
<h3 class="text-center text-4xl pb-3 text-(--text-live)">
9+
<span class="material-symbols-outlined">circle</span> Currently Live
10+
</h3>
11+
12+
<MembersSection v-if="status !== 'pending'">
13+
<template v-for="factions in members.reduce(sortGroup, [[], [], []])" :key="factions">
14+
<template v-for="id in factions.filter(a => (live ?? []).includes(a.id)).map(a => a.id)" :key="id">
15+
<MemberCard :id="id" :isLive="true"></MemberCard>
16+
</template>
17+
</template>
18+
</MembersSection>
19+
</div>
20+
21+
<div class="py-3">
22+
<h3 class="text-center text-4xl pb-3">
23+
<span class="material-symbols-outlined">bedtime</span> Currently Offline
24+
</h3>
25+
26+
<MembersSection v-if="status !== 'pending'">
27+
<template v-for="factions in members.reduce(sortGroup, [[], [], []])" :key="factions">
28+
<template v-for="id in factions.filter(a => !(live ?? []).includes(a.id)).map(a => a.id).sort(alphabeticalSort)" :key="id">
29+
<MemberCard :id="id"></MemberCard>
30+
</template>
31+
</template>
32+
</MembersSection>
33+
</div>
34+
</main>
2835
</template>
2936

3037
<script setup lang="ts">
3138
import MemberCard from "~/components/members/MemberCard.vue";
39+
import alphabeticalSort from "~/utils/alphabeticalSort";
3240
3341
import membersData from '~/assets/members.json';
3442
@@ -43,4 +51,19 @@ const live = ref(check_live)
4351
watch(check_live, (newLive) => {
4452
live.value = newLive
4553
})
54+
55+
function sortGroup(group, member) {
56+
switch (member.faction) {
57+
case "emberhold":
58+
group[0].push(member);
59+
break;
60+
case "suncrest":
61+
group[1].push(member);
62+
break;
63+
case "fernfall":
64+
group[2].push(member);
65+
break;
66+
}
67+
return group;
68+
}
4669
</script>

utils/alphabeticalSort.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export default function (a: string, b: string): number {
2+
if (a < b) {
3+
return -1
4+
}
5+
6+
if (a > b) {
7+
return 1
8+
}
9+
10+
return 0
11+
}

0 commit comments

Comments
 (0)