add forms+

This commit is contained in:
andrzej 2024-06-12 11:00:59 +02:00
parent 877fc08bd6
commit 34a18cae54
10 changed files with 100 additions and 3 deletions

Binary file not shown.

View File

@ -0,0 +1,5 @@
import PubForm from "app/ui/forms/pub";
export default function Page() {
return <PubForm />
}

View File

@ -0,0 +1,5 @@
import SubmissionForm from "app/ui/forms/sub";
export default function Page() {
return <SubmissionForm />
}

View File

@ -4,8 +4,7 @@ import { letterCase } from "app/lib/functions"
export default async function GenreCheckboxes() {
async function getGenres() {
"use server"
const genres = await prisma.genre.findMany()
return genres
return prisma.genre.findMany()
}
const genres = await getGenres()
const genreCheckboxes = genres.map(e => {

11
src/app/ui/forms/pub.tsx Normal file
View File

@ -0,0 +1,11 @@
export default async function PubForm() {
return <form>
<label htmlFor="title">Title:</label>
<input type="text" id="title" />
<label htmlFor="link">Link:</label>
<input type="text" id="link" />
<label htmlFor="number" id="query-after" >Query after (days):</label>
<input type="number" step="30" />
<input type="submit" value="Submit" />
</form>
}

View File

@ -0,0 +1,20 @@
import prisma from "app/lib/db"
export default async function PubsDropdown() {
async function getPubs() {
"use server"
return prisma.pub.findMany()
}
const pubs = await getPubs()
const pubsDropdown = pubs.map(e => {
return <option value={e.id} key={e.title}>{e.title}</option>
})
return (<>
<label htmlFor="pubdDropdown">Publication:</label>
<select key="pubsDropdown" id="pubsDropdown">
{pubsDropdown}
</select>
</>
)
}

View File

@ -0,0 +1,22 @@
import prisma from "app/lib/db"
export default async function ResponseDropdown() {
async function getResponses() {
"use server"
return prisma.response.findMany()
}
const responses = await getResponses()
const responsesDropdown = responses.map(e => {
return <option value={e.id} key={e.response}>{e.response}</option>
})
return (
<>
<label htmlFor="responsesDropdown">
Status:
</label>
<select key="responsesDropdown" id="responsesDropdown">
{responsesDropdown}
</select>
</>
)
}

View File

@ -4,7 +4,7 @@ export default async function StoryForm() {
<label htmlFor="title">Title:</label>
<input type="text" id="title" />
<label htmlFor="word-count">Word Count:</label>
<input type="text" id="word-count" />
<input type="number" id="word-count" step="500" />
<GenreCheckboxes />
<input type="submit" value="Submit" />
</form>

View File

@ -0,0 +1,20 @@
import prisma from "app/lib/db"
export default async function StoryDropdown() {
async function getStories() {
"use server"
return prisma.story.findMany()
}
const stories = await getStories()
const storiesDrowpdown = stories.map(e => {
return <option value={e.id} key={`${e.title}`}>{e.title}</option>
})
return (
<>
<label htmlFor="storyDropdown">Story:</label>
<select key="storyDropdown" id="storyDropdown">
{storiesDrowpdown}
</select>
</>
)
}

15
src/app/ui/forms/sub.tsx Normal file
View File

@ -0,0 +1,15 @@
import PubsDropdown from "./pubsDropdown";
import ResponseDropdown from "./responseDropdown";
import StoryDropdown from "./storyDropdown";
export default async function SubmissionForm() {
return <form>
<StoryDropdown />
<PubsDropdown />
<label htmlFor="submitted">Submitted:</label>
<input type="date" id="submitted" name="submitted" />
<label htmlFor="responded">Responded:</label>
<input type="date" id="responded" name="responded" />
<ResponseDropdown />
</form>
}