From 8d8f47ae7c3e974542b95cdae19721eb74cc8c9f Mon Sep 17 00:00:00 2001 From: Stefan Imhoff Date: Sun, 4 Jun 2023 12:43:53 +0200 Subject: [PATCH] feat: add series feature to journal --- src/pages/[...slug].astro | 28 +++++++++++++++++++++++++++- src/pages/journal.astro | 4 ++-- src/schema/journal.ts | 2 ++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/pages/[...slug].astro b/src/pages/[...slug].astro index dc514e4..a277d40 100644 --- a/src/pages/[...slug].astro +++ b/src/pages/[...slug].astro @@ -10,7 +10,7 @@ import GridLayout from '../layouts/GridLayout.astro'; import PageTitle from '../components/PageTitle.astro'; import Pagination from '../components/Pagination.astro'; import Picture from '../components/Picture.astro'; -import { TextLink } from '../components'; +import { Banner, ListItem, OrderedList, TextLink } from '../components'; import { mapping } from '../mdx-components'; @@ -38,6 +38,12 @@ const { remarkPluginFrontmatter: { minutesRead }, } = await entry.render(); +const seriesEntries = await getCollection('journal', ({ data }) => { + return data.series === entry.data.series; +}); + +seriesEntries.sort(sortByDate).reverse(); + const title = entry.data.title; const description = '…'; --- @@ -82,6 +88,26 @@ const description = '…';
+ { + entry.data.series && ( + + + {seriesEntries.map((item) => ( + + {entry.slug === item.slug ? ( + <> + {item.data.title} + 📍 + + ) : ( + {item.data.title} + )} + + ))} + + + ) + } { entry.data.updated && ( diff --git a/src/pages/journal.astro b/src/pages/journal.astro index 326de3f..070ff1b 100644 --- a/src/pages/journal.astro +++ b/src/pages/journal.astro @@ -1,7 +1,7 @@ --- import { getCollection } from 'astro:content'; -import { sortBySortKey } from '../utils'; +import { sortByDate } from '../utils'; import GridLayout from '../layouts/GridLayout.astro'; import PageTitle from '../components/PageTitle.astro'; @@ -11,7 +11,7 @@ import { Link } from '../components'; import { mapping } from '../mdx-components'; const allJournal = await getCollection('journal'); -allJournal.sort(sortBySortKey); +allJournal.sort(sortByDate); const title = 'Journal'; const description = '…'; diff --git a/src/schema/journal.ts b/src/schema/journal.ts index 149945f..8dfb325 100644 --- a/src/schema/journal.ts +++ b/src/schema/journal.ts @@ -15,6 +15,7 @@ export const journal = defineCollection({ 'design', 'download', 'film', + 'health', 'productivity', 'publication', 'self-improvement', @@ -22,5 +23,6 @@ export const journal = defineCollection({ 'typography', ]) ), + series: z.string().optional(), }), });