From c57cf0bb3fd8a0cfbc617b5777ab21102e5864bc Mon Sep 17 00:00:00 2001 From: TakenPt Date: Mon, 7 Apr 2025 09:18:16 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E8=AC=9B=E7=BF=92=E4=BC=9A=E5=8F=82?= =?UTF-8?q?=E5=8A=A0=E3=81=AE=E3=81=9F=E3=82=81=E3=81=AEOUTechs=E3=81=AEDI?= =?UTF-8?q?scord=E3=81=AE=E3=83=AA=E3=83=B3=E3=82=AF=E3=82=92=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/button/OUTechsDiscordJoinLink.astro | 15 +++++++++++++++ src/components/workshop/WorkshopSection.astro | 8 ++++++++ 2 files changed, 23 insertions(+) create mode 100644 src/components/common/button/OUTechsDiscordJoinLink.astro diff --git a/src/components/common/button/OUTechsDiscordJoinLink.astro b/src/components/common/button/OUTechsDiscordJoinLink.astro new file mode 100644 index 0000000..e3dd911 --- /dev/null +++ b/src/components/common/button/OUTechsDiscordJoinLink.astro @@ -0,0 +1,15 @@ +--- +import Icon from '@/components/common/Icon.astro' +import LinkButton from './LinkButton.astro' +--- + + + + + 講習会に参加 + + diff --git a/src/components/workshop/WorkshopSection.astro b/src/components/workshop/WorkshopSection.astro index b9b9f11..5287a4a 100644 --- a/src/components/workshop/WorkshopSection.astro +++ b/src/components/workshop/WorkshopSection.astro @@ -1,5 +1,6 @@ --- import Section from '@/components/common/Section.astro' +import OUTechsDiscordJoinLink from '@/components/common/button/OUTechsDiscordJoinLink.astro' ---
@@ -7,5 +8,12 @@ import Section from '@/components/common/Section.astro'

新歓イベントの一環として部員や外部講師による講習会を開催しています。様々な技術について未経験者向けに解説しながら実際に使えるようになることを目指します。講習会内で必要なソフトウェアのインストールから説明しますので、事前準備は必要ありません。

+
+ +
+

+ こちらから講習会の資料や連絡を受け取れます。 + どなたでも無料で参加できます。是非お気軽にご参加ください! +

