Compare commits
4 Commits
d865938430
...
545ac73e0e
| Author | SHA1 | Date | |
|---|---|---|---|
| 545ac73e0e | |||
| 780905fb4e | |||
| 9b35e48e68 | |||
| f5b4e9c6ad |
@@ -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/`へのリンクである
|
||||
|
||||
51
assets/achievements.json
Normal file
@@ -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日 岐阜サイエンスフェア(モレラ岐阜)"
|
||||
]
|
||||
}
|
||||
BIN
assets/databases/gallery.db
Normal file
@@ -18,6 +18,6 @@
|
||||
"fourth": 1,
|
||||
"fifth": 1
|
||||
},
|
||||
"advisorName": "佐藤敦(さとうあつい)",
|
||||
"advisorName": "佐藤 敦(さとう あつし)",
|
||||
"headOfClub": "5年機械工学科 瀨 仁一郎"
|
||||
}
|
||||
|
||||
@@ -27,7 +27,6 @@ main {
|
||||
margin: var(--main-margin-top-bottom) var(--main-margin-left-right);
|
||||
}
|
||||
|
||||
|
||||
html {
|
||||
font-size: 16px;
|
||||
scrollbar-width: none;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
--astronaut: #214559;
|
||||
--comet2: #6e6970;
|
||||
--deep-space: #000001;
|
||||
--martian: #136c51;
|
||||
--martian-moon: #c3e9d3;
|
||||
--meteorite: #4a3b6a;
|
||||
--moonlight: #f6eed5;
|
||||
|
||||
@@ -11,6 +11,16 @@
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.markdown .float-left {
|
||||
float: left;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
.markdown .float-right {
|
||||
float: right;
|
||||
margin-left: 1rem;
|
||||
}
|
||||
|
||||
.markdown > 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);
|
||||
}
|
||||
|
||||
|
||||
62
assets/styles/page.css
Normal file
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -48,10 +48,6 @@ const handleFocusOutEvent = () => {
|
||||
mouseover: handleMouseHoverEvent,
|
||||
mouseleave: handleMouseHoverEvent,
|
||||
}"
|
||||
v-if="
|
||||
(showInMobile === true && viewPortType !== ViewPortType.DESKTOP) ||
|
||||
(showInMobile === false && viewPortType !== ViewPortType.MOBILE)
|
||||
"
|
||||
>
|
||||
<button
|
||||
class="dropdown-label"
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
<script setup lang="ts">
|
||||
import type { LinkCardProperty } from '~/utils/linkCard';
|
||||
import type { LinkCardProperty } from "~/utils/linkCard";
|
||||
const property = defineProps<LinkCardProperty>();
|
||||
const doesNotHaveImage = ref<boolean>(property.imagePath === undefined);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<NuxtLink :to="property.link">
|
||||
<div class="image" v-if="property.imagePath" :style="{ backgroundImage: `url(${property.imagePath})` }"></div>
|
||||
<NuxtLink :to="property.link" :class="{ withoutImage: doesNotHaveImage }">
|
||||
<div
|
||||
class="image"
|
||||
v-if="property.imagePath"
|
||||
:style="{ backgroundImage: `url(${property.imagePath})` }"
|
||||
></div>
|
||||
<h2>{{ property.title }}</h2>
|
||||
<p>{{ property.description }}</p>
|
||||
</NuxtLink>
|
||||
@@ -29,7 +34,12 @@ a:hover {
|
||||
}
|
||||
|
||||
a > * {
|
||||
margin: 2rem;
|
||||
margin: 0 2rem;
|
||||
}
|
||||
|
||||
.withoutImage {
|
||||
grid: 1fr 1.5fr / 1fr;
|
||||
height: 15rem;
|
||||
}
|
||||
|
||||
.image {
|
||||
@@ -38,6 +48,8 @@ a > * {
|
||||
background-size: cover;
|
||||
width: 18rem;
|
||||
height: 12rem;
|
||||
margin-top: 1.75rem;
|
||||
margin-bottom: 0.75rem;
|
||||
place-self: center;
|
||||
}
|
||||
|
||||
@@ -54,7 +66,7 @@ h2 {
|
||||
|
||||
h2::after {
|
||||
display: block;
|
||||
content: '';
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 7px;
|
||||
height: 2rem;
|
||||
@@ -68,4 +80,39 @@ p {
|
||||
color: var(--deep-space);
|
||||
margin: 0 2rem;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
a {
|
||||
width: 20rem;
|
||||
height: 25rem;
|
||||
}
|
||||
a > * {
|
||||
margin: 0 1rem;
|
||||
}
|
||||
h2 {
|
||||
font-size: 16pt;
|
||||
}
|
||||
.image {
|
||||
width: 16rem;
|
||||
height: 10rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 640px) {
|
||||
a {
|
||||
width: 16rem;
|
||||
height: 21rem;
|
||||
}
|
||||
a > * {
|
||||
margin: 0 0.75rem;
|
||||
}
|
||||
h2 {
|
||||
font-size: 16pt;
|
||||
}
|
||||
.image {
|
||||
width: 12rem;
|
||||
height: 8rem;
|
||||
margin-top: 0.75rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -14,7 +14,7 @@ const property = defineProps<PageTopProperty>();
|
||||
div {
|
||||
display: flex;
|
||||
width: 100vw;
|
||||
height: 12rem;
|
||||
height: 16rem;
|
||||
margin: 0;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
|
||||
42
components/PankuzuList.vue
Normal file
@@ -0,0 +1,42 @@
|
||||
<script setup lang="ts">
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
|
||||
console.log(route.path);
|
||||
console.log(router.getRoutes());
|
||||
console.log(router.resolve({ name: "news" }));
|
||||
|
||||
const getLinkArray = (): Array<string> => {
|
||||
let links = route.fullPath.split("/");
|
||||
return links.map<string>((value) => {
|
||||
return "/" + value;
|
||||
});
|
||||
};
|
||||
|
||||
const linkArray = getLinkArray();
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>Pankuzu List</div>
|
||||
<nav>
|
||||
<ul>
|
||||
<li v-for="link in linkArray">
|
||||
<NuxtLink
|
||||
:to="link"
|
||||
v-if="linkArray.indexOf(link) !== linkArray.length - 1"
|
||||
>
|
||||
{{ link }}
|
||||
</NuxtLink>
|
||||
<p v-else>{{ link }}</p>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
ul {
|
||||
list-style-type: none;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
</style>
|
||||
34
components/QAndABox.vue
Normal file
@@ -0,0 +1,34 @@
|
||||
<script setup lang="ts">
|
||||
import type { QAndABoxProperty } from "~/utils/qAndABox";
|
||||
const property = defineProps<QAndABoxProperty>();
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="q-and-a">
|
||||
<h2>{{ property.question }}</h2>
|
||||
<div>
|
||||
<slot></slot>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.q-and-a {
|
||||
max-width: 1105px;
|
||||
width: 80vw;
|
||||
}
|
||||
|
||||
.q-and-a > h2 {
|
||||
color: var(--deep-space);
|
||||
background-color: var(--starlight1);
|
||||
border-radius: 1rem;
|
||||
font-weight: 600;
|
||||
line-height: 2;
|
||||
padding-inline: 1.5rem;
|
||||
}
|
||||
|
||||
.q-and-a > div {
|
||||
width: 90%;
|
||||
margin-inline: 3rem;
|
||||
}
|
||||
</style>
|
||||
@@ -31,15 +31,16 @@ const showThePast = (event: Event) => {
|
||||
<div class="top-column">
|
||||
<div class="summary">
|
||||
<h3>
|
||||
岐阜高専<wbr />宇宙<wbr />工学<wbr />研究会 - {{ SiteInfo.clubNameLong }}
|
||||
岐阜高専<wbr />宇宙<wbr />工学<wbr />研究会 -
|
||||
{{ SiteInfo.clubNameLong }}
|
||||
</h3>
|
||||
<p>
|
||||
宇宙分野に興味ある学生が<wbr />集い、<wbr />宇宙理工学に<wbr />関する知識を<wbr />身に付けると共に、<wbr />
|
||||
宇宙分野に関連する<wbr />各種競技会へ<wbr />参加して<wbr />人間力と実践力を<wbr />養うことを目的に<wbr />活動しています。
|
||||
</p>
|
||||
<NuxtLink to="/about/sera"
|
||||
>About {{ SiteInfo.clubNameAbbreviation }}</NuxtLink
|
||||
>
|
||||
<NuxtLink to="/about/sera">
|
||||
About {{ SiteInfo.clubNameAbbreviation }}
|
||||
</NuxtLink>
|
||||
</div>
|
||||
<div class="links">
|
||||
<ul>
|
||||
@@ -64,12 +65,12 @@ const showThePast = (event: Event) => {
|
||||
</li>
|
||||
<li>
|
||||
<NuxtLink to="/projects/kosen-x">
|
||||
CubeSat Kosen-x
|
||||
CubeSat KOSEN-X
|
||||
</NuxtLink>
|
||||
</li>
|
||||
<li>
|
||||
<NuxtLink to="/projects/edu-robot">
|
||||
Edu-Robot
|
||||
<NuxtLink to="/projects/education">
|
||||
教育プロジェクト
|
||||
</NuxtLink>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -118,6 +119,14 @@ const showThePast = (event: Event) => {
|
||||
<Icon name="simple-icons:instagram" />
|
||||
</NuxtLink>
|
||||
</li>
|
||||
<li>
|
||||
<NuxtLink
|
||||
to="https://github.com/SERA-NIT-Gifu-College"
|
||||
target="_blank"
|
||||
>
|
||||
<Icon name="simple-icons:github" />
|
||||
</NuxtLink>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -224,7 +233,7 @@ footer {
|
||||
display: flex;
|
||||
padding: 0;
|
||||
& > li {
|
||||
margin-right: 0.5rem;
|
||||
margin: 0 0.5rem;
|
||||
& > a span {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
|
||||
@@ -7,7 +7,7 @@ const exploreDropDownEntries: Array<DropDownEntry> = [
|
||||
{ text: "Projects", link: "/projects" },
|
||||
{ text: "CanSat", link: "/projects/cansat" },
|
||||
{ text: "Rocket", link: "/projects/rocket" },
|
||||
{ text: "Edu-Robot", link: "/projects/edu-robot" },
|
||||
{ text: "Edu-Robot", link: "/projects/education" },
|
||||
{ text: "CubeSat KOSEN-X", link: "/projects/kosen-x" },
|
||||
{ text: "About", link: "/about" },
|
||||
];
|
||||
@@ -27,7 +27,7 @@ const mediaDropDownEntries: Array<DropDownEntry> = [
|
||||
:mode="DropDownMode.onClick"
|
||||
:alignment="DropDownAlignment.Left"
|
||||
:entries="exploreDropDownEntries"
|
||||
:show-in-mobile="false"
|
||||
class="left-dropdown"
|
||||
/>
|
||||
</div>
|
||||
<div id="logo-link">
|
||||
@@ -41,7 +41,7 @@ const mediaDropDownEntries: Array<DropDownEntry> = [
|
||||
:mode="DropDownMode.onClick"
|
||||
:alignment="DropDownAlignment.Right"
|
||||
:entries="mediaDropDownEntries"
|
||||
:show-in-mobile="false"
|
||||
class="right-dropdown"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -51,6 +51,9 @@ const mediaDropDownEntries: Array<DropDownEntry> = [
|
||||
<style scoped>
|
||||
header {
|
||||
width: 100vw;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.navigation-menu {
|
||||
@@ -104,4 +107,11 @@ header {
|
||||
height: auto;
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 640px) {
|
||||
.left-dropdown,
|
||||
.right-dropdown {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1 +1 @@
|
||||
window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA62V3U7jMBCF3yXXCHYRP7u9Q3SRkABVUMEFQpUbT1sLx47siUK14t3XCWmTOLZjFtSLSp0z3xzPjN3nvwnCGyaThOQsOUjSDeNUgUgmz/vIGvBCIUs5GEFOcGN+yyQtOOgjk7Vo44cbzLgRvTJBk8mxG0dhRQqOLWtViBSZFANao+xTz07eX94PHOZumMYxg5Xme03WxEijc5b5W1gFv8lajfJ76rpKZZZLTZaVkdJIZDk1yUJXuKHVjnphq6O8PzIoZ1LhfJt3OgGiyEbg3cR+pV+d0xQanryHaNsUrORgBOdaIOPac3OI3op0SpAsiXZMvk5d9ERRXexl3MtSXxLOlyR9vWqO2JZC0y93oVGIZeXH7/Ofp8edg/cAj5LRL7twQT7l4h4IdQ18/PwmcTBlT5EnxRD+q0qdGVwmqmQ+laXw7couHrUm00Z8wdlamF1G+8ZZzIHef9F20ltJB/fYQ62k48A/AtW2JTKBoFYkHTagl2C14/TMQZ6Zb1D4KfguZ8jvv+wCFEF4AHkLSHyzs2RRI/Si7a2z4cFi1tIJKB1v/Qe3ikU5refgetY7nL3GvwfNv+q1WMnAoGpaRxqa/53Rjm1VzdsLw9OutJdE0VDHqnhU1+4accRy7rl2TthuTtYwl7nPbROOMjv70EZ43VGtDJdT8/kHvXQYWoQKAAA="
|
||||
window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA62WXW/aMBSG/0uuq31Ua7dxR8uGKrUV61B7UU3IxAewSOzMdpSiqf99TsiXHdtxN8QFEuc973l8jg/J859IwouMJhHKSHQWxTuSYA40mjy3kS3IKZckTkAJMiR36reU4TwB8V5lrbr4u51MEyXaE4qjybndDsMG5YnsvDY5jSVhdOBWK3XXy0+vv17PLHC3RMgxwFJzWsjKMRB0jpIE+OEmRVsQTlRNdSJY3TMQd0lS98TL4IngKis3U58qZmnGBFqXIIWSsGKmkqko7YaoPfXKVAexPxIoFozL5SHrdQJono6Y9xP1Sl96p8kFPDkP0bXJW8ni4Z1rLkkiHIuOxIHGMyTRGgnL5KvUlSYK6qKW8cAKca1u4xrF++/1EbtSUvXLXmjUxED58PXzx4vz3sE1g0dG8H9T2EzeRPEACNsGPn5+lTiYsqPIEycS/qlKlem9TJizbMYK6rorTTzomsxq8TQhW6rusjQ3zvAc6N2L1kjvGB7sscO1lI4bfqOSHzpHQiXwDYqHDdASjHZcXFqcF+obuHyTeZMz9Nf+2Y/PAgNdH1xfEzS8udV0gKz5zt1FTGSgwJGEn8DuQCIntS4LAndam4timnuLGXuSELq/Rhy7wJt4EPFtLQ64Ia2vmeNvN4XC8jQ9WpaxIMxqrLYHZ8+n1bg3rX7NuqEb5jlo5daT+jbsXmnH7mnl1wrHu+UbbhMP6tp9LQ4Ybutr5vhxM/UKuGSZi7YOB8EujtoA1sbVyPCT/p5SPL1iLy7UJh7E+qMWB8C2vmaODVd9/gJuOnGBRA0AAA=="
|
||||
@@ -1 +1 @@
|
||||
window.searchData = "data:application/octet-stream;base64,H4sIAAAAAAAAA8WcW2/buBLHv4v8aqThTbb71m16cILTng12g+5DEASKpTRCbMmw5HqLIN99SVqXoWZk07LbfdlsIs6fM8Pf8GJTfQ3W+bYI3t+9Bi9pFgfv+TjIomUSvA82Zboo3kXFj2x+FZXRY1QkwTjYrBf62TKPN4ukeGfbPDhtLp7L5UI3nC+ioki0dBC8jWv1UDbyjtEfSRQ34k+bbF6meUbLIzuiw3GwitZJVvZEcdifv9ZpmQxxyBqe4hG/nE2Y4j1p0mP1MVosHqP5y38qpxovyx+rnhE5qHFSCpUSYePuw4Nx42w+jRo9b9cOK/tm+2uexqdmm9L4t7Pd69PJ2SYzBrLdmVvidb66yrdZz7RSP947o0wbzauq+Zc8blOSZJsl0oMtfQaj8bPtlrWDkGudTZH8N/+erI/sd9Sx9XHCUenz6OMinb8c70xtdoofeEA+LNJv2dJoeDnUND99aD4nT4M6HVWGR+WhDZP05Y/02/MwZ2rLk73hKkSDc6N/JuvyR+NZmpXJ+ima4zLsmgwdn0verrqL6DFZDO17VFsflZkm4h6XlnD+ONajyvisDmnjdarFhvrU2p/VreI5317r6n9MF8Pz1RE5q4MRmneO9Q4qnOoaVXyf9MgcU3m2/TnKrkz+PiYrbb+jyvKobOzC7JsB0uxlmCuV5UmudLck35IsWUdl8meSf0nKqGdn0mnle+TpE++eL7ryh7tDgXe76o84S7ZFT5jmkefmy+b1Fm5G4QpnhZomPv5br8h19MO6TOcL735GbftD/bWWdM+32yShV3Cq37r1oF7hZFEFcJ095f11YpVAyyE5hlUZR+WeSZ3sbVTZHAwYBtTT/Txaxx9z3e2+yZv2wjU9hzNRhzhPRyJ/8DycMJPdTVQ+H+sFsDvLwJiTyvUy+pYMcQZZD3QJlsf/dbMD66hVatr9gtJw+/IujDaUPTtBd5b16h+ane6Ef2123DiyMg864lkSHS+OKYjDuTimHLrpOLoYKHeo5fyjTvSeJd083rusd8vLGBw+JzbSXRPfgrNu9yQ686vy/v5HUMHHEyTT51pa6JaD3aqtT3Wpy8FKc3Wbr3owqJ56U3Cza38Yglq4Y+CDQO3xoCPLvn59ziw99r1jfrjk93qUepb9YbfAZ9erVG/7y+7+uB54/fihfex7ZImTp2izaBPfHlU6elXD/QPdcfFwFJ/TojwQiWly7mis5oCIrLt7orpNl70DY56dLQ4rdkwA1jPK83m+XOVF9Gg83epn+fZKN80K0xsKBTR+6Db2jW1TJH/19dPGubcnQmJ/EvYG6fnly4m+jagHB76P2ec22RGV254ZbpvGYHb7ecFd1B39vBDrNPZE+pw4n8z/xFCbnv61WL+nyfYmX5e3v4bci05/vzLu9rOpr1TQu49v9gYM7c4yf4DPkq4+/fm/299vTnJn1IoMSKyTFfrzrg+/ff50e5qLjcZP8fDL779df/50moeNxske3o/1LjBO/g7evwb6aGeaaAF+IS5mWvEpTRaxuWmzc35slKuvFuJ8vrH/e181+5rMy3xtGu9av7sMxneXYzG5mEp+fz++q43tA/uHWqP9izVk+jdGGTJkyBxDrn/jlCFHhtwxFPo3QRkKZCgcQ6l/k2M+uxDhzDGUyFA6hkr/pqgeFTJUjmHY12OIDEPHcKJ/C6keJ8hw4hhO9W8TynCKDKeOoSbobkoZzpDhzAXA8DAjCcDssA48lh6SO0bw4wLEDBaMZg8zxFyImEGDkfwxzBFzQWIGD0YyyDBLzIWJGUSYJI0xT8wFihlMGMkiw0wxFypmUGEkVgxzxVywmMGFkWgxzBZz4WIGGUbixTBfzAWMG2YYSRjHhHGXMG6Y4ZowfjER0jXGhPHOFGXnKJIwTsxSLmHcMMPpGQ4Txl3CuGGGk4RxTBh3CeOGGU4SxjFh3CWMG2a4IhOGCeMuYdwww0PSGBPGXcK4YYaThHFMGHcJ44YZThLGMWHcJUwYZviMcltgwoRLmDDMCJIwgQkTLmGC9yZMYMJEZyG0KyEjjYm10CVMGGYEJ40xYcIlTBhmhCCNMWHCJUyE/dnGhAmXMDHpxVNgwoRLmJj2DxUmTLiEiVl/tjFhwiVMXvZmW2LCpEuYtISR9SwxYdIlTBpmBLliSEyYdAmTonecJSZMdrZbljByuZHEjsslTFrCyMlAYsKkS5g0zAhyMpCYMOkSJie9K4bEhEmXMGkJI9cqiQmTLmHSMCPJ3ZDEhEmXMGWYkYzabCpMmHIJU4YZSa5VChOmXMIU7+8ZE6ZcwpRhRpILncKEKZcwJft7xoSpzqbeMCPJqlLEvt4lTNmdPX0mwIQplzBlmCGPBQoDplzAlEFGkkWlMGDKBUxZwMiiUhgw5QIWWsCmVF2EGLDQBSxk/cYYsNAFLLSAkUUVYsBCF7DQIKPIogoxYKELWGiQUeQGMMSAVX+yp3R9PC+T+Hp3WteH7PqD1tfgoTrCN5+ZvQZS/+dtHIS7H3rE9c+39vxu/9oc4c0z0y24OtiKsmmrqrfRXjq7z+ebyyTAw0vg4hCxhf1yBQjyVlBPIkcIlvZ7DaAkgJLwU8IB8rBV4ZOdnd5jHaGW2jtTQBHkn3umzLzfEFfvN6zta0pgPMFwDlDLt8W8elviqXm/pFUHSfTMIVT/nqfxPnUFhuh49e3uBSmQWpBZLzlzG2Re3wYBQQOqBasGfeqniD6qi8FXSIBOUNvKL3Z7V8N+abuyX9oCf0Hgopop9AbRR3R3LQikcAakLqvQQz+p+gtBECWAU1Vqilc/padq8VKaOwRAFfgY+g20uYOrxyKjZ0Qw3Myvhmq9ZHeZA2gB37jnEFRau2v7rdSkVfJjrxZaNTckgF+gkJlf5pP6yj5QAbMh81uDbIa6CxsHhc+rNU346dWXioskX9r7y0AVxMj9Yqy/DQNwgbQrv+mZrkkAgvQbv7TIzDUcoAHSLf0Cqt5GAUMGJhrmN9Es7ItHQAIuMX71trsWD4YGSHB/CZRUICNExY3fIC2r1zvA4gPEQr/sdkuUAY6Z3yxp7lGZZYcqUgHkpF+WjByahARctVW1Hvgt33k2371/16oBkJnfjJbruWxTJM+7NwpbJbDz8Rs0c/VIT/5kroCY9Ev9ulvrDKybzC8/5l2hNMMwMTBtML9yL80uwfFHgYUo9PNnd60MFBqQ4NXWRfrNrOXuZQGgBWLifjHpUd+764EbPr9BA+/7xs2/ANAqgnD92GzfyYntW7+tFJhs/RLmvuVCLUhwQ+o3nvB9GCAEJnHuN4m3QnN7ExdUDjxW+m132ouAna2YAIhIP8fMdYxVvi7RYRcUdFjtFUM/96rrO0ALjKXyIFefx1fpSh9GM21yd//29g/TmGBPk0IAAA==";
|
||||
window.searchData = "data:application/octet-stream;base64,H4sIAAAAAAAAA8WcXXObyBKG/4t0q3I8XyDnzvk4e1In2c3uurIXLpcLC5xQkYSCcJyUK//9MIiPbroHDZKSvdmsDP3OOz3P9AwI9DTJs8ft5Pn10+Rzuo4nz+Vsso5WyeT55KFIl9tn0fb7evEqKqK7aJtMZpOHfFkeW2XxwzLZPqvOuUXnnH0qVsvyxMUy2m6TUnoy+TFr1APdyqOgv5IobsXvH9aLIs3WvDyJYxqcTTZRnqwLRy/2+/knT4vkEENV4DGO5PlFKIx0pKkcq5fRcnkXLT7/pzbVuiy+bxwjslfjqBQao4LW7u2ttXEyT9NWz9vafmXfbH/I0vjYbHMa/3a2nZ6OzjabMZDtXm2J82zzKntcO8pKc3iwosxbzVf16e+yuEtJsn5YET14ps9gtD67ZkU3CFmp87BN/pt9TfKR7U57sT4mkIrL0ctluvg83kwTdowPOiCXy/TjemU1vAy1px8/NG+T+4MandaBo/LQdZP18lf68dNhZprIo91IE5DBeV/+m+TF99ZZui6S/D5a0GnYDzl0fM5lt+ouo7tkeWjb0yZ6VGbaHjssrWD9GOuoDj6poTI4T0uxQz118Se1FZFpPdYYVDjWGsf267LjY8Cuzj8F1UXybUxWunandeSobOy66Zpg6frzYVbqyKOs9Ff8j+XmIMm/44HBqz48ZXDlhyP+G6dLeoukfxtuh/QVWXckO40PbXxahfq2j+KdZlbRx+R9VHw63BNQOKm1RbRBm+mxxrr4Y20RQJN1kkdF8neSvUuKyMUoPsv3ktcl3r++7Mvvb472vdeUu8d2mr+M8tjR1eaw91R8Wwfs31i00v0Qnw62tl0lOC2WA8v4cNvTJtrHAZFwWYqT7SJP95C/xxjWOKm94ZVijy+PxWK0IY8CtseVbwHzsdafN+vkceuYM/aQ93y5zIt0sUzerO8zdz8rRXCmzwypDLpQjIqBycG2Nq1j9jUJA931P49fZmWzQ5tH3gUOPYWZaHfKWCNd2ClMWAKHUeddgLiTDIy9EfFm/7xzjE0/+kBLcHr8Xp62Z1tXKbXn/YKpgdvynhhdVwYu9L5fwTt6Xu3DsONN+M/Nno2RM3OvEc8p0XMxZkLsz8WY6dBPx+jJwNnp7qa9JnDAe0iVQHvKIXOArEi+7Uwv/Sth1wm25avHJOHvkXHtNmcf1Cq3nA9sg5vD3sv673XA/m1wK90P8R3FoW3w2q98utufQgUfJ0TGub3blmcebKuJPtZSn4NNOWGvso0Dg/qoNwXvd+fvh6AR7gX4INA4Puhe1FC7PjejHPFHbOkHHflu6Pfb6o/7l8t1fPki++YY+Oaw98j/WQfsH/pWuh/iM/itbUfCvzwk2+ELzuHmp0DAxwdRYVMebdJnH5Oiv9A0KS8P33aHfe+uxMl99LDsWO/uqvT06hOH09uzONCL+s5StdTTK8K6bXTSyXqEVcf0C5veP0Zv022xZ5zsKaceq0rzgPGq7A706ipdObGzx07Wj0psTAcqZ5zzRbbaZNvozjp9LI9lj6/KU9db2xrpCjj5tn+yb98etsk/rna6fg62xEgMJ2Gwk55PQRzpbcod2PNgxJBttiEut44K/pjGYLn8eZ07axr6eV1s0ujo6acEfUX+E7vatvSv9fVrmjy+z/Li6teQe9Zr71f2u7uE/cB1eneVN9hhGHeS+gEuOV+9/vt/V3+8P8rOtBM5ILEoK/xl8eWLt6+vjrPYavwUh+/+ePHm7evjHLYaRzu8mZXb3Dj5Nnn+NPma5PaUUkCeqbOLUvE+TZaxfeR1Z35mleuHEOJs8VD970192odkUWS5PXl39rPzyez6fKYuzuYXNzez6ya2+nv1h0ai+0sVJ8pPgokTJE6gOFl+kkycJHESxanyk2LiFIlTKE6Xn/RMiTMtQhSoSaBGgab8ZJgGDYkzKC5wNRiQwAAFhuWngGkwJHEhipuXn0Imbk7i5iiuROd6zsRdkLgLPPIWhAtu6CkzogdNRQ2Hm2C4weAIy4NgkaPsCAyPsEwIDjtB+REYIGGxEBx6giIkMEPCoiE0F0sxEpgjYekQHIGCkiQwSsISIjiYBKVJYJyEpURwQAlKlMBICUuK4KASlCqBsZIWFVFypc/CucS1gYIlMVjSsiLP2WBKluyVpKomcWRJpiphsqSFRbIFjZIlMVnSwiI5siQlS2KypIVFsnVGUrQkRktaWiSHlqRoSYyWtLRIDi1J0ZIYLWlpkRxakqIlMVrS0iI5tCRFS2K0lIVFciVLUbIUJktZVhRXshQFS2GwlGVFcWApCpbqrXfKSbRi1jxMltJOOhRFS2G0lIVFcUgrSpbCZCkLi2LXaUqWwmQpC4vSbI8pWgqjpSwtyrDBlC2F2VIWl/L6mwumcCkMl7a8qJAL1pQujenSFV1zNpjipTFeusKLrZia8qUxX1o5s60pX7q3qap2VSycmtlXYb60cQ6VpoBpDJgO3NmmhGlMmA7d2aaEaUyYnrv7TAnTmDDtJkxTwjQmzFhmNFdGDAXMYMCMRUZzk9lQvgzmy1hiNDeZDcXLYLyMcrJpKF4G42UqvLhtk6F0md623fKi2Y07s3PHcJlq786tbYayZTBbJnRuXwxly2C2zNxZrw1ly2C2jKVFc6uqoWgZjFZQocWtqgFFK8BoBRVa3KoaULQCjFZgaTHcqhpQtAKMVmBhMWIm52cX5xoHU7QCjFZgaTHcfAgoWgFGKzDuhilbQe+y0OJiuMkUMBeGmK0gdDdM2QowW4GlxXCTKaBoBRit4MLdMGUrwGyFFhfDzcSQshVitkKLi2GvhilbIWYrrMoWN5dCylaI2Qortri5FFK0QoxWWKHFzaWQohVitMIKLbZ6hBStEKMVBu5gylbYu+tQ3XbgZmLI3HjAaIWWloBbmEKKVojRCi0sATcRQ0pW/afqNtjXJC+S+M3udtj1dftlydPktr5H1t6Ufpro8j8/ZpNg90852OW/P7obZNVf23tk9phtFrzF04mWV8StannV66Wz+wKsfa6yEysrXysWeJpCYsvq20sgqIBgMEawfqcgrb/sBZISSOoxkkX1XSRQAgMSeKaO5qz7fuxpUm7Bqzh9MUYtrZ5IBoogacozafbl4Lh+OTiv3vEHiABCDlDLHreL+lXj+/blbOAWmB2v/jVL4yF106mb8eqPu18X6OQAO354ty/AAA3gSfoNj31ic9E8sQlSB5TUvEbHr5v0Jn0MvjwG+QNNlGuZn3RZyqp5t6me/wF+56CCidpv6CW6e3QXSIG5p8Jayo+f9lEA0EuAeKDq2mrqf2v1wG9Oovc+gF/QgvJDp1T6XNgH3DqVANTX0DNxebYpR3fNF3+gJ/zmdqOX7J40BFpgcIVnrmqt3bu4nRRYkvzKaiO0aZ/hAr5AgRF+9T5p3sMFKqBKC7/MVxkiazjIuK5Xce3XyXpFI4mXsCj5TYHmpbNtkq2q99uAGki+9DPWfEkP5hNgIfTLeYqWHAkGTXoKcBVHgjIh6wmt6rQbv96l27V9fhUMIdA0ft7q198BTkBD+FXsZfVLB0ACLst+FWX37hfIDoBR1vVY+RFkpeyqxM04eQFqnd+aYeXIagFI1Of1VPFbL1fZXYp3WQGYJKFfdepXJQGWQuHnwz7X7MqSBogbv/GzcmT6K5BtLWu0/QYxWy92vyPSqQEx4Td0WVm+H7bJp90vo3RKoAT45ds+Clyud2yuQPU1fqn/Eq3j6C77xsoBb4FfL7una4EMSFbgt3rm/UopAJfCb9QKu2tDIgEoBaFfVds9MQ58gL7IerIZv3WufgUXEAnKivLLS7F7QwTkFnTJ+A1RCeHgThYwFPq5Aj+jFLc/rNYpgm56Omx/iyGufkwJjCDwNkLKuSUA2ZN+tQW/jc5tDIBHOcZks1QgMTADpV95gC/zAtbA/FF+C2kn1HelgZgZg0hdupAWvPIcY6wpXEgMLIXGL132OcJNlhf9DagBEz2sd0ShX0mtnzsFWsBW6FG8bmaTTbpJSiDKkOubHz/+D5igh7XVUAAA";
|
||||
7
docs/functions/api_getGalleryImages.default.html
Normal file
@@ -1,3 +1,3 @@
|
||||
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>useWindowDimensions | sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">sera-hp</a></li><li><a href="../modules/composables_windowDimensions.html">composables/windowDimensions</a></li><li><a href="composables_windowDimensions.useWindowDimensions.html">useWindowDimensions</a></li></ul><h1>Function useWindowDimensions</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="useWindowDimensions" class="tsd-anchor"></a><span class="tsd-kind-call-signature">use<wbr/>Window<wbr/>Dimensions</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">{ </span><br/><span> </span><span class="tsd-kind-property">height</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">; </span><br/><span> </span><span class="tsd-kind-property">viewPortType</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol"><</span><a href="../enums/composables_windowDimensions.ViewPortType.html" class="tsd-signature-type tsd-kind-enum">ViewPortType</a><span class="tsd-signature-symbol">, </span><a href="../enums/composables_windowDimensions.ViewPortType.html" class="tsd-signature-type tsd-kind-enum">ViewPortType</a><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">; </span><br/><span> </span><span class="tsd-kind-property">width</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span><a href="#useWindowDimensions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Vue Composable for getting window dimensions and viewport type based on width</p>
|
||||
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-symbol">{ </span><br/><span> </span><span class="tsd-kind-property">height</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">; </span><br/><span> </span><span class="tsd-kind-property">viewPortType</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol"><</span><a href="../enums/composables_windowDimensions.ViewPortType.html" class="tsd-signature-type tsd-kind-enum">ViewPortType</a><span class="tsd-signature-symbol">, </span><a href="../enums/composables_windowDimensions.ViewPortType.html" class="tsd-signature-type tsd-kind-enum">ViewPortType</a><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">; </span><br/><span> </span><span class="tsd-kind-property">width</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></h4><p>returns the references of width, height, and viewport type</p>
|
||||
<ul class="tsd-parameters"><li class="tsd-parameter"><h5><span class="tsd-kind-property">height</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">></span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">view<wbr/>Port<wbr/>Type</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol"><</span><a href="../enums/composables_windowDimensions.ViewPortType.html" class="tsd-signature-type tsd-kind-enum">ViewPortType</a><span class="tsd-signature-symbol">, </span><a href="../enums/composables_windowDimensions.ViewPortType.html" class="tsd-signature-type tsd-kind-enum">ViewPortType</a><span class="tsd-signature-symbol">></span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">width</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">></span></h5></li></ul><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in composables/windowDimensions.ts:21</li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
||||
<ul class="tsd-parameters"><li class="tsd-parameter"><h5><span class="tsd-kind-property">height</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">></span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">view<wbr/>Port<wbr/>Type</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol"><</span><a href="../enums/composables_windowDimensions.ViewPortType.html" class="tsd-signature-type tsd-kind-enum">ViewPortType</a><span class="tsd-signature-symbol">, </span><a href="../enums/composables_windowDimensions.ViewPortType.html" class="tsd-signature-type tsd-kind-enum">ViewPortType</a><span class="tsd-signature-symbol">></span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">width</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Ref</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">></span></h5></li></ul><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in composables/windowDimensions.ts:24</li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
<a id="md:便利・重要なファイルフォルダ" class="tsd-anchor"></a><h2 class="tsd-anchor-link">便利・重要なファイル/フォルダ<a href="#md:便利・重要なファイルフォルダ" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul>
|
||||
<li><code>assets/databases/news.db</code>: ニュースを管理しているsqliteデータベース</li>
|
||||
<li><code>assets/siteinfo.json</code>: 部長と顧問の名前、コピーライトの年、メンバーの学科・学年ごとの人数、など更新があまりされない情報を集めたファイル、<code>import</code>して使う</li>
|
||||
<li><code>assets/achievements.json</code>: 活動実績に表示される参加・受賞歴を集めたファイル</li>
|
||||
<li><code>docs/</code>: <code>typedoc</code>で生成されたドキュメンテーションが入っている、<code>python -m http.server</code>などで<code>localhost</code>にホストして読む</li>
|
||||
<li><code>dist/</code>, <code>.output/</code>: <code>npm run generate</code>で生成された静的ウェブサイト本体、プロダクションレディーな状態 <code>dist/</code>は<code>.output/</code>へのリンクである</li>
|
||||
</ul>
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>DropDownProperty | sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">sera-hp</a></li><li><a href="../modules/utils_dropDown.html">utils/dropDown</a></li><li><a href="utils_dropDown.DropDownProperty.html">DropDownProperty</a></li></ul><h1>Interface DropDownProperty</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Interface for the property of DropDown component</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">DropDownProperty</span> <span class="tsd-signature-symbol">{ </span><br/><span> </span><a class="tsd-kind-property" href="utils_dropDown.DropDownProperty.html#alignment">alignment</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span> </span><a class="tsd-kind-property" href="utils_dropDown.DropDownProperty.html#entries">entries</a><span class="tsd-signature-symbol">: </span><a href="utils_dropDown.DropDownEntry.html" class="tsd-signature-type tsd-kind-interface">DropDownEntry</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">; </span><br/><span> </span><a class="tsd-kind-property" href="utils_dropDown.DropDownProperty.html#label">label</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span> </span><a class="tsd-kind-property" href="utils_dropDown.DropDownProperty.html#mode">mode</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span> </span><a class="tsd-kind-property" href="utils_dropDown.DropDownProperty.html#showInMobile">showInMobile</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:46</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="utils_dropDown.DropDownProperty.html#alignment" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>alignment?</span></a>
|
||||
</div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">DropDownProperty</span> <span class="tsd-signature-symbol">{ </span><br/><span> </span><a class="tsd-kind-property" href="utils_dropDown.DropDownProperty.html#alignment">alignment</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span> </span><a class="tsd-kind-property" href="utils_dropDown.DropDownProperty.html#entries">entries</a><span class="tsd-signature-symbol">: </span><a href="utils_dropDown.DropDownEntry.html" class="tsd-signature-type tsd-kind-interface">DropDownEntry</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">; </span><br/><span> </span><a class="tsd-kind-property" href="utils_dropDown.DropDownProperty.html#label">label</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span> </span><a class="tsd-kind-property" href="utils_dropDown.DropDownProperty.html#mode">mode</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:45</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="utils_dropDown.DropDownProperty.html#alignment" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>alignment?</span></a>
|
||||
<a href="utils_dropDown.DropDownProperty.html#entries" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>entries</span></a>
|
||||
<a href="utils_dropDown.DropDownProperty.html#label" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>label</span></a>
|
||||
<a href="utils_dropDown.DropDownProperty.html#mode" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>mode</span></a>
|
||||
<a href="utils_dropDown.DropDownProperty.html#showInMobile" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>show<wbr/>In<wbr/>Mobile</span></a>
|
||||
</div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Properties</h2></summary><section><section class="tsd-panel tsd-member"><a id="alignment" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>alignment</span><a href="#alignment" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">alignment</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">number</span></div><div class="tsd-comment tsd-typography"><p>Explicitly assign the alignment of the component</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:51</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="entries" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>entries</span><a href="#entries" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">entries</span><span class="tsd-signature-symbol">:</span> <a href="utils_dropDown.DropDownEntry.html" class="tsd-signature-type tsd-kind-interface">DropDownEntry</a><span class="tsd-signature-symbol">[]</span></div><div class="tsd-comment tsd-typography"><p>Entries of DropDown menu</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:49</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="label" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>label</span><a href="#label" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">label</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>Label of the component</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:47</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="mode" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>mode</span><a href="#mode" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">mode</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>Interaction mode of the component</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:48</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="showInMobile" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>show<wbr/>In<wbr/>Mobile</span><a href="#showInMobile" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">show<wbr/>In<wbr/>Mobile</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><div class="tsd-comment tsd-typography"><p>Whether to show the component in mobile(<640px) environemnt</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:50</li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="tsd-otp-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#alignment" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>alignment</span></a><a href="#entries" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>entries</span></a><a href="#label" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>label</span></a><a href="#mode" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>mode</span></a><a href="#showInMobile" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>show<wbr/>In<wbr/>Mobile</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:49</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="entries" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>entries</span><a href="#entries" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">entries</span><span class="tsd-signature-symbol">:</span> <a href="utils_dropDown.DropDownEntry.html" class="tsd-signature-type tsd-kind-interface">DropDownEntry</a><span class="tsd-signature-symbol">[]</span></div><div class="tsd-comment tsd-typography"><p>Entries of DropDown menu</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:48</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="label" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>label</span><a href="#label" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">label</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>Label of the component</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:46</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="mode" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>mode</span><a href="#mode" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">mode</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>Interaction mode of the component</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/dropDown.ts:47</li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="tsd-otp-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#alignment" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>alignment</span></a><a href="#entries" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>entries</span></a><a href="#label" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>label</span></a><a href="#mode" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>mode</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
||||
|
||||
8
docs/interfaces/utils_galleryEntry.GalleryEntry.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>GalleryEntry | sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">sera-hp</a></li><li><a href="../modules/utils_galleryEntry.html">utils/galleryEntry</a></li><li><a href="utils_galleryEntry.GalleryEntry.html">GalleryEntry</a></li></ul><h1>Interface GalleryEntry</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Interface for gallery image entry</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">GalleryEntry</span> <span class="tsd-signature-symbol">{ </span><br/><span> </span><a class="tsd-kind-property" href="utils_galleryEntry.GalleryEntry.html#caption">caption</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span> </span><a class="tsd-kind-property" href="utils_galleryEntry.GalleryEntry.html#id">id</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span> </span><a class="tsd-kind-property" href="utils_galleryEntry.GalleryEntry.html#imagePath">imagePath</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in utils/galleryEntry.ts:12</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="utils_galleryEntry.GalleryEntry.html#caption" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>caption</span></a>
|
||||
<a href="utils_galleryEntry.GalleryEntry.html#id" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>id</span></a>
|
||||
<a href="utils_galleryEntry.GalleryEntry.html#imagePath" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>image<wbr/>Path</span></a>
|
||||
</div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Properties</h2></summary><section><section class="tsd-panel tsd-member"><a id="caption" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>caption</span><a href="#caption" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">caption</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>caption of the image</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/galleryEntry.ts:15</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="id" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>id</span><a href="#id" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">id</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><div class="tsd-comment tsd-typography"><p>id from database</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/galleryEntry.ts:13</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="imagePath" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>image<wbr/>Path</span><a href="#imagePath" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">image<wbr/>Path</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>image URL</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/galleryEntry.ts:14</li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="tsd-otp-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#caption" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>caption</span></a><a href="#id" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>id</span></a><a href="#imagePath" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>image<wbr/>Path</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
||||
10
docs/interfaces/utils_linkCard.LinkCardProperty.html
Normal file
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>LinkCardProperty | sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">sera-hp</a></li><li><a href="../modules/utils_linkCard.html">utils/linkCard</a></li><li><a href="utils_linkCard.LinkCardProperty.html">LinkCardProperty</a></li></ul><h1>Interface LinkCardProperty</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Interface that defines property for LinkCard component</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">LinkCardProperty</span> <span class="tsd-signature-symbol">{ </span><br/><span> </span><a class="tsd-kind-property" href="utils_linkCard.LinkCardProperty.html#description">description</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span> </span><a class="tsd-kind-property" href="utils_linkCard.LinkCardProperty.html#imagePath">imagePath</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span> </span><a class="tsd-kind-property" href="utils_linkCard.LinkCardProperty.html#link">link</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span> </span><a class="tsd-kind-property" href="utils_linkCard.LinkCardProperty.html#title">title</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in utils/linkCard.ts:13</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="utils_linkCard.LinkCardProperty.html#description" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>description</span></a>
|
||||
<a href="utils_linkCard.LinkCardProperty.html#imagePath" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>image<wbr/>Path?</span></a>
|
||||
<a href="utils_linkCard.LinkCardProperty.html#link" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>link</span></a>
|
||||
<a href="utils_linkCard.LinkCardProperty.html#title" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>title</span></a>
|
||||
</div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Properties</h2></summary><section><section class="tsd-panel tsd-member"><a id="description" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>description</span><a href="#description" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">description</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>description of link</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/linkCard.ts:15</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="imagePath" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>image<wbr/>Path</span><a href="#imagePath" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">image<wbr/>Path</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>optional path to image to display with</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/linkCard.ts:17</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="link" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>link</span><a href="#link" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">link</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>link itself</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/linkCard.ts:16</li></ul></aside></section><section class="tsd-panel tsd-member"><a id="title" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>title</span><a href="#title" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">title</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>title of link</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/linkCard.ts:14</li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="tsd-otp-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#description" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>description</span></a><a href="#imagePath" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>image<wbr/>Path</span></a><a href="#link" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>link</span></a><a href="#title" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>title</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
||||
3
docs/interfaces/utils_qAndABox.QAndABoxProperty.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>QAndABoxProperty | sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">sera-hp</a></li><li><a href="../modules/utils_qAndABox.html">utils/qAndABox</a></li><li><a href="utils_qAndABox.QAndABoxProperty.html">QAndABoxProperty</a></li></ul><h1>Interface QAndABoxProperty</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Interface that defines property for QAndABox component</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">QAndABoxProperty</span> <span class="tsd-signature-symbol">{ </span><br/><span> </span><a class="tsd-kind-property" href="utils_qAndABox.QAndABoxProperty.html#question">question</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in utils/qAndABox.ts:10</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="utils_qAndABox.QAndABoxProperty.html#question" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>question</span></a>
|
||||
</div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Properties</h2></summary><section><section class="tsd-panel tsd-member"><a id="question" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>question</span><a href="#question" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">question</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in utils/qAndABox.ts:11</li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="tsd-otp-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#question" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>question</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
||||
3
docs/modules/api_getGalleryImages.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>api/getGalleryImages | sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">sera-hp</a></li><li><a href="api_getGalleryImages.html">api/getGalleryImages</a></li></ul><h1>Module api/getGalleryImages</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Getting List of URL to the images under /public/images/gallery/</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in server/api/getGalleryImages.ts:1</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><h3 class="tsd-index-heading uppercase">Index</h3><section class="tsd-index-section"><h3 class="tsd-index-heading">Functions</h3><div class="tsd-index-list"><a href="../functions/api_getGalleryImages.default.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-64"></use></svg><span>default</span></a>
|
||||
</div></section></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
||||
3
docs/modules/utils_galleryEntry.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>utils/galleryEntry | sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">sera-hp</a></li><li><a href="utils_galleryEntry.html">utils/galleryEntry</a></li></ul><h1>Module utils/galleryEntry</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Types for gallery image entry data</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in utils/galleryEntry.ts:1</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><h3 class="tsd-index-heading uppercase">Index</h3><section class="tsd-index-section"><h3 class="tsd-index-heading">Interfaces</h3><div class="tsd-index-list"><a href="../interfaces/utils_galleryEntry.GalleryEntry.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-256"></use></svg><span>Gallery<wbr/>Entry</span></a>
|
||||
</div></section></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
||||
3
docs/modules/utils_linkCard.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>utils/linkCard | sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">sera-hp</a></li><li><a href="utils_linkCard.html">utils/linkCard</a></li></ul><h1>Module utils/linkCard</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Type for LinkCard component</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in utils/linkCard.ts:1</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><h3 class="tsd-index-heading uppercase">Index</h3><section class="tsd-index-section"><h3 class="tsd-index-heading">Interfaces</h3><div class="tsd-index-list"><a href="../interfaces/utils_linkCard.LinkCardProperty.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-256"></use></svg><span>Link<wbr/>Card<wbr/>Property</span></a>
|
||||
</div></section></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
||||
3
docs/modules/utils_qAndABox.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>utils/qAndABox | sera-hp</title><meta name="description" content="Documentation for sera-hp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">sera-hp</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">sera-hp</a></li><li><a href="utils_qAndABox.html">utils/qAndABox</a></li></ul><h1>Module utils/qAndABox</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Types for QAndABox component</p>
|
||||
</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in utils/qAndABox.ts:1</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><h3 class="tsd-index-heading uppercase">Index</h3><section class="tsd-index-section"><h3 class="tsd-index-heading">Interfaces</h3><div class="tsd-index-list"><a href="../interfaces/utils_qAndABox.QAndABoxProperty.html" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-256"></use></svg><span>QAndABox<wbr/>Property</span></a>
|
||||
</div></section></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>sera-hp</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
||||
@@ -1,7 +1,7 @@
|
||||
<script setup lang="ts">
|
||||
import type { NuxtError } from "#app";
|
||||
|
||||
const props = defineProps({
|
||||
const property = defineProps({
|
||||
error: Object as () => NuxtError,
|
||||
});
|
||||
|
||||
@@ -13,8 +13,8 @@ definePageMeta({
|
||||
<template>
|
||||
<NuxtLayout>
|
||||
<div>
|
||||
<h1>{{ error?.statusCode }}</h1>
|
||||
<p>{{ error?.message }}</p>
|
||||
<h1>{{ property.error?.statusCode }}</h1>
|
||||
<p>{{ property.error?.message }}</p>
|
||||
<NuxtLink to="/">戻る</NuxtLink>
|
||||
</div>
|
||||
</NuxtLayout>
|
||||
|
||||
@@ -17,7 +17,7 @@ const basicRules = {
|
||||
"ignoreArrayIndexes": true,
|
||||
"ignoreClassFieldInitialValues": true,
|
||||
"enforceConst": true,
|
||||
"ignore": [0]
|
||||
"ignore": [0, 1, -1]
|
||||
}
|
||||
],
|
||||
"dot-notation": "error",
|
||||
|
||||
@@ -1,3 +1,174 @@
|
||||
<script setup lang="ts">
|
||||
import AchievementsList from "~/assets/achievements.json";
|
||||
|
||||
useSeoMeta(
|
||||
generateSeoMeta(
|
||||
"活動実績",
|
||||
"岐阜高専宇宙工学研究会の活動や受賞歴の紹介ページです。",
|
||||
"/sera-logo-text.svg"
|
||||
)
|
||||
);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>Page: achievements</div>
|
||||
<PageTop text="活動実績" image-path="/images/page-top.jpg" />
|
||||
<main>
|
||||
<section>
|
||||
<p>
|
||||
岐阜高専宇宙工学研究会【SERA】では、各種競技会に参加しています。
|
||||
</p>
|
||||
<p>
|
||||
主には缶サット甲子園と種子島ロケットコンテストに出場しています。また、来年度はRocket開発チームが新たにモデルロケット全国大会にも出場予定です。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>競技会の参加・受賞歴</h2>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<img
|
||||
src="/images/koshien2020_mission-rogo.png"
|
||||
alt="2020 Mission Logo"
|
||||
class="float-right"
|
||||
style="background-color: black"
|
||||
/>
|
||||
<h3>缶サット甲子園</h3>
|
||||
<ul>
|
||||
<li
|
||||
v-for="entry in AchievementsList.cansatKousien"
|
||||
:key="AchievementsList.cansatKousien.indexOf(entry)"
|
||||
>
|
||||
{{ entry }}
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
この画像は、2020大会におおける我々のミッションロゴです。※無断使用厳禁
|
||||
</p>
|
||||
<p>
|
||||
2020大会の開発記録についての開発記録も公開しております。
|
||||
<NuxtLink to="/news/cansat-koushien-2020-championship">
|
||||
こちら
|
||||
</NuxtLink>
|
||||
からご覧ください。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>種子島ロケットコンテスト</h3>
|
||||
<h4>滑空・定点回収</h4>
|
||||
<img
|
||||
src="/images/rocket_top.jpg"
|
||||
alt="rockets"
|
||||
class="float-right"
|
||||
/>
|
||||
<ul>
|
||||
<li
|
||||
v-for="entry in AchievementsList.tanegasimaRocketContest
|
||||
.airtime"
|
||||
:key="
|
||||
AchievementsList.tanegasimaRocketContest.airtime.indexOf(
|
||||
entry
|
||||
)
|
||||
"
|
||||
>
|
||||
{{ entry }}
|
||||
</li>
|
||||
</ul>
|
||||
<br />
|
||||
<h4>高度</h4>
|
||||
<ul>
|
||||
<li
|
||||
v-for="entry in AchievementsList.tanegasimaRocketContest
|
||||
.altitude"
|
||||
:key="
|
||||
AchievementsList.tanegasimaRocketContest.altitude.indexOf(
|
||||
entry
|
||||
)
|
||||
"
|
||||
>
|
||||
{{ entry }}
|
||||
</li>
|
||||
</ul>
|
||||
<br />
|
||||
<h4>CanSat</h4>
|
||||
<img
|
||||
src="/images/cansat/cansat_03.jpg"
|
||||
alt="Sample Image"
|
||||
class="float-right"
|
||||
/>
|
||||
<ul>
|
||||
<li
|
||||
v-for="entry in AchievementsList.tanegasimaRocketContest
|
||||
.cansat"
|
||||
:key="
|
||||
AchievementsList.tanegasimaRocketContest.cansat.indexOf(
|
||||
entry
|
||||
)
|
||||
"
|
||||
>
|
||||
{{ entry }}
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>衛星設計コンテスト</h3>
|
||||
<ul>
|
||||
<li
|
||||
v-for="entry in AchievementsList.satelliteDesignContest"
|
||||
:key="
|
||||
AchievementsList.satelliteDesignContest.indexOf(entry)
|
||||
"
|
||||
>
|
||||
{{ entry }}
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>全国高等専門学校 宇宙コンテスト(宇宙コン)</h3>
|
||||
<ul>
|
||||
<li
|
||||
v-for="entry in AchievementsList.nationalTechincalCollegeSpaceContest"
|
||||
:key="
|
||||
AchievementsList.nationalTechincalCollegeSpaceContest.indexOf(
|
||||
entry
|
||||
)
|
||||
"
|
||||
>
|
||||
{{ entry }}
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>その他活動実績 (イベントなど)</h2>
|
||||
<img
|
||||
src="/images/uchu_fea.jpg"
|
||||
alt="Sample Image"
|
||||
class="float-right"
|
||||
/>
|
||||
<ul>
|
||||
<li
|
||||
v-for="entry in AchievementsList.other"
|
||||
:key="AchievementsList.other.indexOf(entry)"
|
||||
>
|
||||
{{ entry }}
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</main>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
@import url("~/assets/styles/page.css");
|
||||
|
||||
ul li {
|
||||
line-height: 24pt;
|
||||
}
|
||||
|
||||
ul li::marker {
|
||||
content: "☆ ";
|
||||
}
|
||||
</style>
|
||||
|
||||
129
pages/about/for-middle-schoolers-and-new-comers.vue
Normal file
@@ -0,0 +1,129 @@
|
||||
<script setup lang="ts">
|
||||
import SiteInfo from "~/assets/siteinfo.json";
|
||||
|
||||
const memberGradeRatioDate: string = new Date(
|
||||
SiteInfo.memberGradeRatio.date
|
||||
).toLocaleDateString("ja-JP-u-ca-japanese", {
|
||||
year: "numeric",
|
||||
month: "long",
|
||||
day: "numeric",
|
||||
});
|
||||
const memberDepartmentRatioDate: string = new Date(
|
||||
SiteInfo.memberDepartmentRatio.date
|
||||
).toLocaleDateString("ja-JP-u-ca-japanese", {
|
||||
year: "numeric",
|
||||
month: "long",
|
||||
day: "numeric",
|
||||
});
|
||||
const memberTotal: number =
|
||||
SiteInfo.memberGradeRatio.first +
|
||||
SiteInfo.memberGradeRatio.second +
|
||||
SiteInfo.memberGradeRatio.third +
|
||||
SiteInfo.memberGradeRatio.fourth +
|
||||
SiteInfo.memberGradeRatio.fifth;
|
||||
|
||||
useSeoMeta(
|
||||
generateSeoMeta(
|
||||
"中学生・新入生向けページ",
|
||||
"岐阜高専の新入生や岐阜高専を目指す中学生など向けのページです。",
|
||||
"/sera-logo-text.svg"
|
||||
)
|
||||
);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<PageTop
|
||||
text="中学生・新入生向けページ"
|
||||
image-path="/images/page-top.jpg"
|
||||
/>
|
||||
<main>
|
||||
<h3>SERAに興味があるみなさんへ</h3>
|
||||
|
||||
<QAndABox question="SERAについて簡単に教えて!">
|
||||
<p>宇宙分野に興味ある学生が集まった団体です。</p>
|
||||
<p>
|
||||
具体的には、教育用の模型ロケットや飲料缶サイズの模型人口衛星を設計、製作しています。
|
||||
</p>
|
||||
<p>
|
||||
宇宙理工学に関する知識とスキルを身に付けると共に、競技会や宇宙系の教育イベントの参加を通じて、
|
||||
人間力と実践力を養うことが出来ます。
|
||||
</p>
|
||||
<NuxtLink to="/about/sera"> 詳しくはこちら </NuxtLink>
|
||||
</QAndABox>
|
||||
|
||||
<QAndABox
|
||||
question="SERAでの活動を通して、どのような力を身に付けることができますか?"
|
||||
>
|
||||
<p>
|
||||
コンピュータを使った製図(CAD)のスキル、電子回路の知識、プログラミング能力
|
||||
などの専門技術のほか、プロジェクトの進め方やチームワークのスキルなど、技術者
|
||||
としての人間性を身に付けることが出来ます。
|
||||
</p>
|
||||
<NuxtLink to="/projects/education">詳しくはこちら</NuxtLink>
|
||||
</QAndABox>
|
||||
|
||||
<QAndABox question="活動時間はいつ?">
|
||||
<p>
|
||||
授業終了後から、18:30まで活動しています。土日祝日は大会等が無い限りお休みです。
|
||||
</p>
|
||||
</QAndABox>
|
||||
|
||||
<QAndABox question="活動場所はどこ?">
|
||||
<p></p>
|
||||
</QAndABox>
|
||||
|
||||
<QAndABox question="Rocket開発チームでやっている事は?">
|
||||
<p>モデルロケットの設計、製作を行っています。</p>
|
||||
<p>
|
||||
小型のものから、CanSat開発チームが作成した缶サットを積むことのできるものまで、大きさは様々です。
|
||||
</p>
|
||||
<NuxtLink to="/projects/rocket"> 詳しくはこちら </NuxtLink>
|
||||
</QAndABox>
|
||||
|
||||
<QAndABox question="CanSat開発チームでやっている事は?">
|
||||
<p>
|
||||
「缶サット」と呼ばれる350ml缶サイズのの模擬人工衛星を製作しています。
|
||||
</p>
|
||||
<p>
|
||||
「投下型」「設置型」「走行型」など、工夫次第で様々な種類のものを製作できます。
|
||||
また、競技の種類によっては、1kgを超える大きさにもなる「ローバー」も製作しています。
|
||||
</p>
|
||||
<NuxtLink to="/projects/cansat"> 詳しくはこちら </NuxtLink>
|
||||
</QAndABox>
|
||||
|
||||
<QAndABox question="Rocket・CanSat以外で行っている活動は?">
|
||||
<p>
|
||||
「CubeSat」と呼ばれる、10cm x 10cm x
|
||||
20cmサイズの超小型衛星の開発をしています。
|
||||
</p>
|
||||
<p>全国の高専と連携して、開発を行っています。</p>
|
||||
<NuxtLink to="/projects/kosen-x"> 詳しくはこちら </NuxtLink>
|
||||
</QAndABox>
|
||||
|
||||
<QAndABox question="何人で活動していますか?">
|
||||
<p>
|
||||
{{ memberGradeRatioDate }}現座、 1年生が{{
|
||||
SiteInfo.memberGradeRatio.first
|
||||
}}人、 2年生が{{ SiteInfo.memberGradeRatio.second }}人、
|
||||
3年生が{{ SiteInfo.memberGradeRatio.third }}人、 4年生が{{
|
||||
SiteInfo.memberGradeRatio.fourth
|
||||
}}人、 5年生が{{ SiteInfo.memberGradeRatio.fifth }}人の 合計{{
|
||||
memberTotal
|
||||
}}人で活動しています。
|
||||
</p>
|
||||
</QAndABox>
|
||||
</main>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
main {
|
||||
display: block;
|
||||
margin-inline: auto;
|
||||
}
|
||||
|
||||
h3 {
|
||||
width: fit-content;
|
||||
color: var(--neptune1);
|
||||
margin-inline: auto;
|
||||
}
|
||||
</style>
|
||||
@@ -1,3 +1,216 @@
|
||||
<script setup lang="ts">
|
||||
const { data } = await useFetch("/api/getGalleryImages");
|
||||
|
||||
enum Direction {
|
||||
FORWARD,
|
||||
BACKWARD,
|
||||
}
|
||||
|
||||
const showViewer = ref<boolean>(false);
|
||||
const imagePathViewer = ref<string>("");
|
||||
const captionViewer = ref<string>("");
|
||||
const indexViewer = ref<number>(0);
|
||||
|
||||
const openViewer = (entry: GalleryEntry) => {
|
||||
showViewer.value = true;
|
||||
imagePathViewer.value = entry.imagePath;
|
||||
captionViewer.value = entry.caption;
|
||||
indexViewer.value = data.value?.indexOf(entry) as number;
|
||||
document.getElementsByTagName("body")[0].classList.add("no_scroll");
|
||||
};
|
||||
|
||||
const closeViewer = () => {
|
||||
showViewer.value = false;
|
||||
document.getElementsByTagName("body")[0].classList.remove("no_scroll");
|
||||
};
|
||||
|
||||
const changeImage = (direction: number) => {
|
||||
const lastIndex = (data.value?.length as number) - 1;
|
||||
const delta = direction === Direction.FORWARD ? 1 : -1;
|
||||
let newIndex = indexViewer.value + delta;
|
||||
if (newIndex < 0) {
|
||||
newIndex = lastIndex;
|
||||
} else if (newIndex > lastIndex) {
|
||||
newIndex = 0;
|
||||
}
|
||||
const nextEntry = data.value?.at(newIndex);
|
||||
indexViewer.value = data.value?.indexOf(
|
||||
nextEntry as GalleryEntry
|
||||
) as number;
|
||||
imagePathViewer.value = nextEntry?.imagePath as string;
|
||||
captionViewer.value = nextEntry?.caption as string;
|
||||
};
|
||||
|
||||
useSeoMeta(
|
||||
generateSeoMeta(
|
||||
"写真集",
|
||||
"岐阜高専宇宙工学研究会の出場大会などでの写真です。",
|
||||
"/sera-logo-text.svg"
|
||||
)
|
||||
);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>Page: gallery</div>
|
||||
<PageTop text="写真集" image-path="/images/page-top.jpg" />
|
||||
<main>
|
||||
<p>大会や日々の活動の様子をアップロードしていきます</p>
|
||||
<div class="image-list">
|
||||
<div
|
||||
v-for="entry in data"
|
||||
class="image-thumbnail"
|
||||
@click="openViewer(entry)"
|
||||
:key="entry.id"
|
||||
>
|
||||
<img :src="entry.imagePath" :alt="entry.caption" />
|
||||
<figcaption>{{ entry.caption }}</figcaption>
|
||||
</div>
|
||||
</div>
|
||||
<Transition name="image-viewer-transition">
|
||||
<div class="image-viewer" v-if="showViewer">
|
||||
<button @click="closeViewer" class="close">
|
||||
<Icon name="ic:baseline-close" />
|
||||
</button>
|
||||
<img :src="imagePathViewer" :alt="captionViewer" />
|
||||
<figcaption>{{ captionViewer }}</figcaption>
|
||||
<button @click="changeImage(Direction.FORWARD)" class="next">
|
||||
<Icon name="material-symbols:arrow-forward-rounded" />
|
||||
</button>
|
||||
<button @click="changeImage(Direction.BACKWARD)" class="back">
|
||||
<Icon name="material-symbols:arrow-back-rounded" />
|
||||
</button>
|
||||
</div>
|
||||
</Transition>
|
||||
</main>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
main {
|
||||
justify-self: center;
|
||||
}
|
||||
|
||||
.image-list {
|
||||
width: fit-content;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
grid-template-rows: auto;
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.image-thumbnail {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
width: 20rem;
|
||||
height: 15rem;
|
||||
background-color: var(--starlight1);
|
||||
border-radius: 1rem;
|
||||
transition: scale 0.2s ease-in-out;
|
||||
}
|
||||
|
||||
.image-thumbnail:hover {
|
||||
background-color: var(--starlight5);
|
||||
cursor: pointer;
|
||||
scale: 105%;
|
||||
transition: scale 0.2s ease-in-out;
|
||||
}
|
||||
|
||||
.image-thumbnail img {
|
||||
width: 15rem;
|
||||
height: 10rem;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.image-thumbnail figcaption {
|
||||
width: 15rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.image-viewer {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 10;
|
||||
display: grid;
|
||||
grid-template-columns: 5rem auto 5rem;
|
||||
grid-template-rows: 5rem auto 5rem;
|
||||
grid-template-areas:
|
||||
"top top close"
|
||||
"left image right"
|
||||
"caption caption caption";
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background-color: rgba(70, 70, 70, 0.9);
|
||||
}
|
||||
|
||||
.image-viewer img {
|
||||
width: max-content;
|
||||
height: auto;
|
||||
max-height: 80vh;
|
||||
grid-area: image;
|
||||
justify-self: center;
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.image-viewer figcaption {
|
||||
color: var(--sunlight);
|
||||
font-size: 24pt;
|
||||
grid-area: caption;
|
||||
justify-self: center;
|
||||
}
|
||||
|
||||
.image-viewer .close {
|
||||
grid-area: close;
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
place-self: center;
|
||||
& > span {
|
||||
display: flex;
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
place-content: center;
|
||||
}
|
||||
}
|
||||
|
||||
.image-viewer .next {
|
||||
grid-area: right;
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
place-self: center;
|
||||
place-content: center;
|
||||
& > span {
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.image-viewer .back {
|
||||
grid-area: left;
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
place-self: center;
|
||||
& > span {
|
||||
display: flex;
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
place-content: center;
|
||||
}
|
||||
}
|
||||
|
||||
.image-viewer-transition-enter-active,
|
||||
.image-viewer-transition-leave-active {
|
||||
transition: opacity 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.image-viewer-transition-enter-from,
|
||||
.image-viewer-transition-leave-to {
|
||||
opacity: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style>
|
||||
.no_scroll {
|
||||
height: 100%;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,3 +1,67 @@
|
||||
<script setup lang="ts">
|
||||
useSeoMeta(
|
||||
generateSeoMeta(
|
||||
"About Us",
|
||||
"岐阜高専宇宙工学研究会についてのページです。",
|
||||
"/sera-logo-text.svg"
|
||||
)
|
||||
);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>Page: index</div>
|
||||
<PageTop text="About Us" image-path="/images/page-top.jpg" />
|
||||
<PankuzuList />
|
||||
<main>
|
||||
<ul>
|
||||
<li>
|
||||
<LinkCard
|
||||
title="SERAについて"
|
||||
description="岐阜工業高等専門学校宇宙工学研究会【SERA】の概要です。"
|
||||
link="/about/sera"
|
||||
/>
|
||||
</li>
|
||||
<li>
|
||||
<LinkCard
|
||||
title="活動実績"
|
||||
description="SERAの活動実績、受賞歴を紹介します。"
|
||||
link="/about/achievements"
|
||||
/>
|
||||
</li>
|
||||
<li>
|
||||
<LinkCard
|
||||
title="写真集"
|
||||
description="大会や普段の活動での様子です。"
|
||||
link="/about/gallery"
|
||||
/>
|
||||
</li>
|
||||
<li>
|
||||
<LinkCard
|
||||
title="中学生・新入生向け"
|
||||
description="部活のFAQを集めてみました。"
|
||||
link="/about/for-middle-schoolers-and-new-comers"
|
||||
/>
|
||||
</li>
|
||||
</ul>
|
||||
</main>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
ul {
|
||||
list-style: none;
|
||||
display: grid;
|
||||
gap: 20px;
|
||||
grid: repeat(2, 1fr) / repeat(2, 1fr);
|
||||
width: fit-content;
|
||||
padding: 0;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
main {
|
||||
margin: var(--main-margin-top-bottom) 0;
|
||||
}
|
||||
ul {
|
||||
grid: repeat(3, 1fr) / 1fr;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,3 +1,87 @@
|
||||
<script setup lang="ts">
|
||||
import SiteInfo from "~/assets/siteinfo.json";
|
||||
|
||||
useSeoMeta(
|
||||
generateSeoMeta(
|
||||
"SERAについて",
|
||||
"岐阜高専宇宙工学研究会についてのページです。",
|
||||
"/sera-logo-text.svg"
|
||||
)
|
||||
);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>Page: sera</div>
|
||||
<PageTop text="SERAについて" image-path="/images/page-top.jpg" />
|
||||
<main>
|
||||
<section>
|
||||
<img src="/sera-logo-text.svg" alt="SERA Logo" class="float-left" />
|
||||
<p>
|
||||
宇宙分野に興味ある学生が集い、宇宙理工学に関する知識を身に付けると共に、宇宙分野に関連する各種競技会へ参加して人間力と実践力を養うことを目的に活動しています。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>岐阜高専宇宙工学研究会 について</h2>
|
||||
<p>
|
||||
超小型衛星開発を目指す有志の団体として2016年度に発足、2018年度より岐阜高専の正式な同好会として活動し、2022年度より岐阜高専の正式なクラブとして活動しています。
|
||||
</p>
|
||||
<p>
|
||||
宇宙工学研究会の英語表記{{
|
||||
`"${SiteInfo.clubNameLong}"`
|
||||
}}の頭文字をとって【{{
|
||||
SiteInfo.clubNameAbbreviation
|
||||
}}(セラ)】と呼んでいます。
|
||||
</p>
|
||||
<p>部長 : {{ SiteInfo.headOfClub }}</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>活動内容</h2>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>各種競技会への参加</h3>
|
||||
<p>
|
||||
主に缶サット甲子園・種子島ロケットコンテストに出場しており、競技用の缶サット・モデルロケットを製作しています。
|
||||
</p>
|
||||
<p>
|
||||
活動の詳細については、
|
||||
<NuxtLink to="/projects">Projects</NuxtLink>
|
||||
や
|
||||
<NuxtLink to="/about/achievements">活動実績</NuxtLink>
|
||||
のページをご覧ください。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>宇宙理工学に関する学習</h3>
|
||||
<p>
|
||||
缶サットやモデルロケットの製作を通じたOJT (On the Job Training :
|
||||
実際の活動を通じて、知識や技術などを身に付ける教育) により、
|
||||
実践力を身に付ける活動を行っている他、
|
||||
高専スペース連携の「高専スペースアカデミア」、
|
||||
岐阜県の「宇宙工学講座」などの遠隔講義に参加し、
|
||||
宇宙理工学について学習しています。
|
||||
</p>
|
||||
<p>
|
||||
また、高専スペースアカデミアの一環として8月下旬に愛媛県新居浜市で開催される3泊4日の合宿形式で行われる宇宙教育イベント「高専スペースキャンプ」に参加しています。
|
||||
その他、サイエンスボランティアや日本航空宇宙学会関係のイベント等にも出展することもあり、コミュニケーション能力などの人間力も養うこともできます。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>高専連携による超小型衛星開発</h3>
|
||||
<p>
|
||||
高専スペース連携に参画する高専を中心として、超小型衛星の一種であるCubeSat(キューブサット)を開発しています。
|
||||
</p>
|
||||
<p>
|
||||
2021年11月9日にはKOSEN-1が打ち上げられ、現在JAXAの革新的衛星技術実証3号機で打ち上げ予定のKOSEN-2(代表
|
||||
: 米子高専)の開発が進められています。
|
||||
</p>
|
||||
</section>
|
||||
</main>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
@import url("~/assets/styles/page.css");
|
||||
</style>
|
||||
|
||||
@@ -28,29 +28,30 @@ useSeoMeta(
|
||||
<h3>News</h3>
|
||||
<div></div>
|
||||
<ul id="news-list">
|
||||
<li v-for="entry in data" :key="(entry.date as number)">
|
||||
<li v-for="entry in data" :key="entry.date as number">
|
||||
<div>
|
||||
<small>
|
||||
{{
|
||||
new Date(entry.date as number).toLocaleDateString(
|
||||
"ja-JP",
|
||||
{ dateStyle: "medium" }
|
||||
)
|
||||
new Date(
|
||||
entry.date as number
|
||||
).toLocaleDateString("ja-JP", {
|
||||
dateStyle: "medium",
|
||||
})
|
||||
}}
|
||||
</small>
|
||||
<div class="new-label" v-if="data?.indexOf(entry) < 2">
|
||||
NEW!
|
||||
</div>
|
||||
</div>
|
||||
<article
|
||||
v-html="marked.parse(entry.cardContent as string)"
|
||||
></article>
|
||||
<NuxtLink
|
||||
v-if="entry.entryType === EntryType.Article"
|
||||
:to="(entry.linkPath as string)"
|
||||
:to="entry.linkPath as string"
|
||||
>
|
||||
<Icon
|
||||
name="material-symbols:keyboard-double-arrow-right-rounded"
|
||||
/>
|
||||
Read More
|
||||
<Icon name="material-symbols:arrow-forward-rounded" />
|
||||
<div>Read More</div>
|
||||
</NuxtLink>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -62,7 +63,7 @@ useSeoMeta(
|
||||
data-dnt="true"
|
||||
data-align="center"
|
||||
data-theme="dark"
|
||||
:data-height="16 * 70"
|
||||
:data-height="16 * 40"
|
||||
:data-width="16 * 33"
|
||||
href="https://twitter.com/SERA_NITGC?ref_src=twsrc%5Etfw"
|
||||
>
|
||||
@@ -115,13 +116,19 @@ main {
|
||||
}
|
||||
& li > *:first-child {
|
||||
margin-left: 0;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
& li > *:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
& li small {
|
||||
align-content: center;
|
||||
}
|
||||
& li .new-label {
|
||||
background-color: var(--sun2);
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: auto 0.5rem;
|
||||
}
|
||||
& li a {
|
||||
text-decoration: none;
|
||||
@@ -141,10 +148,10 @@ main {
|
||||
place-self: center;
|
||||
width: fit-content;
|
||||
& > .twitter-timeline-rendered {
|
||||
display: unset;
|
||||
width: unset;
|
||||
max-width: unset;
|
||||
margin: unset;
|
||||
display: unset !important;
|
||||
width: unset !important;
|
||||
max-width: unset !important;
|
||||
margin: unset !important;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,10 +169,36 @@ main {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
#news-list {
|
||||
& li {
|
||||
min-height: 5rem;
|
||||
}
|
||||
& li > *:first-child {
|
||||
flex-direction: column;
|
||||
}
|
||||
& li .new-label {
|
||||
margin: 0.5rem auto;
|
||||
}
|
||||
& li a div {
|
||||
display: none;
|
||||
}
|
||||
& li a span {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
}
|
||||
}
|
||||
|
||||
#twitter {
|
||||
margin: 1rem 0;
|
||||
width: 90%;
|
||||
justify-self: center;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
& > .twitter-timeline-rendered iframe {
|
||||
position: absolute;
|
||||
inset: 50% auto auto 50%;
|
||||
translate: -50% -50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,19 +1,24 @@
|
||||
<script setup lang="ts">
|
||||
const { data } = await useFetch("/api/getNewsList");
|
||||
|
||||
useSeoMeta(
|
||||
generateSeoMeta(
|
||||
"News",
|
||||
"岐阜高専宇宙工学研究会からのニュースです。",
|
||||
"/sera-logo-text.svg"
|
||||
)
|
||||
);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<PageTop
|
||||
text="News"
|
||||
image-path="/images/news-top.jpg"
|
||||
/>
|
||||
<PageTop text="News" image-path="/images/news-top.jpg" />
|
||||
<main>
|
||||
<div class="news-list">
|
||||
<NewsCard
|
||||
v-for="article in data"
|
||||
:key="article.date as number"
|
||||
:news-entry="article"
|
||||
:is-new="data?.indexOf(article) < 2"
|
||||
:is-new="(data?.indexOf(article) as number) < 2"
|
||||
></NewsCard>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
@@ -1,3 +1,108 @@
|
||||
<script setup lang="ts">
|
||||
useSeoMeta(
|
||||
generateSeoMeta(
|
||||
"CanSat開発チーム",
|
||||
"岐阜高専宇宙工学研究会の「CanSat開発チーム」についてのページです。",
|
||||
"/images/cansat_top.jpg"
|
||||
)
|
||||
);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>Page: cansat</div>
|
||||
<PageTop text="CanSat開発チーム" image-path="/images/page-top.jpg" />
|
||||
<main>
|
||||
<section>
|
||||
<img
|
||||
src="/images/cansat_top.jpg"
|
||||
alt="CanSat top image"
|
||||
class="float-left"
|
||||
/>
|
||||
<p>岐阜高専宇宙工学研究会【SERA】CanSat開発チームです。</p>
|
||||
<p>
|
||||
CanSat開発チームでは、主にCanSat(缶サット)を製作し、缶サット製作を通じて、機械工学、電気電子工学、情報工学、制御工学等を組み合わせた設計・製作・評価能力の向上を目指しています。
|
||||
</p>
|
||||
<p>
|
||||
また、CanSatの各種競技会にも出場している他、オリジナルのCanSatローバーキットの開発も行っております。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>CanSatとは</h2>
|
||||
<img
|
||||
src="/images/cansat/cansat_01.jpg"
|
||||
alt="CanSat"
|
||||
class="float-right"
|
||||
/>
|
||||
<p>
|
||||
CanSatとは、教育用の缶サイズの模擬人工衛星で「宇宙開発の縮小版」とも言われています。漫画『宇宙兄弟』11~12巻では、主人公ムッタらの宇宙飛行士候補生の訓練の一環としてアメリカのARLISSという実在する大会に出場する場面があるなど、宇宙教育の面において注目されている存在です。
|
||||
</p>
|
||||
<p>
|
||||
CanSatには350mL缶サイズやその3倍程度のOpenClassなどのサイズがあり、規定のサイズの中にマイコンやセンサ、モータなどの素子を組み込み、ロケットや気球で上空から放出し、パラシュート等を使用して降下している間や着地後に動作する物となっています。降下中に動作するものから着地後に移動するようなものまで、様々なタイプのCanSatが作られています。
|
||||
</p>
|
||||
<p>
|
||||
SERAが参加している缶サット甲子園では350mL缶サイズ、種子島ロケットコンテストでは
|
||||
OpenClass 直径154mm・高さ300mm以下
|
||||
という規定があり、規定(レギュレーション)は大会ごとにまちまちとなっています。
|
||||
</p>
|
||||
<p>
|
||||
SERAでは、様々なタイプのCanSatの中でも特に「ローバー型」と呼ばれる、駆動部がついており移動機構を備えたCanSatの開発に力を入れております。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>CanSat開発チームの活動</h2>
|
||||
<img
|
||||
src="/images/cansat/cansat_02.jpg"
|
||||
alt="SERA自作ロケット"
|
||||
class="float-left"
|
||||
/>
|
||||
<p>
|
||||
CanSat開発チームでは、毎年缶サット甲子園と種子島ロケットコンテストの2大会に出場しています。優勝を目指してCanSatの設計・製作・改良などを行っています。
|
||||
</p>
|
||||
<p>
|
||||
また新たな試みとして、新入会員の教育題材となるような「教育用ローバーキット」の開発を行っております。
|
||||
</p>
|
||||
<p>
|
||||
CanSat開発チームの活動・受賞歴の詳細は
|
||||
<NuxtLink to="/about/achievements"
|
||||
>『活動実績』のページ</NuxtLink
|
||||
>
|
||||
をご覧ください。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>缶サット甲子園</h3>
|
||||
<img
|
||||
src="/images/cansat/koshien2020.jpg"
|
||||
alt="缶サット甲子園"
|
||||
class="float-right"
|
||||
/>
|
||||
<p>
|
||||
斬新で独創的な缶サットのCoolさを競う大会として「缶サット甲子園」があります。自分たちでミッションを考えて独自の缶サットを開発し、運用、プレゼンまで行います。様々な技術や経験を身に付けることが出来る大会です。
|
||||
高校生向けの大会となるため、高専では3年生以下でチームを結成し、出場しています。
|
||||
</p>
|
||||
<p>
|
||||
また
|
||||
<NuxtLink to="/projects/rocket">Rocket開発チーム</NuxtLink>
|
||||
と協力し、大会や校内試験で使用する缶サット打ち上げ用ロケットの開発も行っています。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>種子島ロケットコンテスト</h3>
|
||||
<img
|
||||
src="/images/cansat/seratank-1.png"
|
||||
alt="SERATANK-1"
|
||||
class="float-left"
|
||||
/>
|
||||
<p>
|
||||
CanSat開発チームでは、毎年ペイロード部門に出場しています。優勝を目指して新機体の開発を行っています。
|
||||
</p>
|
||||
</section>
|
||||
</main>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
@import url("~/assets/styles/page.css");
|
||||
</style>
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
<template>
|
||||
<div>Page: edu-robot</div>
|
||||
</template>
|
||||
100
pages/projects/education.vue
Normal file
@@ -0,0 +1,100 @@
|
||||
<script setup lang="ts">
|
||||
useSeoMeta(
|
||||
generateSeoMeta(
|
||||
"教育プロジェクト",
|
||||
"岐阜高専宇宙工学研究会の教育プロジェクトについてのページです。",
|
||||
"/images/education/education-1.jpg"
|
||||
)
|
||||
);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<PageTop text="教育プロジェクト" image-path="/images/page-top.jpg" />
|
||||
<main>
|
||||
<section>
|
||||
<h2>新入生研修</h2>
|
||||
<p>
|
||||
人工衛星やロケットを開発するためには、それ相応の技術が必要です。
|
||||
</p>
|
||||
<p>
|
||||
SERAの新人研修では、新入生へ「モデルロケット」「プログラミング」「CAD」「材料の加工」「資料作成」の技術を教え、
|
||||
大会への参加などの経験を積むための準備をします。
|
||||
1連の研修が終わると、メンバーと共に大会や活動への参加を通して、実践的な技術を身に着けられます。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>研修で使用する機材/ソフトウェア</h2>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>AlphaⅢ</h3>
|
||||
<img
|
||||
src="/images/rocket/alpha3.jpg"
|
||||
alt="Alpha III"
|
||||
class="float-left"
|
||||
/>
|
||||
<p>教育用に使われる、小型の火薬ロケットです。</p>
|
||||
<p>
|
||||
モデルロケットの製作、運用の練習として使用しています。
|
||||
教育用と言えど迫力満載で、自作ロケットの基本的な知識を一通り学べます。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Raspberry Pi</h3>
|
||||
<img
|
||||
src="/images/education/raspberry-pi-4.jpg"
|
||||
alt="Raspberry Pi 4"
|
||||
class="float-right"
|
||||
/>
|
||||
<p>Raspberry財団が開発している、マイクロコンピュータです。</p>
|
||||
<p>
|
||||
我々SERAでは、缶サットを動かすためのコンピュータとして使用しています。
|
||||
プログラミング言語は、主にPythonを使用しています。
|
||||
</p>
|
||||
<p>※こちらの画像は、Raspberry Piの公式ホームページのものです。</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Fusion360</h3>
|
||||
<p>
|
||||
機械の設計をするソフトウェアです。
|
||||
研修においては、作成した3Dモデルを3Dプリンタで印刷を行うため、より実践的な設計技術を身に付けることが出来ます。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Word/Excel/PowerPoint</h3>
|
||||
<p>
|
||||
社会人になっても使用する機会の多い、Microsoft社のソフトウェアです。
|
||||
</p>
|
||||
<p>
|
||||
SERAでは、大会のプレゼン作成や各種会議での資料作成の際に使用しています。
|
||||
研修では、これらのソフトウェアを最低限使用できるように教えます。その後は、実際に使用する機会を設けることで、
|
||||
実践を重ねることで経験を積むことが出来ます。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>教育用ローバーの開発</h2>
|
||||
<img
|
||||
src="/images/education/education-1.jpg"
|
||||
alt="教育用ローバー"
|
||||
class="float-left"
|
||||
/>
|
||||
<p>上記の新人研修とは別に、教育用ローバーを開発しています。</p>
|
||||
<p>
|
||||
新人研修をしてゆく中で学ぶ「プログラミング」「CAD」「材料の加工」などの様々な技術をまとめて学ぼうというプロジェクトです。
|
||||
宇宙に興味を持つ学生を増やす、衛星開発に触れる機会を増やすことを目標に、現在は開発中です。
|
||||
</p>
|
||||
<p>
|
||||
アイデアをお持ちの方、教育用ローバーに触れてみたいという方は、是非ご連絡ください。
|
||||
</p>
|
||||
</section>
|
||||
</main>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
@import url("~/assets/styles/page.css");
|
||||
</style>
|
||||
@@ -1,4 +1,11 @@
|
||||
<script setup lang="ts">
|
||||
useSeoMeta(
|
||||
generateSeoMeta(
|
||||
"Projects",
|
||||
"岐阜高専宇宙工学研究会の活動の詳細に関するページです。",
|
||||
"/sera-logo-text.svg"
|
||||
)
|
||||
);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -6,172 +13,58 @@
|
||||
<main>
|
||||
<ul class="cards-list">
|
||||
<li>
|
||||
<NuxtLink to="/projects/cansat">
|
||||
<img src="/images/cansat_top.jpg" alt="CanSat-s">
|
||||
<h2>CanSat開発チーム</h2>
|
||||
<p>SERA CanSat開発チームです。缶サットの製作を中心に活動しており、人工衛星などに関する知識を高めることを目指しています。</p>
|
||||
</NuxtLink>
|
||||
<LinkCard
|
||||
title="Rocket開発チーム"
|
||||
description="SERA Rocket開発チームです。モデルロケットの製作を中心に活動しており、ロケットに関する知識を高めることを目指しています。"
|
||||
link="/projects/rocket"
|
||||
image-path="/images/rocket_top.jpg"
|
||||
/>
|
||||
</li>
|
||||
<li>
|
||||
<NuxtLink to="/projects/rocket">
|
||||
<img src="/images/rocket_top.jpg" alt="ロケット達">
|
||||
<h2>Rocket開発チーム</h2>
|
||||
<p>SERA Rocket開発チームです。モデルロケットの製作を中心に活動しており、ロケットに関する知識を高めることを目指しています。</p>
|
||||
</NuxtLink>
|
||||
<LinkCard
|
||||
title="CanSat開発チーム"
|
||||
description="SERA CanSat開発チームです。缶サットの製作を中心に活動しており、人工衛星などに関する知識を高めることを目指しています。"
|
||||
link="/projects/cansat"
|
||||
image-path="/images/cansat_top.jpg"
|
||||
/>
|
||||
</li>
|
||||
<li>
|
||||
<NuxtLink to="/projects/edu-robot">
|
||||
<img src="/images/education-1.jpg" alt="教育用ローバー">
|
||||
<h2>教育プロジェクト</h2>
|
||||
<p>SERAでは主に新入会員の教育を目的に、教育用ローバー(CanSat)の開発を行っています。外部でも使用できるようなキットを目指して開発中です。</p>
|
||||
</NuxtLink>
|
||||
<LinkCard
|
||||
title="教育プロジェクト"
|
||||
description="SERAでは主に新入会員の教育を目的に、教育用ローバー(CanSat)の開発を行っています。外部でも使用できるようなキットを目指して開発中です。"
|
||||
link="/projects/education"
|
||||
image-path="/images/education/education-1.jpg"
|
||||
/>
|
||||
</li>
|
||||
<li>
|
||||
<NuxtLink to="/projects/kosen-x">
|
||||
<img src="/images/kosen1_gunma-cgv5-a.JPG" alt="KOSEN-1">
|
||||
<h2>CubeSat KOSEN-X</h2>
|
||||
<p>高専連携による超小型衛星開発についてです。高専スペース連携が中心となって製作しているCubeSatのプロジェクトに一部の部員が参加させて頂いております。</p>
|
||||
</NuxtLink>
|
||||
<LinkCard
|
||||
title="CubeSat KOSEN-X"
|
||||
description="高専連携による超小型衛星開発についてです。高専スペース連携が中心となって製作しているCubeSatのプロジェクトに一部の部員が参加させて頂いております。"
|
||||
link="/projects/kosen-x"
|
||||
image-path="/images/kosen1_gunma-cgv5-a.JPG"
|
||||
/>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<LinkCard title="テスト" description="これはテストカードです。" link="/" image-path="/sera-logo-text.svg" />
|
||||
</main>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.cards-list {
|
||||
--card-width-normal: 25rem;
|
||||
--card-height-normal: 30rem;
|
||||
|
||||
list-style: none;
|
||||
display: grid;
|
||||
grid: repeat(2, var(--card-height-normal)) / repeat(2, var(--card-width-normal));
|
||||
grid: repeat(2, auto) / repeat(2, auto);
|
||||
gap: 2rem;
|
||||
width: fit-content;
|
||||
padding: 0;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.cards-list li {
|
||||
width: var(--card-width-normal);
|
||||
height: var(--card-height-normal);
|
||||
background-color: var(--starlight);
|
||||
border-radius: 1rem;
|
||||
transition: all 0.2s ease-in-out;
|
||||
& > a {
|
||||
display: grid;
|
||||
grid: 13rem 7rem auto / 1fr;
|
||||
padding: 2rem;
|
||||
text-decoration: none;
|
||||
height: calc(100% - 4rem);
|
||||
}
|
||||
}
|
||||
|
||||
.cards-list li:hover {
|
||||
transition: all 0.2s ease-in-out;
|
||||
scale: 105%;
|
||||
}
|
||||
|
||||
.cards-list li a {
|
||||
& > img {
|
||||
width: 20rem;
|
||||
height: auto;
|
||||
max-height: 12rem;
|
||||
place-self: center;
|
||||
}
|
||||
& > h2 {
|
||||
position: relative;
|
||||
color: var(--neptune1);
|
||||
background-color: var(--starlight5);
|
||||
border-radius: 1rem;
|
||||
padding: 1rem 1.5rem;
|
||||
}
|
||||
& > h2::after {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0.75rem;
|
||||
left: 0.6rem;
|
||||
width: 7px;
|
||||
height: 3rem;
|
||||
border-radius: 3px;
|
||||
background-color: var(--neptune1);
|
||||
content: '';
|
||||
}
|
||||
& > p {
|
||||
color: var(--deep-space);
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
main {
|
||||
margin: var(--main-margin-top-bottom) 0;
|
||||
}
|
||||
.cards-list {
|
||||
--card-width-medium: 20rem;
|
||||
--card-height-medium: 25rem;
|
||||
grid: var(--card-height-medium) / repeat(auto-fill, var(--card-width-medium));
|
||||
}
|
||||
.cards-list li {
|
||||
width: var(--card-width-medium);
|
||||
height: var(--card-height-medium);
|
||||
}
|
||||
.cards-list li a {
|
||||
grid: 10rem 5rem auto / 1fr;
|
||||
padding: 1rem;
|
||||
& > img {
|
||||
width: 15rem;
|
||||
margin: 0.5rem 0;
|
||||
}
|
||||
& > h2 {
|
||||
font-size: 16pt;
|
||||
margin: 0.5rem 0;
|
||||
height: fit-content;
|
||||
}
|
||||
& > h2::after {
|
||||
height: 2rem;
|
||||
top: 1rem;
|
||||
width: 5px;
|
||||
}
|
||||
& > p {
|
||||
margin: 0.5rem 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 640px) {
|
||||
main {
|
||||
margin: var(--main-margin-top-bottom) 0;
|
||||
}
|
||||
.cards-list {
|
||||
--card-width-small: 18rem;
|
||||
--card-height-small: 25rem;
|
||||
grid: var(--card-height-small) / repeat(auto-fill, var(--card-width-small));
|
||||
}
|
||||
.cards-list li {
|
||||
width: var(--card-width-small);
|
||||
height: var(--card-height-small);
|
||||
}
|
||||
.cards-list li a {
|
||||
grid: 9rem 5rem auto / 1fr;
|
||||
padding: 1rem;
|
||||
& > img {
|
||||
width: 12rem;
|
||||
margin: 0.5rem 0;
|
||||
}
|
||||
& > h2 {
|
||||
font-size: 16pt;
|
||||
margin: 0.5rem 0;
|
||||
height: fit-content;
|
||||
}
|
||||
& > h2::after {
|
||||
height: 2rem;
|
||||
top: 1rem;
|
||||
width: 5px;
|
||||
}
|
||||
& > p {
|
||||
margin: 0.5rem 0;
|
||||
}
|
||||
grid: repeat(4, 1fr) / 1fr;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,3 +1,87 @@
|
||||
<script setup lang="ts">
|
||||
useSeoMeta(
|
||||
generateSeoMeta(
|
||||
"CubeSat KOSEN-X",
|
||||
"岐阜高専宇宙工学研究会の高専連携衛星プロジェクトに関するページです。",
|
||||
"/images/kosen1_gunma-cgv5-a.JPG"
|
||||
)
|
||||
);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>Page: kosen-x</div>
|
||||
<PageTop text="CubeSat KOSEN-X" image-path="/images/page-top.jpg" />
|
||||
<main>
|
||||
<section>
|
||||
<p>
|
||||
宇宙に打ち上げる本物の超小型人工衛星を他高専の教員や学生と協力して開発するプロジェクトです。
|
||||
</p>
|
||||
<p>
|
||||
高専の授業、実習やSERAで身に付けたことを存分に発揮することで、
|
||||
社会人技術者が仕事で求められるような事柄を学生のうちから経験し、身に付けることが出来ます。
|
||||
</p>
|
||||
<p>
|
||||
2021年11月9日に、高知高専を中心とする木星電波観測技術実証衛星
|
||||
KOSEN-1が打ち上げられ、現在運用されています。
|
||||
並行して、米子高専を中心とする海洋観測データ収集衛星
|
||||
KOSEN-2の開発が進められています。
|
||||
</p>
|
||||
<p>
|
||||
KOSEN-1、KOSEN-2ともに宇宙航空研究開発機構(JAXA)のイプシロンロケットで打ち上げられます。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<p>詳細はこちらから</p>
|
||||
<p>[KOSEN-1]</p>
|
||||
<ul>
|
||||
<li>
|
||||
<NuxtLink
|
||||
to="http://www.kenkai.jaxa.jp/kakushin/kakushin02.html"
|
||||
>
|
||||
JAXA革新的衛星技術実証2号機
|
||||
</NuxtLink>
|
||||
</li>
|
||||
<li>
|
||||
<NuxtLink to="https://www.kochi-ct.ac.jp/news/archives/247">
|
||||
高知高専の新着情報
|
||||
</NuxtLink>
|
||||
</li>
|
||||
</ul>
|
||||
<p>[KOSEN-2]</p>
|
||||
<ul>
|
||||
<li>
|
||||
<NuxtLink
|
||||
to="https://www.kenkai.jaxa.jp/kakushin/kakushin03.html"
|
||||
>
|
||||
JAXA革新的衛星技術実証3号機
|
||||
</NuxtLink>
|
||||
</li>
|
||||
<li>
|
||||
<NuxtLink
|
||||
to="https://www.yonago-k.ac.jp/a112/a116/a117/b383/"
|
||||
>
|
||||
米子高専の新着情報
|
||||
</NuxtLink>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<img src="/images/kosen1_gunma-cgv5-a.JPG" alt="KOSEN-1" />
|
||||
<p>画像:菅原達弥(群馬高専)</p>
|
||||
</section>
|
||||
</main>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
@import url("~/assets/styles/page.css");
|
||||
|
||||
section:last-of-type {
|
||||
width: fit-content;
|
||||
justify-self: center;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 60rem;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,109 +1,102 @@
|
||||
<script setup lang="ts">
|
||||
useSeoMeta(
|
||||
generateSeoMeta(
|
||||
"Rocket開発チーム",
|
||||
"岐阜高専宇宙工学研究会の「Rocket開発チーム」についてのページです。",
|
||||
"/images/rocket_top.jpg"
|
||||
)
|
||||
);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<PageTop text="Rocket開発チーム" image-path="/images/page-top.jpg" />
|
||||
<main>
|
||||
<section>
|
||||
<img src="/images/rocket_top.jpg" alt="Rocket top image" class="float-left">
|
||||
<img
|
||||
src="/images/rocket_top.jpg"
|
||||
alt="Rocket top image"
|
||||
class="float-left"
|
||||
/>
|
||||
<p>岐阜高専・宇宙工学研究会【SERA】Rocket開発チームです。</p>
|
||||
<p>Rocket開発チームは、主に自作のモデルロケットを製作しており、モデルロケット製作を通じた設計・製作・評価能力の向上を目指しています。</p>
|
||||
<p>また、モデルロケットの各種競技会にも出場している他、新入生向けのモデルロケット打上げ体験等を行っております。</p>
|
||||
<p>
|
||||
Rocket開発チームは、主に自作のモデルロケットを製作しており、モデルロケット製作を通じた設計・製作・評価能力の向上を目指しています。
|
||||
</p>
|
||||
<p>
|
||||
また、モデルロケットの各種競技会にも出場している他、新入生向けのモデルロケット打上げ体験等を行っております。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>モデルロケットとは</h2>
|
||||
<img src="/images/rocket/alpha3.jpg" alt="Alpha III" class="float-right">
|
||||
<p>モデルロケットは、火薬エンジンを使用しておよそ時速180km (モデルロケット:AlphaⅢ、エンジン:A8-3の場合) で大空高く飛ぶ模型ロケットです。世界で50年間5億回無事故を記録しています。(日本モデルロケット協会HPより)</p>
|
||||
<p>モデルロケットの打ち上げにはライセンスの取得が必要であり、C型のエンジンを扱うには4級ライセンス、G型ロケットを扱うには3級ライセンスが必要となります。</p>
|
||||
<p>画像は「AlphaⅢ」という、入門用モデルロケットです。約50mほどの高度まで打ち上げることが可能です(A8-3エンジンを使用した場合)。 簡単に製作できるようになっている為、モデルロケット教室やSERA新入生向け打上げ体験などで広く使用されています。</p>
|
||||
<img
|
||||
src="/images/rocket/alpha3.jpg"
|
||||
alt="Alpha III"
|
||||
class="float-right"
|
||||
/>
|
||||
<p>
|
||||
モデルロケットは、火薬エンジンを使用しておよそ時速180km
|
||||
(モデルロケット:AlphaⅢ、エンジン:A8-3の場合)
|
||||
で大空高く飛ぶ模型ロケットです。世界で50年間5億回無事故を記録しています。(日本モデルロケット協会HPより)
|
||||
</p>
|
||||
<p>
|
||||
モデルロケットの打ち上げにはライセンスの取得が必要であり、C型のエンジンを扱うには4級ライセンス、G型ロケットを扱うには3級ライセンスが必要となります。
|
||||
</p>
|
||||
<p>
|
||||
画像は「AlphaⅢ」という、入門用モデルロケットです。約50mほどの高度まで打ち上げることが可能です(A8-3エンジンを使用した場合)。
|
||||
簡単に製作できるようになっている為、モデルロケット教室やSERA新入生向け打上げ体験などで広く使用されています。
|
||||
</p>
|
||||
<p>
|
||||
モデルロケット・エンジンやライセンスについての詳細は、
|
||||
<NuxtLink to="https://www.ja-r.net/">日本モデルロケット協会HP</NuxtLink>
|
||||
<NuxtLink to="https://www.ja-r.net/">
|
||||
日本モデルロケット協会HP
|
||||
</NuxtLink>
|
||||
をご覧ください。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Rocket開発チームの活動</h2>
|
||||
<img src="/images/rocket/rocket_02.jpg" alt="2 staged rocket" class="float-left">
|
||||
<p>Rocket開発チームでは、毎年種子島ロケットコンテストに出場しています。優勝を目指してロケットの設計・解析・製作などを行っています。</p>
|
||||
<img
|
||||
src="/images/rocket/rocket_02.jpg"
|
||||
alt="2 staged rocket"
|
||||
class="float-left"
|
||||
/>
|
||||
<p>
|
||||
Rocket開発チームでは、毎年種子島ロケットコンテストに出場しています。優勝を目指してロケットの設計・解析・製作などを行っています。
|
||||
</p>
|
||||
<p>
|
||||
また、オリジナルのモデルロケットや缶サット搭載用ロケットの製作も行っています。缶サット搭載用ロケットは、缶サット甲子園の大会及び校内試験を行う為に
|
||||
<NuxtLink to="/projects/cansat">CanSat開発チーム</NuxtLink>
|
||||
と協力して製作・改良を行っています。</p>
|
||||
と協力して製作・改良を行っています。
|
||||
</p>
|
||||
<p>
|
||||
Rocket開発チームの活動・受賞歴の詳細は
|
||||
<NuxtLink to="/about/achievements">『活動実績』のページ</NuxtLink>
|
||||
<NuxtLink to="/about/achievements">
|
||||
『活動実績』のページ
|
||||
</NuxtLink>
|
||||
をご覧ください。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>種子島ロケットコンテスト</h3>
|
||||
<p>Rocket開発チームでは、滞空・定点回収部門と高度部門への出場経験があります。第13回大会では、<strong>滞空・定点回収部門で優勝</strong>を収めました。この優勝を機に、同好会へと昇進することが出来たのです。</p>
|
||||
<p>
|
||||
Rocket開発チームでは、滞空・定点回収部門と高度部門への出場経験があります。第13回大会では、<strong>滞空・定点回収部門で優勝</strong>を収めました。この優勝を機に、同好会へと昇進することが出来たのです。
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>缶サット搭載用ロケット</h3>
|
||||
<p>CanSat開発チームと協力し、缶サット甲子園で使用する為のモデルロケットを製作しています。</p>
|
||||
<p>これらはペイロードロケットと呼ばれ、缶サットを上空に打ち上げることを目的に設計されています。</p>
|
||||
<p>
|
||||
CanSat開発チームと協力し、缶サット甲子園で使用する為のモデルロケットを製作しています。
|
||||
</p>
|
||||
<p>
|
||||
これらはペイロードロケットと呼ばれ、缶サットを上空に打ち上げることを目的に設計されています。
|
||||
</p>
|
||||
</section>
|
||||
</main>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
main {
|
||||
display: grid;
|
||||
width: 60%;
|
||||
justify-self: center;
|
||||
}
|
||||
|
||||
section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 20rem;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
strong {
|
||||
color: var(--sun4);
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
main {
|
||||
width: 90%;
|
||||
margin: 1rem;
|
||||
}
|
||||
section {
|
||||
display: inherit;
|
||||
}
|
||||
img {
|
||||
margin: auto !important;
|
||||
}
|
||||
}
|
||||
@import url("~/assets/styles/page.css");
|
||||
</style>
|
||||
BIN
public/images/cansat/cansat_01.jpg
Normal file
|
After Width: | Height: | Size: 480 KiB |
BIN
public/images/cansat/cansat_02.jpg
Normal file
|
After Width: | Height: | Size: 520 KiB |
BIN
public/images/cansat/cansat_03.jpg
Normal file
|
After Width: | Height: | Size: 759 KiB |
BIN
public/images/cansat/koshien2020.jpg
Normal file
|
After Width: | Height: | Size: 171 KiB |
BIN
public/images/cansat/seratank-1.png
Normal file
|
After Width: | Height: | Size: 3.1 MiB |
|
Before Width: | Height: | Size: 293 KiB After Width: | Height: | Size: 293 KiB |
BIN
public/images/education/raspberry-pi-4.jpg
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
public/images/gallery/all-rovers.jpg
Normal file
|
After Width: | Height: | Size: 153 KiB |
BIN
public/images/gallery/kakkuki.jpg
Normal file
|
After Width: | Height: | Size: 232 KiB |
BIN
public/images/gallery/seratank-1.jpg
Normal file
|
After Width: | Height: | Size: 243 KiB |
BIN
public/images/gallery/sr2.jpg
Normal file
|
After Width: | Height: | Size: 141 KiB |
BIN
public/images/gallery/sr2_walking.jpg
Normal file
|
After Width: | Height: | Size: 554 KiB |
BIN
public/images/koshien2020_mission-rogo.png
Normal file
|
After Width: | Height: | Size: 176 KiB |
BIN
public/images/news/championship2020-cansat_1.png
Normal file
|
After Width: | Height: | Size: 742 KiB |
BIN
public/images/news/koshien2020_purezen.jpg
Normal file
|
After Width: | Height: | Size: 220 KiB |
BIN
public/images/news/koshien2020_shugo.jpg
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
public/images/uchu_fea.jpg
Normal file
|
After Width: | Height: | Size: 608 KiB |
51
server/api/getGalleryImages.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* Getting List of URL to the images under /public/images/gallery/
|
||||
* @module api/getGalleryImages
|
||||
*/
|
||||
import sqlite3 from "sqlite3";
|
||||
import path from "path";
|
||||
import { fileURLToPath } from "url";
|
||||
import type { GalleryEntry } from "~/utils/galleryEntry";
|
||||
import { asyncDatabaseRead } from "~/utils/asyncDatabase";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
/**
|
||||
* Handler of getImages event
|
||||
* @name getImagesEventHandler
|
||||
* @param {H3Event<EventHandlerRequest>} event
|
||||
* @returns {Array<GalleryEntry>} list of image entry
|
||||
* @function
|
||||
*/
|
||||
const getGalleryImagesEventHandler = defineEventHandler(async (event: any) => {
|
||||
const database = new sqlite3.Database(
|
||||
path.join(__dirname, "../../assets/databases/gallery.db")
|
||||
);
|
||||
|
||||
const sql = `SELECT * FROM gallery;`;
|
||||
|
||||
let res: Array<GalleryEntry> = new Array<GalleryEntry>(0);
|
||||
|
||||
try {
|
||||
res = await asyncDatabaseRead<Array<GalleryEntry>>(
|
||||
database,
|
||||
sql,
|
||||
(rows) => {
|
||||
return rows as Array<GalleryEntry>;
|
||||
}
|
||||
);
|
||||
} catch (err: any) {
|
||||
const error = err as Error;
|
||||
throw createError({
|
||||
statusCode: 500,
|
||||
statusMessage: error.message,
|
||||
});
|
||||
}
|
||||
|
||||
database.close();
|
||||
|
||||
return res;
|
||||
});
|
||||
|
||||
export default getGalleryImagesEventHandler;
|
||||
@@ -22,7 +22,7 @@ npm run dev # JSファイル変更時に自動リロードが入る開発サー
|
||||
|
||||
## データベース
|
||||
|
||||
テーブル: news
|
||||
### ファイル: news.db / テーブル: news
|
||||
|
||||
* id - PRIMARY KEY - 整数
|
||||
* date - Unix時間 - 整数
|
||||
@@ -32,6 +32,12 @@ npm run dev # JSファイル変更時に自動リロードが入る開発サー
|
||||
* linkPath - ニュースリストで表示されるリンク先 - 文字列
|
||||
* coverImagePath - ニュースリストで表示される画像へのパス - 文字列
|
||||
|
||||
### ファイル: gallery.db / テーブル: gallery
|
||||
|
||||
* id - PRIMARY KEY - 整数
|
||||
* imagePath - 画像へのパス - 文字列
|
||||
* caption - 画像の説明文 - 文字列
|
||||
|
||||
## API(RESTful)
|
||||
|
||||
* `/api/news`
|
||||
@@ -41,3 +47,10 @@ npm run dev # JSファイル変更時に自動リロードが入る開発サー
|
||||
* DELETE: Unix時間で特定されたニュースを削除する - `?target=<Unix時間>`
|
||||
* `/api/news-list`
|
||||
* GET: 全ニュースの情報を取得する
|
||||
|
||||
* `/api/gallery-image`
|
||||
* GET(`/`): IDで指定された画像へのパスと説明文を取得する - `?target=<ID>`
|
||||
* GET(`/list`): 全画像の情報を取得する
|
||||
* POST: 新しい画像の情報を追加する
|
||||
* PUT: 画像の情報を更新する
|
||||
* DELETE: IDで指定された画像の情報を削除する - `?target=<ID>`
|
||||
133
src-manager/api/gallery-image.js
Normal file
@@ -0,0 +1,133 @@
|
||||
import express from 'express';
|
||||
import sqlite3 from 'sqlite3';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { asyncDatabaseRead, asyncDatabaseWrite } from '../utils/asyncDatabase.js';
|
||||
|
||||
const galleryImageAPI = express.Router();
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
const databasePath = path.join(__dirname, "../../assets/databases/gallery.db");
|
||||
|
||||
galleryImageAPI.get('/list', async (request, response) => {
|
||||
const database = new sqlite3.Database(databasePath);
|
||||
const sqlQuery = "SELECT * FROM gallery";
|
||||
|
||||
try {
|
||||
const result = await asyncDatabaseRead(database, sqlQuery, (rows) => {
|
||||
let ret = "";
|
||||
for (const entry of rows) {
|
||||
ret = ret + "<tr>\n";
|
||||
for (const data in entry) {
|
||||
ret = ret + `<td>${entry[data]}</td>\n`;
|
||||
}
|
||||
ret = ret + `<td>\n
|
||||
<button class='delete-button' hx-delete='/api/gallery-image?target=${entry["id"]}'>Delete</button>\n
|
||||
<a href='/update-gallery-image.html?target=${entry["id"]}'><button class='edit-button' hx-confirm='unset'>Edit</button></a>\n
|
||||
</td>\n</tr>\n`;
|
||||
}
|
||||
return ret;
|
||||
});
|
||||
|
||||
database.close()
|
||||
response.send(result);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
database.close();
|
||||
}
|
||||
});
|
||||
|
||||
galleryImageAPI.get('/', async (request, response) => {
|
||||
const database = new sqlite3.Database(databasePath);
|
||||
|
||||
const target = Number(request.query.target);
|
||||
|
||||
if (isNaN(target)) {
|
||||
response.status(500).send("Query is not number");
|
||||
return;
|
||||
}
|
||||
|
||||
const sqlQuery = `SELECT * FROM gallery WHERE id = ${target}`;
|
||||
|
||||
try {
|
||||
const result = await asyncDatabaseRead(database, sqlQuery, (rows) => {return rows[0]});
|
||||
database.close();
|
||||
response.send(result);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
database.close();
|
||||
}
|
||||
});
|
||||
|
||||
galleryImageAPI.post('/', async (request, response) => {
|
||||
const database = new sqlite3.Database(databasePath);
|
||||
|
||||
const imagePath = request.body.imagePath;
|
||||
const caption = request.body.caption;
|
||||
|
||||
const sqlQuery = `INSERT INTO gallery (imagePath, caption) VALUES ("${imagePath}", "${caption}");`;
|
||||
|
||||
try {
|
||||
await asyncDatabaseWrite(database, sqlQuery, () => {
|
||||
console.log("Image added successfully.");
|
||||
});
|
||||
} catch (err) {
|
||||
response.status(500).send(err);
|
||||
}
|
||||
|
||||
database.close();
|
||||
response.end();
|
||||
});
|
||||
|
||||
galleryImageAPI.put('/', async (request, response) => {
|
||||
const database = new sqlite3.Database(databasePath);
|
||||
|
||||
const target = Number(request.body.target);
|
||||
|
||||
if (isNaN(target)) {
|
||||
response.status(500).send("Query is not number");
|
||||
return;
|
||||
}
|
||||
|
||||
const imagePath = request.body.imagePath;
|
||||
const caption = request.body.caption;
|
||||
|
||||
const sqlQuery = `UPDATE gallery SET imagePath = "${imagePath}", caption = "${caption}" WHERE id = ${target};`;
|
||||
|
||||
try {
|
||||
await asyncDatabaseWrite(database, sqlQuery, () => {
|
||||
console.log("Image updated successfully.");
|
||||
});
|
||||
} catch (err) {
|
||||
response.status(500).send(err);
|
||||
}
|
||||
|
||||
database.close();
|
||||
response.end();
|
||||
});
|
||||
|
||||
galleryImageAPI.delete('/', async (request, response) => {
|
||||
const database = new sqlite3.Database(databasePath);
|
||||
|
||||
const target = Number(request.query.target);
|
||||
|
||||
if (isNaN(target)) {
|
||||
response.status(404).send('No Entry Found!');
|
||||
return;
|
||||
}
|
||||
|
||||
const sqlQuery = `DELETE FROM gallery WHERE id = ${target};`;
|
||||
|
||||
try {
|
||||
await asyncDatabaseWrite(database, sqlQuery, () => {
|
||||
console.log("Image deleted successfully.");
|
||||
});
|
||||
} catch (err) {
|
||||
response.status(500).send(err);
|
||||
}
|
||||
|
||||
database.close();
|
||||
response.status(200).send();
|
||||
});
|
||||
|
||||
export default galleryImageAPI;
|
||||
13
src-manager/api/index.js
Normal file
@@ -0,0 +1,13 @@
|
||||
import express from 'express';
|
||||
|
||||
import newsAPI from './news.js';
|
||||
import newsListAPI from './news-list.js';
|
||||
import galleryImageAPI from './gallery-image.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.use('/news', newsAPI);
|
||||
router.use('/news-list', newsListAPI);
|
||||
router.use('/gallery-image', galleryImageAPI);
|
||||
|
||||
export default router;
|
||||
47
src-manager/api/news-list.js
Normal file
@@ -0,0 +1,47 @@
|
||||
import express from 'express';
|
||||
import sqlite3 from 'sqlite3';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { asyncDatabaseRead } from '../utils/asyncDatabase.js';
|
||||
|
||||
const newsListAPI = express.Router();
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
const databasePath = path.join(__dirname, "../../assets/databases/news.db");
|
||||
|
||||
newsListAPI.get('/', async (request, response) => {
|
||||
const database = new sqlite3.Database(databasePath);
|
||||
const sqlQuery = `SELECT * FROM news ORDER BY date DESC;`;
|
||||
try {
|
||||
const result = await asyncDatabaseRead(database, sqlQuery, (rows) => {
|
||||
let ret = "";
|
||||
for (const entry of rows) {
|
||||
ret = ret + "<tr>\n";
|
||||
for (const data in entry) {
|
||||
if (data == "article" || data == "coverImagePath" || data == "linkPath") continue;
|
||||
if (data == "entryType") {
|
||||
ret = ret + `<td>${entry[data] == 0 ? "Article" : "Tweet"}</td>\n`;
|
||||
continue;
|
||||
}
|
||||
if (data == "date") {
|
||||
ret = ret + `<td>${new Date(entry[data]).toLocaleString()}</td>\n`;
|
||||
continue;
|
||||
}
|
||||
ret = ret + `<td>${entry[data]}</td>\n`;
|
||||
}
|
||||
ret = ret + `<td>\n
|
||||
<button class='delete-button' hx-delete='/api/news?target=${entry["date"]}'>Delete</button>\n
|
||||
<a href='/update-news.html?target=${entry["date"]}'><button class='edit-button' hx-confirm='unset'>Edit</button></a>\n
|
||||
</td>\n</tr>\n`;
|
||||
}
|
||||
return ret
|
||||
});
|
||||
database.close();
|
||||
response.send(result);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
database.close();
|
||||
}
|
||||
});
|
||||
|
||||
export default newsListAPI;
|
||||
112
src-manager/api/news.js
Normal file
@@ -0,0 +1,112 @@
|
||||
import express from 'express';
|
||||
import sqlite3 from 'sqlite3';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { asyncDatabaseRead, asyncDatabaseWrite } from '../utils/asyncDatabase.js';
|
||||
|
||||
const newsAPI = express.Router();
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
const databasePath = path.join(__dirname, "../../assets/databases/news.db");
|
||||
|
||||
newsAPI.get('/', async (request, response) => {
|
||||
const database = new sqlite3.Database(databasePath);
|
||||
|
||||
const target = Number(request.query.target);
|
||||
|
||||
if (isNaN(target)) {
|
||||
response.status(500).send("Query is not number");
|
||||
return;
|
||||
}
|
||||
|
||||
const sqlQuery = `SELECT * FROM news WHERE date = ${target}`;
|
||||
|
||||
try {
|
||||
const result = await asyncDatabaseRead(database, sqlQuery, (rows) => {return rows[0]});
|
||||
database.close();
|
||||
response.send(result);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
database.close();
|
||||
}
|
||||
});
|
||||
|
||||
newsAPI.post('/', async (request, response) => {
|
||||
const database = new sqlite3.Database(databasePath);
|
||||
|
||||
const currentDate = new Date();
|
||||
const currentUnixTime = currentDate.valueOf();
|
||||
const entryType = request.body.entryType;
|
||||
const cardContent = request.body.cardContent;
|
||||
const article = request.body.article;
|
||||
const linkPath = entryType == 0 ? `/news/${request.body.linkPath}` : "";
|
||||
const coverImagePath = request.body.coverImagePath;
|
||||
|
||||
const sqlQuery = `INSERT INTO news (date, entryType, cardContent, article, linkPath, coverImagePath) VALUES (${currentUnixTime}, ${entryType}, "${cardContent}", "${article}", "${linkPath}", "${coverImagePath}");`;
|
||||
|
||||
try {
|
||||
await asyncDatabaseWrite(database, sqlQuery, () => {
|
||||
console.log("News added successfully.");
|
||||
});
|
||||
} catch (err) {
|
||||
response.status(500).send(err);
|
||||
}
|
||||
database.close();
|
||||
response.end();
|
||||
});
|
||||
|
||||
newsAPI.put('/', async (request, response) => {
|
||||
const database = new sqlite3.Database(databasePath);
|
||||
|
||||
const target = Number(request.body.target);
|
||||
const entryType = Number(request.body.entryType);
|
||||
const cardContent = request.body.cardContent;
|
||||
const article = request.body.article;
|
||||
const linkPath = entryType == 0 ? `/news/${request.body.linkPath}` : "";
|
||||
const coverImagePath = request.body.coverImagePath;
|
||||
|
||||
if (isNaN(target)) {
|
||||
response.status(500).send('Target is not number');
|
||||
return;
|
||||
}
|
||||
|
||||
const sqlQuery = `UPDATE news SET entryType = ${entryType}, cardContent = "${cardContent}", article = "${article}", linkPath = "${linkPath}", coverImagePath = "${coverImagePath}" WHERE date = ${target};`;
|
||||
|
||||
try {
|
||||
await asyncDatabaseWrite(database, sqlQuery, () => {
|
||||
console.log("News updated successfully.");
|
||||
});
|
||||
} catch (err) {
|
||||
response.status(500).send(err);
|
||||
}
|
||||
|
||||
database.close();
|
||||
response.end();
|
||||
});
|
||||
|
||||
newsAPI.delete('/', async (request, response) => {
|
||||
const database = new sqlite3.Database(databasePath);
|
||||
|
||||
const target = Number(request.query.target);
|
||||
|
||||
if (isNaN(target)) {
|
||||
response.status(404).send('No Entry Found!');
|
||||
return;
|
||||
}
|
||||
|
||||
const sqlQuery = `DELETE FROM news WHERE date = ${target}`;
|
||||
|
||||
try {
|
||||
await asyncDatabaseWrite(database, sqlQuery, () => {
|
||||
console.log("News deleted successfully.");
|
||||
});
|
||||
} catch (err) {
|
||||
response.status(500).send(err);
|
||||
}
|
||||
|
||||
database.close();
|
||||
|
||||
response.status(200).send();
|
||||
});
|
||||
|
||||
export default newsAPI;
|
||||
@@ -1,8 +1,7 @@
|
||||
import express from 'express';
|
||||
import sqlite3 from 'sqlite3';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { asyncDatabaseRead, asyncDatabaseWrite } from './utils/asyncDatabase.js';
|
||||
import router from './api/index.js';
|
||||
|
||||
const app = express();
|
||||
const port = 3001;
|
||||
@@ -14,140 +13,7 @@ app.use(express.static(path.join(__dirname, 'pages')));
|
||||
app.use(express.static(path.join(__dirname, "../assets")));
|
||||
app.use(express.static(path.join(__dirname, "../public")));
|
||||
|
||||
app.get('/api/news-list', async (request, response) => {
|
||||
const database = new sqlite3.Database(path.join(__dirname, "../assets/databases/news.db"));
|
||||
const sqlQuery = `SELECT * FROM news ORDER BY date DESC;`;
|
||||
try {
|
||||
const result = await asyncDatabaseRead(database, sqlQuery, (rows) => {
|
||||
let ret = "";
|
||||
for (const entry of rows) {
|
||||
ret = ret + "<tr>\n";
|
||||
for (const data in entry) {
|
||||
if (data == "article" || data == "coverImagePath" || data == "linkPath") continue;
|
||||
if (data == "entryType") {
|
||||
ret = ret + `<td>${entry[data] == 0 ? "Article" : "Tweet"}</td>\n`;
|
||||
continue;
|
||||
}
|
||||
if (data == "date") {
|
||||
ret = ret + `<td>${new Date(entry[data]).toLocaleString()}</td>\n`;
|
||||
continue;
|
||||
}
|
||||
ret = ret + `<td>${entry[data]}</td>\n`;
|
||||
}
|
||||
ret = ret + `<td>\n
|
||||
<button class='delete-button' hx-delete='/api/news?target=${entry["date"]}'>Delete</button>\n
|
||||
<a href='/update-news.html?target=${entry["date"]}'><button class='edit-button' hx-confirm='unset'>Edit</button></a>\n
|
||||
</td>\n</tr>\n`;
|
||||
}
|
||||
return ret
|
||||
});
|
||||
database.close();
|
||||
response.send(result);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
database.close();
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/api/news', async (request, response) => {
|
||||
const database = new sqlite3.Database(path.join(__dirname, "../assets/databases/news.db"));
|
||||
|
||||
const target = Number(request.query.target);
|
||||
|
||||
if (isNaN(target)) {
|
||||
response.status(500).send("Query is not number");
|
||||
return;
|
||||
}
|
||||
|
||||
const sqlQuery = `SELECT * FROM news WHERE date = ${target}`;
|
||||
|
||||
try {
|
||||
const result = await asyncDatabaseRead(database, sqlQuery, (rows) => {return rows[0]});
|
||||
database.close();
|
||||
response.send(result);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
database.close();
|
||||
}
|
||||
});
|
||||
|
||||
app.post('/api/news', async (request, response) => {
|
||||
const database = new sqlite3.Database(path.join(__dirname, "../assets/databases/news.db"));
|
||||
|
||||
const currentDate = new Date();
|
||||
const currentUnixTime = currentDate.valueOf();
|
||||
const entryType = request.body.entryType;
|
||||
const cardContent = request.body.cardContent;
|
||||
const article = request.body.article;
|
||||
const linkPath = entryType == 0 ? `/news/${request.body.linkPath}` : "";
|
||||
const coverImagePath = request.body.coverImagePath;
|
||||
|
||||
const sqlQuery = `INSERT INTO news (date, entryType, cardContent, article, linkPath, coverImagePath) VALUES (${currentUnixTime}, ${entryType}, "${cardContent}", "${article}", "${linkPath}", "${coverImagePath}");`;
|
||||
|
||||
try {
|
||||
await asyncDatabaseWrite(database, sqlQuery, () => {
|
||||
console.log("News added successfully.");
|
||||
});
|
||||
} catch (err) {
|
||||
response.status(500).send(err);
|
||||
}
|
||||
database.close();
|
||||
response.end();
|
||||
});
|
||||
|
||||
app.put('/api/news', async (request, response) => {
|
||||
const database = new sqlite3.Database(path.join(__dirname, "../assets/databases/news.db"));
|
||||
|
||||
const target = Number(request.body.target);
|
||||
const entryType = Number(request.body.entryType);
|
||||
const cardContent = request.body.cardContent;
|
||||
const article = request.body.article;
|
||||
const linkPath = entryType == 0 ? `/news/${request.body.linkPath}` : "";
|
||||
const coverImagePath = request.body.coverImagePath;
|
||||
|
||||
if (isNaN(target)) {
|
||||
response.status(500).send('Target is not number');
|
||||
return;
|
||||
}
|
||||
|
||||
const sqlQuery = `UPDATE news SET entryType = ${entryType}, cardContent = "${cardContent}", article = "${article}", linkPath = "${linkPath}", coverImagePath = "${coverImagePath}" WHERE date = ${target};`;
|
||||
|
||||
try {
|
||||
await asyncDatabaseWrite(database, sqlQuery, () => {
|
||||
console.log("News updated successfully.");
|
||||
});
|
||||
} catch (err) {
|
||||
response.status(500).send(err);
|
||||
}
|
||||
|
||||
database.close();
|
||||
response.end();
|
||||
});
|
||||
|
||||
app.delete('/api/news', async (request, response) => {
|
||||
const database = new sqlite3.Database(path.join(__dirname, "../assets/databases/news.db"));
|
||||
|
||||
const target = Number(request.query.target);
|
||||
|
||||
if (isNaN(target)) {
|
||||
response.status(404).send('No Entry Found!');
|
||||
return;
|
||||
}
|
||||
|
||||
const sqlQuery = `DELETE FROM news WHERE date = ${target}`;
|
||||
|
||||
try {
|
||||
await asyncDatabaseWrite(database, sqlQuery, () => {
|
||||
console.log("News deleted successfully.");
|
||||
});
|
||||
} catch (err) {
|
||||
response.status(500).send(err);
|
||||
}
|
||||
|
||||
database.close();
|
||||
|
||||
response.status(200).send();
|
||||
});
|
||||
app.use('/api', router);
|
||||
|
||||
app.listen(port, () => {
|
||||
console.log(`Manager is now listening on port ${port}`);
|
||||
|
||||
30
src-manager/package-lock.json
generated
@@ -18,9 +18,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-string-parser": {
|
||||
"version": "7.24.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
|
||||
"integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
|
||||
"version": "7.25.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz",
|
||||
"integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -28,9 +28,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-validator-identifier": {
|
||||
"version": "7.24.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
|
||||
"integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
|
||||
"version": "7.25.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz",
|
||||
"integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -38,13 +38,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.25.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz",
|
||||
"integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
|
||||
"version": "7.25.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz",
|
||||
"integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.25.6"
|
||||
"@babel/types": "^7.25.7"
|
||||
},
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
@@ -54,14 +54,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/types": {
|
||||
"version": "7.25.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz",
|
||||
"integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
|
||||
"version": "7.25.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz",
|
||||
"integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-string-parser": "^7.24.8",
|
||||
"@babel/helper-validator-identifier": "^7.24.7",
|
||||
"@babel/helper-string-parser": "^7.25.7",
|
||||
"@babel/helper-validator-identifier": "^7.25.7",
|
||||
"to-fast-properties": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@@ -27,9 +27,14 @@
|
||||
<li>
|
||||
<a href="/new-news.html">New News</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/new-gallery-image.html">New Gallery Image</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<button hx-get="/api/news-list" hx-trigger="click" hx-swap="innerHTML" hx-target="#entries">Refresh</button>
|
||||
<h4>News</h4>
|
||||
|
||||
<button hx-get="/api/news-list" hx-trigger="click" hx-swap="innerHTML" hx-target="#news-entries">Refresh</button>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -40,11 +45,33 @@
|
||||
<td>Actions</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="entries" hx-confirm='Are you sure you want to delete this news?' hx-target="closest tr" hx-swap="outerHTML"></tbody>
|
||||
<tbody id="news-entries" hx-confirm='Are you sure you want to delete this news?' hx-target="closest tr" hx-swap="outerHTML"></tbody>
|
||||
</table>
|
||||
|
||||
<h4>Gallery Images</h4>
|
||||
|
||||
<button hx-get="/api/gallery-image/list" hx-trigger="click" hx-swap="innerHTML" hx-target="#image-entries">Refresh</button>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>ID</td>
|
||||
<td>Image Path</td>
|
||||
<td>Caption</td>
|
||||
<td>Actions</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="image-entries" hx-confirm='Are you sure you want to delete this image? (Actual data will not deleted.)' hx-target="closest tr" hx-swap="outerHTML"></tbody>
|
||||
</table>
|
||||
|
||||
<script>
|
||||
htmx.ajax('GET', '/api/news-list', {target: '#entries', swap: 'innerHTML'});
|
||||
const buttons = document.getElementsByTagName('button');
|
||||
|
||||
window.addEventListener('load', () => {
|
||||
for (const btn of buttons) {
|
||||
btn.click();
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
51
src-manager/pages/new-gallery-image.html
Normal file
@@ -0,0 +1,51 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Content Manager - new gallery image</title>
|
||||
<script src="https://unpkg.com/htmx.org@2.0.2" integrity="sha384-Y7hw+L/jvKeWIRRkqWYfPcvVxHzVzn5REgzbawhxAuQGwX1XWe70vji+VSeHOThJ" crossorigin="anonymous"></script>
|
||||
<style>
|
||||
form fieldset {
|
||||
display: grid;
|
||||
grid-auto-flow: row;
|
||||
}
|
||||
|
||||
#new-news {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
|
||||
#preview {
|
||||
border: black solid 1px;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="new-gallery-image">
|
||||
<h3></h3>
|
||||
<form id="create-entry" hx-post="/api/gallery-image" hx-swap="none">
|
||||
<fieldset>
|
||||
<legend>Create Entry</legend>
|
||||
<label for="imagePath">Image Path:</label>
|
||||
<input type="text" name="imagePath" id="imagePath">
|
||||
<label for="caption">Caption of Image:</label>
|
||||
<input type="text" name="caption" id="caption">
|
||||
</fieldset>
|
||||
<button id="submit-button" type="submit">Create Entry</button>
|
||||
<a href="/index.html">
|
||||
<button role="none" type="button">
|
||||
Cancel
|
||||
</button>
|
||||
</a>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const submitButton = document.getElementById('submit-button');
|
||||
|
||||
submitButton.addEventListener('click', () => {
|
||||
window.location.href = "/index.html";
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
@@ -3,6 +3,8 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Content Manager - new news</title>
|
||||
<link rel="stylesheet" href="/styles/markdown.css">
|
||||
<link rel="stylesheet" href="/styles/color-pallet.css">
|
||||
<script src="https://unpkg.com/htmx.org@2.0.2" integrity="sha384-Y7hw+L/jvKeWIRRkqWYfPcvVxHzVzn5REgzbawhxAuQGwX1XWe70vji+VSeHOThJ" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
||||
<style>
|
||||
@@ -56,12 +58,12 @@
|
||||
<a href="/index.html"><button role="none" type="button">Cancel</button></a>
|
||||
</form>
|
||||
</div>
|
||||
<div>
|
||||
<div id="preview">
|
||||
<h3>Preview</h3>
|
||||
<h4>Card Content</h4>
|
||||
<div id="preview-card-content"></div>
|
||||
<h4>Article</h4>
|
||||
<div id="preview-article"></div>
|
||||
<div id="preview-article" class="markdown"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
67
src-manager/pages/update-gallery-image.html
Normal file
@@ -0,0 +1,67 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Content Manager - update gallery image</title>
|
||||
<script src="https://unpkg.com/htmx.org@2.0.2" integrity="sha384-Y7hw+L/jvKeWIRRkqWYfPcvVxHzVzn5REgzbawhxAuQGwX1XWe70vji+VSeHOThJ" crossorigin="anonymous"></script>
|
||||
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
|
||||
<style>
|
||||
form fieldset {
|
||||
display: grid;
|
||||
grid-auto-flow: row;
|
||||
}
|
||||
|
||||
#new-news {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
|
||||
#preview {
|
||||
border: black solid 1px;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="new-gallery-image">
|
||||
<h3></h3>
|
||||
<form id="create-entry" hx-put="/api/gallery-image" hx-swap="none">
|
||||
<fieldset>
|
||||
<legend>Create Entry</legend>
|
||||
<label for="imagePath">Image Path:</label>
|
||||
<input type="text" name="imagePath" id="imagePath">
|
||||
<label for="caption">Caption of Image:</label>
|
||||
<input type="text" name="caption" id="caption">
|
||||
|
||||
<input type="hidden" name="target" id="targetValue" value="test">
|
||||
</fieldset>
|
||||
<button id="submit-button" type="submit">Update Entry</button>
|
||||
<a href="/index.html">
|
||||
<button role="none" type="button">
|
||||
Cancel
|
||||
</button>
|
||||
</a>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const submitButton = document.getElementById('submit-button');
|
||||
const imagePathInput = document.getElementById('imagePath');
|
||||
const captionInput = document.getElementById('caption');
|
||||
const targetInput = document.getElementById('targetValue');
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
const targetEntry = urlParams.get('target');
|
||||
|
||||
axios.get('/api/gallery-image', {params: {target: targetEntry}})
|
||||
.then((response) => {
|
||||
targetInput.value = response.data.id;
|
||||
imagePathInput.value = response.data.imagePath;
|
||||
captionInput.value = response.data.caption;
|
||||
})
|
||||
.catch((err) => {console.error(err)});
|
||||
|
||||
submitButton.addEventListener('click', () => {
|
||||
window.location.href = "/index.html";
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
@@ -3,6 +3,8 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Content Manager - update news</title>
|
||||
<link rel="stylesheet" href="/styles/markdown.css">
|
||||
<link rel="stylesheet" href="/styles/color-pallet.css">
|
||||
<script src="https://unpkg.com/htmx.org@2.0.2" integrity="sha384-Y7hw+L/jvKeWIRRkqWYfPcvVxHzVzn5REgzbawhxAuQGwX1XWe70vji+VSeHOThJ" crossorigin="anonymous"></script>
|
||||
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
||||
@@ -59,12 +61,12 @@
|
||||
<a href="/index.html"><button role="none" type="button">Cancel</button></a>
|
||||
</form>
|
||||
</div>
|
||||
<div>
|
||||
<div id="preview">
|
||||
<h3>Previews</h3>
|
||||
<h4>Card Content</h4>
|
||||
<div id="preview-card-content"></div>
|
||||
<h4>Article</h4>
|
||||
<div id="preview-article"></div>
|
||||
<div id="preview-article" class="markdown"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -40,14 +40,12 @@ interface DropDownEntry {
|
||||
* @property {string} label Label of the component
|
||||
* @property {(DropDownMode | string)} mode Interaction mode of the component
|
||||
* @property {Array<DropDownEntry>} entries Entries of DropDown menu
|
||||
* @property {boolean} showInMobile Whether to show the component in mobile(<640px) environemnt
|
||||
* @property {(DropDownAlignment | number)=} alignment Explicitly assign the alignment of the component
|
||||
*/
|
||||
interface DropDownProperty {
|
||||
label: string;
|
||||
mode: DropDownMode | string;
|
||||
entries: Array<DropDownEntry>;
|
||||
showInMobile: boolean;
|
||||
alignment?: DropDownAlignment | number;
|
||||
}
|
||||
|
||||
|
||||
18
utils/galleryEntry.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* Types for gallery image entry data
|
||||
* @module utils/galleryEntry
|
||||
*/
|
||||
|
||||
/**
|
||||
* Interface for gallery image entry
|
||||
* @property {number} id id from database
|
||||
* @property {string} imagePath image URL
|
||||
* @property {string} caption caption of the image
|
||||
*/
|
||||
interface GalleryEntry {
|
||||
id: number;
|
||||
imagePath: string;
|
||||
caption: string;
|
||||
}
|
||||
|
||||
export type { GalleryEntry };
|
||||
@@ -31,18 +31,41 @@ export function generateSeoMeta(
|
||||
imagePath: string,
|
||||
type?: "website" | "article"
|
||||
): UseSeoMetaInput {
|
||||
const titleComposer = (title: string): string => {
|
||||
return title + " - 岐阜高専宇宙工学研究会";
|
||||
};
|
||||
|
||||
const descriptionComposer = (description: string): string => {
|
||||
return (
|
||||
description +
|
||||
" - 岐阜高専宇宙工学研究会【SERA】公式ホームページです。航空や宇宙に興味がある学生が所属しており、モデルロケットや缶サット製作などを中心に宇宙に関する知識を高めるために活動しています。"
|
||||
);
|
||||
};
|
||||
|
||||
return {
|
||||
title: title,
|
||||
ogTitle: title + " - 岐阜高専宇宙工学研究会",
|
||||
twitterTitle: title + " - 岐阜高専宇宙工学研究会",
|
||||
description: description,
|
||||
ogDescription: description,
|
||||
twitterDescription: description,
|
||||
ogTitle: titleComposer(title),
|
||||
twitterTitle: titleComposer(title),
|
||||
description: descriptionComposer(description),
|
||||
ogDescription: descriptionComposer(description),
|
||||
twitterDescription: descriptionComposer(description),
|
||||
ogImage: imagePath,
|
||||
twitterImage: imagePath,
|
||||
twitterCard: "summary",
|
||||
twitterSite: "@SERA_NITGC",
|
||||
charset: "utf-8",
|
||||
ogLocale: "ja_JP",
|
||||
ogType: type || "website",
|
||||
articleTag: [
|
||||
"宇宙工学研究会",
|
||||
"SERA",
|
||||
"岐阜高専",
|
||||
"岐阜工業高等専門学校",
|
||||
"クラブ活動",
|
||||
"部活動",
|
||||
"同好会",
|
||||
"宇宙",
|
||||
"研究会",
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
14
utils/qAndABox.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* Types for QAndABox component
|
||||
* @module utils/qAndABox
|
||||
*/
|
||||
|
||||
/**
|
||||
* Interface that defines property for QAndABox component
|
||||
* @property {string} question
|
||||
*/
|
||||
interface QAndABoxProperty {
|
||||
question: string;
|
||||
}
|
||||
|
||||
export type { QAndABoxProperty };
|
||||