From 703e0a9186c11fc623a380da249a89aaab050c39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcus=20Bl=C3=A4ttermann?= Date: Tue, 15 Nov 2022 01:49:53 +0100 Subject: [PATCH] Add model pages --- website/meta/recordLanguages.tsx | 13 +++++++ website/pages/models/[slug].tsx | 65 ++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 website/meta/recordLanguages.tsx create mode 100644 website/pages/models/[slug].tsx diff --git a/website/meta/recordLanguages.tsx b/website/meta/recordLanguages.tsx new file mode 100644 index 000000000..0b8655071 --- /dev/null +++ b/website/meta/recordLanguages.tsx @@ -0,0 +1,13 @@ +import models from './languages.json' + +const recordLanguages = Object.fromEntries( + models.languages.map((language, index) => [ + language.code, + { + ...language, + next: index < models.languages.length - 1 ? models.languages[index + 1] : null, + }, + ]) +) + +export default recordLanguages diff --git a/website/pages/models/[slug].tsx b/website/pages/models/[slug].tsx new file mode 100644 index 000000000..b52779885 --- /dev/null +++ b/website/pages/models/[slug].tsx @@ -0,0 +1,65 @@ +import type { GetStaticPaths, GetStaticProps } from 'next' +import models from '../../meta/languages.json' +import recordSection from '../../meta/recordSections' +import recordLanguages from '../../meta/recordLanguages' +import Layout from '../../src/components/layout' + +type PropsPageModel = { + id: string + slug: ReadonlyArray + isIndex: false + title: string + section: 'models' + sectionTitle: string + theme: string + next: { title: string; slug: string } | null + meta: { models?: ReadonlyArray; example?: string; hasExamples?: boolean } +} + +const PostPageModel = (props: PropsPageModel) => { + return +} + +export default PostPageModel + +export const getStaticPaths: GetStaticPaths<{ slug: string }> = async () => { + return { + paths: models.languages + .filter(({ models }) => models && models.length) + .map((language) => `/models/${language.code}`), + fallback: false, + } +} + +export const getStaticProps: GetStaticProps< + PropsPageModel, + { + slug: string + } +> = async (args) => { + if (args.params === undefined) { + return { notFound: true } + } + + const language = recordLanguages[args.params.slug] + + return { + props: { + id: language.code, + slug: ['models', language.code], + isIndex: false, + title: language.name, + section: 'models', + sectionTitle: recordSection.models.title, + theme: recordSection.models.theme, + next: language.next + ? { title: language.next.name, slug: `/models/${language.next.code}` } + : null, + meta: { + models: language.models, + example: language.example, + hasExamples: language.has_examples, + }, + }, + } +}