add category

This commit is contained in:
Janis
2022-12-27 04:47:07 +01:00
parent 15ca9435b4
commit 90f158542a
8 changed files with 142 additions and 138 deletions

View File

@@ -1,25 +0,0 @@
import React from "react";
import styles from "../../styles/DynamicCategoryGrid.module.scss";
import Link from "next/link";
export default function DynamicCategoryGrid({ categories }) {
return (
<div className={styles.grid}>
{categories.map((cat, i) => {
{
return (
<div key={i} className={styles.linkContainer}>
<Link href="#" style={{ backgroundColor: cat.color }}>
<div className={styles.svgContainer}>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
<path d={cat.svg} />
</svg>
</div>
{cat.name}
</Link>
</div>
);
}
})}
</div>
);
}

View File

@@ -10,7 +10,7 @@ export default async function Head({
const article: Article = await GetArticle(articleName);
return (
<>
<title>{article.title}</title>
<title>{article?.title}</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
</>
);

View File

@@ -10,7 +10,7 @@ export async function GetContentTableEntries(
article: Article
): Promise<ContentTableEntry[]> {
const entries = await prisma.contentTableEntry.findMany({
where: { article: article },
where: { articleId: article?.id ?? 1 },
orderBy: { orderIndex: "asc" },
});
@@ -19,7 +19,7 @@ export async function GetContentTableEntries(
export async function GetArticle(articleName: string) {
const article = await prisma.article.findUnique({
where: { name: articleName.toLowerCase() },
where: { name: articleName.toLowerCase() ?? "" },
});
return article;
@@ -39,7 +39,7 @@ export default async function Tutorial({
}) {
const articleName: string = params.articleName;
const article: Article = await GetArticle(articleName);
const markdown: string = article.markdown;
const markdown: string = article?.markdown ?? "";
const contentTableEntries: ContentTableEntry[] = await GetContentTableEntries(
article
);
@@ -49,7 +49,7 @@ export default async function Tutorial({
<ContentTable contentTableEntries={contentTableEntries} />
<div className={styles.tutorialContent}>
<div className={styles.head}>
<h1>{article.title}</h1>
<h1>{article?.title}</h1>
</div>
<div
className="markdown"

View File

@@ -9,10 +9,6 @@ export async function GetCategories(): Promise<Category[]> {
return await prisma.category.findMany();
}
const DynamicCategoryGrid = dynamic(() => import("./DynamicCategoryGrid"), {
loading: () => <p>Loading...</p>,
});
export default async function CategoryList() {
const categories = await GetCategories();
@@ -20,7 +16,28 @@ export default async function CategoryList() {
<div className={styles.categoryList}>
<h1>Overview</h1>
<div className={styles.content}>
<DynamicCategoryGrid categories={categories} />
<div className={styles.grid}>
{categories.map((cat, i) => {
return (
<div key={i} className={styles.linkContainer}>
<Link
href={`/articles/${cat.name.toLowerCase()}`}
style={{ backgroundColor: cat.color }}
>
<div className={styles.svgContainer}>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 640 512"
>
<path d={cat.svg} />
</svg>
</div>
{cat.name}
</Link>
</div>
);
})}
</div>
</div>
</div>
);