diff --git a/src/assets/react.svg b/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/main.jsx b/src/main.jsx index 138fdf1..b6dfd52 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -15,6 +15,7 @@ import CreatePublication, {action as createPublicationAction} from './routes/cre import { action as deleteStoryAction } from './routes/deleteStory'; import { action as deletePublicationAction } from './routes/deletePublication'; import EditSubmission, {action as editSubmissionAction} from './routes/editSubmission'; +import CreateSubmission, {action as createSubmissionAction} from './routes/createSubmission'; import './styles/index.css' import { createBrowserRouter, @@ -84,6 +85,12 @@ const router = createBrowserRouter([ loader: publicationsLoader, action: createPublicationAction }, + { + path:"/submission/create", + element: , + loader: editSubmissionLoader, + action: createSubmissionAction + }, { path:"/story/:storyId/delete", action:deleteStoryAction diff --git a/src/routes/createPublication.jsx b/src/routes/createPublication.jsx index f9427c9..89a7424 100644 --- a/src/routes/createPublication.jsx +++ b/src/routes/createPublication.jsx @@ -17,7 +17,7 @@ export default function CreatePublication(){ return( - <> +
CANCEL
- +
) } \ No newline at end of file diff --git a/src/routes/createStory.jsx b/src/routes/createStory.jsx index 0a8db2b..2dfc882 100644 --- a/src/routes/createStory.jsx +++ b/src/routes/createStory.jsx @@ -17,9 +17,10 @@ export default function CreateStory(){ return( - <> +
+ + +
+ +
+ +
- +
) } \ No newline at end of file diff --git a/src/routes/createSubmission.jsx b/src/routes/createSubmission.jsx new file mode 100644 index 0000000..4d1377f --- /dev/null +++ b/src/routes/createSubmission.jsx @@ -0,0 +1,74 @@ +import { Form, useLoaderData, useParams, redirect } from "react-router-dom"; +import PageHeader from "../Components/PageHeader"; +import { requestCreate } from "../APIcalls.mjs"; +import Dropdown from "../Components/Dropdown"; +import { DateTime } from "luxon"; +import { useEffect,useState } from "react"; +export async function action({request,params}){ + const formData = await request.formData() + const data = Object.fromEntries(formData) + data.id=parseInt(params.submissionId) + console.dir(data) + await requestCreate(data,'submission') + return redirect(`/submissions`) +} + + + + +export default function CreateSubmission(){ + const { submissionId } = useParams() + const { submissions, stories, publications, responses } = useLoaderData() + const [data,setData] = useState({ + story_id:1, + pub_id:1, + date_submitted: DateTime.local().toFormat('yyyy-MM-dd'), + date_responded:"", + response_id:1 + }) + + + const storiesOptions = stories?.map(row=>[row.id,row.title]) + const publicationsOptions = publications?.map(row=>[row.id,row.title]) + const responsesOptions = responses?.map(row=>[row.id,row.response]) + + const handleChange = (event) => { + const value = event.target.value + setData({ + ...data, + [event.target.name]: value + }) + } + + + + return( +
+ +
+ + + + + +
+ + +
+ +
+ +
+ ) + +} \ No newline at end of file diff --git a/src/routes/deleteSubmission.jsx b/src/routes/deleteSubmission.jsx new file mode 100644 index 0000000..36a13c2 --- /dev/null +++ b/src/routes/deleteSubmission.jsx @@ -0,0 +1,7 @@ +import { redirect } from "react-router"; +import { requestDelete } from "../APIcalls.mjs"; + +export async function action({params}){ + await requestDelete({id:Number(params.storyId)},'submission') + return redirect("/submissions") +} \ No newline at end of file diff --git a/src/routes/editPublication.jsx b/src/routes/editPublication.jsx index d7c4816..5f0c2a1 100644 --- a/src/routes/editPublication.jsx +++ b/src/routes/editPublication.jsx @@ -20,8 +20,8 @@ export default function EditPublication(){ return( - <> - +
+
) } \ No newline at end of file diff --git a/src/routes/editStory.jsx b/src/routes/editStory.jsx index 0b4eb7a..60cd020 100644 --- a/src/routes/editStory.jsx +++ b/src/routes/editStory.jsx @@ -20,8 +20,8 @@ export default function EditStory(){ return( - <> - +
+
) } \ No newline at end of file diff --git a/src/routes/editSubmission.jsx b/src/routes/editSubmission.jsx index 08a2435..e938158 100644 --- a/src/routes/editSubmission.jsx +++ b/src/routes/editSubmission.jsx @@ -44,8 +44,8 @@ export default function EditSubmission(){ return( - <> - +
+
) } \ No newline at end of file diff --git a/src/routes/publication.jsx b/src/routes/publication.jsx index 14ef464..f6e6198 100644 --- a/src/routes/publication.jsx +++ b/src/routes/publication.jsx @@ -9,8 +9,8 @@ export default function Publication() { const { publications } = useLoaderData() const publicationData = publications.find(row => row.id == publicationId) return ( - <>
- + <>
+
Link: {publicationData.link} diff --git a/src/routes/publications.jsx b/src/routes/publications.jsx index de4c828..f86fe3e 100644 --- a/src/routes/publications.jsx +++ b/src/routes/publications.jsx @@ -19,8 +19,8 @@ export default function Publications(){ ['title',(row)=>{return `../../publication/${row.id}`}] ] return( - <> - +
+ - + ) } diff --git a/src/routes/stories.jsx b/src/routes/stories.jsx index dfd552d..bead8be 100644 --- a/src/routes/stories.jsx +++ b/src/routes/stories.jsx @@ -15,14 +15,14 @@ export default function Stories(){ ['title',(row)=>{return `../../story/${row.id}`}] ] return( - <> - +
+
- + ) } diff --git a/src/routes/story.jsx b/src/routes/story.jsx index 3885e3c..94d343a 100644 --- a/src/routes/story.jsx +++ b/src/routes/story.jsx @@ -12,8 +12,8 @@ export default function Story() { return ( <> -
- +
+
Wordcount: {storyData.word_count}
- +
+
- + ) } \ No newline at end of file diff --git a/src/styles/PageHeader.css b/src/styles/PageHeader.css new file mode 100644 index 0000000..418fd3b --- /dev/null +++ b/src/styles/PageHeader.css @@ -0,0 +1,17 @@ +#page-header img{ + width:5rem; + height: 5rem; + margin:1rem; + filter: invert(83%) sepia(12%) saturate(387%) hue-rotate(129deg) brightness(89%) contrast(89%);} +#page-header h1{ + display: inline; +} + +#page-header{ + display:flex; + width:100%; + justify-content:space-between; +} + +#icon-container{ +} \ No newline at end of file diff --git a/src/styles/index.css b/src/styles/index.css index ca14813..8915bcd 100644 --- a/src/styles/index.css +++ b/src/styles/index.css @@ -1,6 +1,7 @@ @import 'Table.css'; @import 'Variables.css'; @import 'Form.css'; +@import 'PageHeader.css'; *, *::before, *::after { @@ -66,7 +67,7 @@ html { font-size: 2rem; margin:0; } - #page{ + #page-container{ font-size: 1.6rem; width: fit-content; margin:auto;