From e64b7967e0f8a318d3c5f9484588321d2b60446c Mon Sep 17 00:00:00 2001 From: Andrzej Stepien Date: Mon, 11 Sep 2023 14:44:24 +0200 Subject: [PATCH] add edit publication functionality --- src/main.jsx | 7 +++++ src/routes/editPublication.jsx | 48 ++++++++++++++++++++++++++++++++++ src/routes/editStory.jsx | 2 +- src/routes/publication.jsx | 3 ++- src/routes/story.jsx | 11 +------- 5 files changed, 59 insertions(+), 12 deletions(-) create mode 100644 src/routes/editPublication.jsx diff --git a/src/main.jsx b/src/main.jsx index 7ed55f8..094632f 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -9,6 +9,7 @@ import Publication from './routes/publication'; import Publications from './routes/publications'; import { storiesLoader,publicationsLoader,submissionsLoader } from './loaders.mjs'; import EditStory, {action as editStoryAction } from './routes/editStory'; +import EditPublication, {action as editPublicationAction} from './routes/editPublication'; import './styles/index.css' import { createBrowserRouter, @@ -51,6 +52,12 @@ const router = createBrowserRouter([ element: , loader: storiesLoader, action: editStoryAction + }, + { + path:"/publication/:publicationId/edit", + element: , + loader: publicationsLoader, + action: editPublicationAction } ] }, diff --git a/src/routes/editPublication.jsx b/src/routes/editPublication.jsx new file mode 100644 index 0000000..58ac255 --- /dev/null +++ b/src/routes/editPublication.jsx @@ -0,0 +1,48 @@ +import { Form, useLoaderData, useParams, redirect } from "react-router-dom"; +import PageHeader from "../Components/PageHeader"; +import { requestEdit } from "../APIcalls.mjs"; + +export async function action({request,params}){ + const formData = await request.formData() + const data = Object.fromEntries(formData) + data.id=parseInt(params.publicationId) + console.dir(data) + await requestEdit(data,'publication') + return redirect(`/publication/${params.publicationId}`) +} + + + +export default function EditPublication(){ + const { publicationId } = useParams() + const { publications } = useLoaderData() + const publicationData = publications.find(row=>row.id==publicationId) + + + return( + <> + +
+ + + + +
+ + + ) + +} \ No newline at end of file diff --git a/src/routes/editStory.jsx b/src/routes/editStory.jsx index 786c305..751c4c3 100644 --- a/src/routes/editStory.jsx +++ b/src/routes/editStory.jsx @@ -36,7 +36,7 @@ export default function EditStory(){ type="number" step="1" name="word_count" - defaultValue={storyData.title} + defaultValue={storyData.word_count} /> diff --git a/src/routes/publication.jsx b/src/routes/publication.jsx index b23c608..2efef92 100644 --- a/src/routes/publication.jsx +++ b/src/routes/publication.jsx @@ -1,4 +1,4 @@ -import { useLoaderData, useParams } from "react-router-dom"; +import { useLoaderData, useParams, Link } from "react-router-dom"; import Table from "../Components/Table"; import PageHeader from "../Components/PageHeader"; import { submissionsTableOptions } from "./submissions.jsx"; @@ -22,6 +22,7 @@ export default function Publication() { sortByDefault='date_submitted' header='Submissions:' > + EDIT ) diff --git a/src/routes/story.jsx b/src/routes/story.jsx index 73ed998..992d8ec 100644 --- a/src/routes/story.jsx +++ b/src/routes/story.jsx @@ -8,16 +8,7 @@ const { filterList=[...filterList],highlights,clickables } = submissionsTableOpt export default function Story(){ const { storyId } = useParams() const { stories } = useLoaderData() - const [storyData,setStoryData] = useState(stories.find(row=>row.id==storyId)) - useEffect(()=>{ - setStoryData(stories.find(row=>row.id==storyId)) - console.log("stories updated!") - console.dir(stories) - },[stories]) - useEffect(()=>{ - // console.log("storyData updated!") - // console.dir(storyData) - },[storyData]) + const storyData = stories.find(row=>row.id==storyId) return( <>