refactor other members

This commit is contained in:
ClasWen 2024-04-26 19:47:07 +08:00
parent 7ec1eb0e8f
commit accf5562b9
2 changed files with 10 additions and 31 deletions

View file

@ -2,39 +2,19 @@
import BaseLayout from "../layouts/BaseLayout.astro" import BaseLayout from "../layouts/BaseLayout.astro"
import { computed } from "vue" import { computed } from "vue"
import MemberCard from "../components/MemberCard.astro" import MemberCard from "../components/MemberCard.astro"
import otherMembers from "../data/otherMembers.ts" import { type Member, otherMembers } from "../store/member.ts"
const members: { const members: Member[] = await fetch("https://api.nbtca.space/v2/members").then(res => {
memberId: string
alias: string
avatar: string
profile: string
}[] = await fetch("https://api.nbtca.space/v2/members").then((res) => {
return res.json() return res.json()
}) })
otherMembers.forEach((member) => {
members.push(member)
})
// memberId is like "3232323233", the second and third number is the year of the member // memberId is like "3232323233", the second and third number is the year of the member
const memberGroupByYear = computed(() => { const memberGroupByYear = computed(() => {
const group = members const group = members
// TODO delete the test member // TODO delete the test member
.filter( .filter(member => member.memberId != "0000000000" && member.memberId != "2333333333")
(member) =>
member.memberId != "0000000000" && member.memberId != "2333333333"
)
.reduce( .reduce(
(acc, cur) => { (acc, cur) => {
if (!cur.memberId) {
const year = "往届"
if (!acc[year]) {
acc[year] = []
}
acc[year].push(cur)
return acc
}
const year = parseInt("20" + cur.memberId.slice(1, 3)) const year = parseInt("20" + cur.memberId.slice(1, 3))
if (!acc[year]) { if (!acc[year]) {
acc[year] = [] acc[year] = []
@ -42,8 +22,9 @@ const memberGroupByYear = computed(() => {
acc[year].push(cur) acc[year].push(cur)
return acc return acc
}, },
{} as Record<string, typeof members> {} as Record<string, Member[]>
) )
group["往届"] = otherMembers
return group return group
}) })
--- ---
@ -57,12 +38,12 @@ const memberGroupByYear = computed(() => {
{ {
Object.keys(memberGroupByYear.value) Object.keys(memberGroupByYear.value)
.sort((a, b) => parseInt(b) - parseInt(a)) .sort((a, b) => parseInt(b) - parseInt(a))
.map((year) => { .map(year => {
return ( return (
<div class="py-4 first:pt-2"> <div class="py-4 first:pt-2">
<div class="text-[24px] font-bold pb-2">{year}</div> <div class="text-[24px] font-bold pb-2">{year}</div>
<div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-x-6 gap-y-8"> <div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-x-6 gap-y-8">
{memberGroupByYear.value[year].map((member) => ( {memberGroupByYear.value[year].map(member => (
<MemberCard member={member} /> <MemberCard member={member} />
))} ))}
</div> </div>

View file

@ -1,11 +1,11 @@
interface Member { export interface Member {
memberId: string memberId: string
alias: string alias: string
avatar: string avatar: string
profile: string profile: string
} }
const otherMembers: Member[] = [ export const otherMembers: Member[] = [
{ {
memberId: undefined, memberId: undefined,
alias: "鲁冠泽", alias: "鲁冠泽",
@ -37,5 +37,3 @@ const otherMembers: Member[] = [
avatar: "", avatar: "",
}, },
] ]
export default otherMembers