From 8acdd9813e3dee92ee41353953d0d7481ea4f54a Mon Sep 17 00:00:00 2001 From: TakenPt Date: Mon, 7 Apr 2025 09:36:08 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E8=AC=9B=E7=BF=92=E4=BC=9A=E6=83=85?= =?UTF-8?q?=E5=A0=B1=E3=81=AB=E4=B8=BB=E5=82=AC=E5=9B=A3=E4=BD=93=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/@types/ou-techs-members.ts | 12 ++++++++ src/components/ou-techs/CircleList.astro | 2 +- src/components/ou-techs/CircleListItem.astro | 3 +- .../workshop/Workshop2025Section.astro | 27 +++++++++-------- src/components/workshop/WorkshopCard.astro | 29 ++++++++++++++++++- 5 files changed, 56 insertions(+), 17 deletions(-) create mode 100644 src/@types/ou-techs-members.ts diff --git a/src/@types/ou-techs-members.ts b/src/@types/ou-techs-members.ts new file mode 100644 index 0000000..0317da7 --- /dev/null +++ b/src/@types/ou-techs-members.ts @@ -0,0 +1,12 @@ +/** + * @description OUTechsに参加している団体を表す型 + */ +export type OUTechsCirclesName = + | 'OUCC' + | 'ToolBox' + | 'RAINBOU' + | '再履バス同好会 技術部' + | 'GDG on Campus Osaka' + | 'GGC' + | 'Wani Hackase' + | 'Robohan' diff --git a/src/components/ou-techs/CircleList.astro b/src/components/ou-techs/CircleList.astro index b2120e7..6c03aa1 100644 --- a/src/components/ou-techs/CircleList.astro +++ b/src/components/ou-techs/CircleList.astro @@ -10,7 +10,7 @@ import GgcLogo from '@/assets/ggc-logo.png' import WanihackaseLogo from '@/assets/wanihackase-logo.png' import RobohanLogo from '@/assets/robohan-logo.png' -const circles: ComponentProps[] = [ +export const circles: ComponentProps[] = [ { name: 'OUCC', description: diff --git a/src/components/ou-techs/CircleListItem.astro b/src/components/ou-techs/CircleListItem.astro index 5921fe8..465efd9 100644 --- a/src/components/ou-techs/CircleListItem.astro +++ b/src/components/ou-techs/CircleListItem.astro @@ -5,12 +5,13 @@ import GithubIcon from '@fortawesome/fontawesome-free/svgs/brands/github.svg' import XtwitterIcon from '@fortawesome/fontawesome-free/svgs/brands/x-twitter.svg' import InstagramIcon from '@fortawesome/fontawesome-free/svgs/brands/instagram.svg' import { Image } from 'astro:assets' +import type { OUTechsCirclesName } from '@/@types/ou-techs-members' type SvgComponent = typeof import('*.svg').default interface Props { logo: ImageMetadata | SvgComponent - name: string + name: OUTechsCirclesName description: string homepage: string github?: string diff --git a/src/components/workshop/Workshop2025Section.astro b/src/components/workshop/Workshop2025Section.astro index 4a47b24..6f9da81 100644 --- a/src/components/workshop/Workshop2025Section.astro +++ b/src/components/workshop/Workshop2025Section.astro @@ -1,14 +1,12 @@ --- import Section from '@/components/common/Section.astro' import WorkshopCard from './WorkshopCard.astro' +import type { ComponentProps } from 'astro/types' -export interface Item { +export interface Item + extends Omit, 'date'> { date: Date - title: string - description: string - place?: string } - export function date( month: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12, date: number, @@ -67,34 +65,39 @@ export const items: Item[] = [ export const items2: Item[] = [ { date: date(4, 17), - title: 'Python (1日目)', + title: 'Python', place: 'C301', + circleNames: ['Wani Hackase'], description: 'Pythonの基礎を学びます。PythonはAIやデータ分析に使用されます。', }, { date: date(4, 18), - title: 'HTML, CSS (1日目)', + title: 'HTML, CSS', place: 'C105', + circleNames: ['再履バス同好会 技術部'], description: 'HTML, CSSの基礎を学びます。HTML, CSSはwebページの作成に使用されます。', }, { date: date(4, 19), - title: 'ハードウェア入門 (1日目)', + title: 'ハードウェア入門', place: 'C104', + circleNames: ['ToolBox', 'Robohan'], description: 'ハードウェアの基礎を学びます。電子回路、センサ、 メカ機構などを扱います。', }, { date: date(4, 22), - title: 'TypeScript (1日目)', + title: 'TypeScript', + circleNames: ['GGC'], description: 'TypeScriptの基礎を学びます。TypeScriptはwebサイトの作成に使用されます。', }, { date: date(4, 23), - title: 'C/C++ (1日目)', + title: 'C/C++', + circleNames: ['RAINBOU'], description: 'C/C++の基礎を学びます。C/C++は組み込み用途やゲーム開発に使用されます。', }, @@ -128,10 +131,6 @@ const dateFormat = new Intl.DateTimeFormat('ja-JP', {
2025年度の他団体の講習会
-

- 2025年度の他団体による講習会について情報をまとめています。開始時刻や開催場所などの詳細や他の講習会については随時更新します。是非お気軽にご参加ください! -

-

各回1~3時間程度の予定となっています。途中退室も可能です。

    { items2.map(({ date, ...item }) => ( diff --git a/src/components/workshop/WorkshopCard.astro b/src/components/workshop/WorkshopCard.astro index b5b4bfa..39e9d39 100644 --- a/src/components/workshop/WorkshopCard.astro +++ b/src/components/workshop/WorkshopCard.astro @@ -1,19 +1,46 @@ --- import Icon from '@/components/common/Icon.astro' +import type { OUTechsCirclesName } from '@/@types/ou-techs-members' +import { circles } from '../ou-techs/CircleList.astro' interface Props { title: string date: string description: string place?: string + circleNames?: OUTechsCirclesName[] } -const { title, date, description, place } = Astro.props +const { title, date, description, place, circleNames } = Astro.props +const clubInfos = circles.filter((c) => circleNames?.includes(c.name)) ---
  • {title}

    +

    + { + circleNames && clubInfos ? ( + + + by + {clubInfos + .map((c) => ( + + {c.name} + + )) + .reduce((prev, curr) => [prev, ' & ', curr])} + + + ) : null + } +

    {date}