From accf5562b9a27c7193f019b769232d2f17955b5b Mon Sep 17 00:00:00 2001 From: ClasWen Date: Fri, 26 Apr 2024 19:47:07 +0800 Subject: [PATCH] refactor other members --- src/pages/about.astro | 33 ++++--------------- src/{data/otherMembers.ts => store/member.ts} | 8 ++--- 2 files changed, 10 insertions(+), 31 deletions(-) rename src/{data/otherMembers.ts => store/member.ts} (88%) diff --git a/src/pages/about.astro b/src/pages/about.astro index 2dc12c1..5bc8989 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -2,39 +2,19 @@ import BaseLayout from "../layouts/BaseLayout.astro" import { computed } from "vue" import MemberCard from "../components/MemberCard.astro" -import otherMembers from "../data/otherMembers.ts" +import { type Member, otherMembers } from "../store/member.ts" -const members: { - memberId: string - alias: string - avatar: string - profile: string -}[] = await fetch("https://api.nbtca.space/v2/members").then((res) => { +const members: Member[] = await fetch("https://api.nbtca.space/v2/members").then(res => { return res.json() }) -otherMembers.forEach((member) => { - members.push(member) -}) - // memberId is like "3232323233", the second and third number is the year of the member const memberGroupByYear = computed(() => { const group = members // TODO delete the test member - .filter( - (member) => - member.memberId != "0000000000" && member.memberId != "2333333333" - ) + .filter(member => member.memberId != "0000000000" && member.memberId != "2333333333") .reduce( (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)) if (!acc[year]) { acc[year] = [] @@ -42,8 +22,9 @@ const memberGroupByYear = computed(() => { acc[year].push(cur) return acc }, - {} as Record + {} as Record ) + group["往届"] = otherMembers return group }) --- @@ -57,12 +38,12 @@ const memberGroupByYear = computed(() => { { Object.keys(memberGroupByYear.value) .sort((a, b) => parseInt(b) - parseInt(a)) - .map((year) => { + .map(year => { return (
{year}
- {memberGroupByYear.value[year].map((member) => ( + {memberGroupByYear.value[year].map(member => ( ))}
diff --git a/src/data/otherMembers.ts b/src/store/member.ts similarity index 88% rename from src/data/otherMembers.ts rename to src/store/member.ts index 8e1b030..cd438ae 100644 --- a/src/data/otherMembers.ts +++ b/src/store/member.ts @@ -1,11 +1,11 @@ -interface Member { +export interface Member { memberId: string alias: string avatar: string profile: string } -const otherMembers: Member[] = [ +export const otherMembers: Member[] = [ { memberId: undefined, alias: "鲁冠泽", @@ -36,6 +36,4 @@ const otherMembers: Member[] = [ profile: "算法记录。", avatar: "", }, -] - -export default otherMembers +] \ No newline at end of file