From 545ac73e0e0da3e59f2e9157dccf2dbcc77aa063 Mon Sep 17 00:00:00 2001 From: Kenryu Shibata Date: Wed, 9 Oct 2024 01:40:36 +0900 Subject: [PATCH] Updated and added pages --- README.md | 1 + assets/achievements.json | 51 +++++ assets/databases/news.db | Bin 8192 -> 16384 bytes assets/siteinfo.json | 2 +- assets/styles/app.css | 1 - assets/styles/color-pallet.css | 1 + assets/styles/markdown.css | 40 +++- assets/styles/page.css | 62 +++++ components/DropDown.vue | 4 - components/LinkCard.vue | 59 ++++- components/PageTop.vue | 2 +- components/PankuzuList.vue | 42 ++++ components/QAndABox.vue | 34 +++ components/TheFooter.vue | 25 +- components/TheHeader.vue | 16 +- composables/windowDimensions.ts | 2 +- error.vue | 6 +- eslint.config.js | 2 +- pages/about/achievements.vue | 173 +++++++++++++- .../for-middle-schoolers-and-new-comers.vue | 129 +++++++++++ pages/about/gallery.vue | 215 +++++++++++++++++- pages/about/index.vue | 66 +++++- pages/about/sera.vue | 86 ++++++- pages/index.vue | 75 ++++-- pages/news/index.vue | 15 +- pages/projects/cansat.vue | 107 ++++++++- pages/projects/edu-robot.vue | 3 - pages/projects/education.vue | 100 ++++++++ pages/projects/index.vue | 175 +++----------- pages/projects/kosen-x.vue | 86 ++++++- pages/projects/rocket.vue | 143 ++++++------ server/api/getGalleryImages.ts | 51 +++++ utils/dropDown.ts | 2 - utils/galleryEntry.ts | 18 ++ utils/generateSeoMeta.ts | 33 ++- utils/linkCard.ts | 2 +- utils/qAndABox.ts | 14 ++ 37 files changed, 1552 insertions(+), 291 deletions(-) create mode 100644 assets/achievements.json create mode 100644 assets/styles/page.css create mode 100644 components/PankuzuList.vue create mode 100644 components/QAndABox.vue create mode 100644 pages/about/for-middle-schoolers-and-new-comers.vue delete mode 100644 pages/projects/edu-robot.vue create mode 100644 pages/projects/education.vue create mode 100644 server/api/getGalleryImages.ts create mode 100644 utils/galleryEntry.ts create mode 100644 utils/qAndABox.ts diff --git a/README.md b/README.md index e18f74c..b1e4512 100644 --- a/README.md +++ b/README.md @@ -29,5 +29,6 @@ npm run generate # 静的サイトを生成 * `assets/databases/news.db`: ニュースを管理しているsqliteデータベース * `assets/siteinfo.json`: 部長と顧問の名前、コピーライトの年、メンバーの学科・学年ごとの人数、など更新があまりされない情報を集めたファイル、`import`して使う +* `assets/achievements.json`: 活動実績に表示される参加・受賞歴を集めたファイル * `docs/`: `typedoc`で生成されたドキュメンテーションが入っている、`python -m http.server`などで`localhost`にホストして読む * `dist/`, `.output/`: `npm run generate`で生成された静的ウェブサイト本体、プロダクションレディーな状態 `dist/`は`.output/`へのリンクである diff --git a/assets/achievements.json b/assets/achievements.json new file mode 100644 index 0000000..fffc262 --- /dev/null +++ b/assets/achievements.json @@ -0,0 +1,51 @@ +{ + "cansatKousien": [ + "缶サットチャレンジ岐阜2016 技術賞受賞", + "缶サット甲子園2017 岐阜大会 出場", + "缶サット甲子園2018 岐阜大会 出場", + "缶サット甲子園2019 岐阜大会 優勝", + "缶サット甲子園2019 全国大会 土岐賞(技術賞)受賞", + "缶サット甲子園2020 岐阜大会 優勝", + "缶サット甲子園2020 全国大会 土岐賞(技術賞)受賞", + "缶サット甲子園2021 岐阜大会 優勝", + "缶サット甲子園2021 全国大会 優勝" + ], + "tanegasimaRocketContest": { + "airtime": [ + "第13回種子島ロケットコンテスト ロケット部門–滞空・定点回収 優勝", + "第16回種子島ロケットコンテスト ロケット部門–滞空・定点回収 書類審査通過(大会中止)" + ], + "altitude": [ + "第14回種子島ロケットコンテスト ロケット部門–高度 書類審査通過 本戦出場", + "第15回種子島ロケットコンテスト ロケット部門–高度 書類審査通過 本戦出場" + ], + "cansat": [ + "第14回種子島ロケットコンテスト ペイロード部門-CanSat 書類審査通過 本戦出場", + "第15回種子島ロケットコンテスト ペイロード部門-CanSat 書類審査通過 本戦出場", + "第16回種子島ロケットコンテスト ペイロード部門-CanSat 書類審査通過(大会中止)" + ] + }, + "satelliteDesignContest": [ + "第25回衛星設計コンテスト 参加(一次審査不通過)", + "第27回衛星設計コンテスト 参加(一次審査不通過)" + ], + "nationalTechincalCollegeSpaceContest": [ + "2020年度プレ大会 敢闘賞", + "2021年度大会 優良賞" + ], + "other": [ + "平成28年度 宇宙工学講座(8名参加)", + "高専スペースキャンプ2016(4名参加)", + "平成29年度 宇宙工学講座(2名参加)", + "高専スペースキャンプ2017(4名参加)", + "平成30年度 宇宙工学講座(4名参加)", + "高専スペースキャンプ2018(3名参加)", + "令和元年度 宇宙工学講座(4名参加)", + "航空宇宙フェア2019 出展", + "高専スペースキャンプ2019(7名参加)", + "令和2年度 宇宙工学講座(2名参加)", + "令和3年度 宇宙工学講座(4名参加)", + "令和3年度高専祭専門店出展", + "2021年11月14日 岐阜サイエンスフェア(モレラ岐阜)" + ] +} diff --git a/assets/databases/news.db b/assets/databases/news.db index 311138190d1cc3de3950d78418be27db69e38348..d613ea4a926f1c2e83f1b810ca9f9251d9c48ac5 100644 GIT binary patch literal 16384 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 h1 { color: var(--neptune1); font-size: 2.5em; @@ -66,12 +76,36 @@ } } -.markdown > p > em, -.markdown > p > strong { +.markdown > span { + width: fit-content; + margin: auto; + position: relative; + & > p > a > img { + width: 32rem; + height: auto; + } + & > p > a::after { + position: absolute; + content: "Youtube →"; + display: flex; + height: 2rem; + bottom: 0.26rem; + right: 0; + background: #ff0000; + color: white; + padding: 0.25rem; + font-weight: bolder; + font-style: oblique; + place-items: center; + } +} + +.markdown em, +.markdown strong { color: var(--neptune1); } -.markdown > p > em:has(strong) { +.markdown em > strong { color: var(--sun2); } diff --git a/assets/styles/page.css b/assets/styles/page.css new file mode 100644 index 0000000..1c98cb9 --- /dev/null +++ b/assets/styles/page.css @@ -0,0 +1,62 @@ +main { + display: grid; + width: 50%; + justify-self: center; +} + +section { + display: block; +} + +img { + width: 20rem; + height: auto; +} + +p { + margin: 0.5rem 0; +} + +.float-right { + float: right; + margin-left: 2rem; +} + +.float-left { + float: left; + margin-right: 2rem; +} + +a, +h2 { + color: var(--neptune1); +} + +a:visited { + color: var(--neptune1); +} + +h3 { + color: var(--neptune2); +} + +h4 { + color: var(--martian); +} + +strong { + color: var(--sun4); +} + +@media screen and (max-width: 1024px) { + main { + width: 90%; + margin: 1rem; + } + section { + display: inherit; + } + img { + margin: auto !important; + } +} diff --git a/components/DropDown.vue b/components/DropDown.vue index 74957ea..3e189ef 100644 --- a/components/DropDown.vue +++ b/components/DropDown.vue @@ -48,10 +48,6 @@ const handleFocusOutEvent = () => { mouseover: handleMouseHoverEvent, mouseleave: handleMouseHoverEvent, }" - v-if=" - (showInMobile === true && viewPortType !== ViewPortType.DESKTOP) || - (showInMobile === false && viewPortType !== ViewPortType.MOBILE) - " >