From 2b30ba0c4890c2a616c4b4cc8b0b3bc1bb9b3325 Mon Sep 17 00:00:00 2001 From: Fushihara <1039534+fushihara@users.noreply.github.com> Date: Wed, 25 Sep 2024 21:35:06 +0900 Subject: =?UTF-8?q?=E8=A8=98=E4=BA=8B=E3=81=AE=E3=82=BF=E3=82=B0=E3=80=81?= =?UTF-8?q?=E3=82=AB=E3=83=86=E3=82=B4=E3=83=AA=E3=81=AE=E5=80=8B=E6=95=B0?= =?UTF-8?q?=E3=82=92=E8=A1=A8=E7=A4=BA=E3=81=99=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/article/_components/articleListElement.tsx | 23 +++++++++++++++++---- src/app/article/all/[pageId]/page.tsx | 2 +- src/app/article/tag/[tagName]/page.tsx | 24 ++++++++++------------ src/util/articleLoader.ts | 8 ++++++++ 4 files changed, 39 insertions(+), 18 deletions(-) diff --git a/src/app/article/_components/articleListElement.tsx b/src/app/article/_components/articleListElement.tsx index 5437c04..3cd30c1 100644 --- a/src/app/article/_components/articleListElement.tsx +++ b/src/app/article/_components/articleListElement.tsx @@ -6,7 +6,8 @@ dateformat.i18n.dayNames = [ '日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日' ]; type DisplayData = Awaited>["articles"][number]; -export function ArticleListElement(displayData: DisplayData[]) { +type CategoryTagData = Awaited>["categoryTag"] +export function ArticleListElement(displayData: DisplayData[], categoryTag: CategoryTagData) { return ( @@ -60,7 +61,14 @@ export function ArticleListElement(displayData: DisplayData[]) { if (d.breadLinks.indexOf(bread) != 0) { breadChildElement.push(); } - breadChildElement.push({bread}); + const tagCount = categoryTag.getTagCount(bread); + breadChildElement.push( + {bread}({tagCount}) + ); } breadElement = ( @@ -76,8 +84,15 @@ export function ArticleListElement(displayData: DisplayData[]) { for (const tag of d.tags) { if (d.tags.indexOf(tag) != 0) { tagChildElements.push(); - } - tagChildElements.push({tag}); + }; + const tagCount = categoryTag.getTagCount(tag); + tagChildElements.push( + {tag}({tagCount}) + ); } tagElement = ( diff --git a/src/app/article/all/[pageId]/page.tsx b/src/app/article/all/[pageId]/page.tsx index e076aa0..622edbb 100644 --- a/src/app/article/all/[pageId]/page.tsx +++ b/src/app/article/all/[pageId]/page.tsx @@ -28,7 +28,7 @@ export default async function Page(context: PageType) {
{pagenationElement(pageId, chunkdData.length)}
全:{loadedData.articles.length}件
- {ArticleListElement(displayData)} + {ArticleListElement(displayData, loadedData.categoryTag)} {pagenationElement(pageId, chunkdData.length)}
); diff --git a/src/app/article/tag/[tagName]/page.tsx b/src/app/article/tag/[tagName]/page.tsx index 991ebfc..7fbce4c 100644 --- a/src/app/article/tag/[tagName]/page.tsx +++ b/src/app/article/tag/[tagName]/page.tsx @@ -13,23 +13,21 @@ export async function generateMetadata(context: PageType) { } export default async function Page(context: PageType) { const nowPageTagName = decodeURIComponent(context.params.tagName); - const loadedData = await ArticleLoader.instance.loadData().then(articles => { - const filterd = articles.articles.filter(article => { - if (article.tags.includes(nowPageTagName)) { - return true; - } - if (article.breadLinks.includes(nowPageTagName)) { - return true; - } - return false; - }); - return filterd; + const loadedData = await ArticleLoader.instance.loadData() + const filterdArticles = loadedData.articles.filter(article => { + if (article.tags.includes(nowPageTagName)) { + return true; + } + if (article.breadLinks.includes(nowPageTagName)) { + return true; + } + return false; }); return (
タグ:{nowPageTagName} の記事一覧
-
全:{loadedData.length}件
- {ArticleListElement(loadedData)} +
全:{filterdArticles.length}件
+ {ArticleListElement(filterdArticles, loadedData.categoryTag)}
); } diff --git a/src/util/articleLoader.ts b/src/util/articleLoader.ts index 1ae0448..f7c7e95 100644 --- a/src/util/articleLoader.ts +++ b/src/util/articleLoader.ts @@ -122,6 +122,14 @@ class CategoryTag { storeCategory.count += 1; } } + getTagCount(tagName: string) { + const data = this.data.get(tagName); + if (data == null) { + throw new Error(`タグ名:[${tagName}]`); + } + const count = data.count; + return count; + } } class Article { constructor( -- cgit v1.2.3