Add model pages

This commit is contained in:
Marcus Blättermann 2022-11-15 01:49:53 +01:00
parent 5d22487521
commit e0ca8a0f56
No known key found for this signature in database
GPG Key ID: A1E1F04008AC450D
3 changed files with 72 additions and 4 deletions

View File

@ -0,0 +1,7 @@
import models from './languages.json'
const recordLanguages = Object.fromEntries(
models.languages.map((language, index) => [language.code, language])
)
export default recordLanguages

View File

@ -17,9 +17,7 @@ type ApiDetails = {
trainable: string | null
}
type PropsPage = {
mdx: MDXRemoteSerializeResult
export type PropsPageBase = {
/**
* TODO: This is only here for legacy support of the old code base
* It should be refactort to pass the file path and page path instead.
@ -28,10 +26,14 @@ type PropsPage = {
sectionTitle: string | null
theme: string | null
section: string
apiDetails: ApiDetails
isIndex: boolean
}
export type PropsPage = PropsPageBase & {
mdx: MDXRemoteSerializeResult
apiDetails: ApiDetails
}
const PostPage = ({ mdx: mdx, ...props }: PropsPage) => {
return (
<Layout {...props}>

View File

@ -0,0 +1,59 @@
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'
import { PropsPageBase } from '../[...listPath]'
type PropsPageModel = PropsPageBase & {
next: { title: string; slug: string } | null
meta: { models?: ReadonlyArray<string>; example?: string; hasExamples?: boolean }
}
const PostPageModel = (props: PropsPageModel) => {
return <Layout {...props} />
}
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].join('/')}`,
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 || null,
example: language.example || null,
hasExamples: language.has_examples || null,
},
},
}
}