[basic-example][m] - multiple datasets

This commit is contained in:
Luccas Mateus de Medeiros Gomes 2023-04-27 07:51:09 -03:00
parent 8038662160
commit b49abb3b39
5 changed files with 753 additions and 21595 deletions

View File

@ -0,0 +1,3 @@
# Index
- [My awesome dataset](http://localhost:3000/datasets/my-dataset)

View File

@ -2,6 +2,16 @@
const nextConfig = {
reactStrictMode: true,
swcMinify: true,
async rewrites() {
return {
beforeFiles: [
{
source: '/datasets/:file*.csv',
destination: '/:file*.csv',
},
]
}
}
}
module.exports = nextConfig

View File

@ -0,0 +1,56 @@
import { promises as fs } from 'fs';
import { GetStaticProps } from 'next';
import path from 'path';
import parse from '../../lib/markdown';
import DRD from '../../components/DRD';
export async function getStaticPaths() {
const contentDir = path.join(process.cwd(), '/content');
const datasets = await fs.readdir(contentDir);
return {
paths: datasets.map((dataset) => ({ params: { datasetId: dataset } })),
fallback: false, // can also be true or 'blocking'
};
}
export const getStaticProps: GetStaticProps = async (context) => {
const { datasetId } = context.params;
const jsonDirectory = path.join(
process.cwd(),
'/content/' + datasetId + '/README.md'
);
const readme = await fs.readFile(jsonDirectory, 'utf8');
let { mdxSource, frontMatter, excerpt } = await parse(readme, '.mdx');
return {
props: {
mdxSource,
frontMatter,
excerpt,
},
};
};
export default function DatasetPage({ mdxSource, frontMatter, excerpt }) {
return (
<div className="prose mx-auto">
<header>
<div className="mb-6">
<>
<h1>{frontMatter.title}</h1>
{frontMatter.author && (
<div className="-mt-6">
<p className="opacity-60 pl-1">{frontMatter.author}</p>
</div>
)}
{frontMatter.description && (
<p className="description">{frontMatter.description}</p>
)}
</>
</div>
</header>
<main>
<DRD source={mdxSource} />
</main>
</div>
);
}

View File

@ -5,13 +5,8 @@ import parse from '../lib/markdown';
import DRD from '../components/DRD';
export const getStaticProps: GetStaticProps = async (context) => {
const contentDir = path.join(process.cwd(), '/content');
const datasets = await fs.readdir(contentDir);
const datasetReadme = path.join(
process.cwd(),
'/content/' + datasets[0] + '/README.md'
);
const readme = await fs.readFile(datasetReadme, 'utf8');
const indexFile = path.join(process.cwd(), '/content/index.md');
const readme = await fs.readFile(indexFile, 'utf8');
let { mdxSource, frontMatter } = await parse(readme, '.mdx');
return {
props: {

22270
package-lock.json generated

File diff suppressed because it is too large Load Diff