diff --git a/src/APIcalls.mjs b/src/APIcalls.mjs index 33bd9c6..dba111f 100644 --- a/src/APIcalls.mjs +++ b/src/APIcalls.mjs @@ -39,7 +39,8 @@ export const requestEdit = async (data,type) => { console.error(error) } } -export const requestDestroy = async (data,type) => { +export const requestDelete = async (data,type) => { + console.log("requesting delete!") try { const res = await API.post(`/${type}/delete`,data) return res diff --git a/src/main.jsx b/src/main.jsx index 094632f..1817fd1 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -10,6 +10,10 @@ 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 CreateStory, {action as createStoryAction} from './routes/createStory'; +import CreatePublication, {action as createPublicationAction} from './routes/createPublication'; +import { action as deleteStoryAction } from './routes/deleteStory'; +import { action as deletePublicationAction } from './routes/deletePublication'; import './styles/index.css' import { createBrowserRouter, @@ -58,6 +62,26 @@ const router = createBrowserRouter([ element: , loader: publicationsLoader, action: editPublicationAction + }, + { + path:"/story/create", + element: , + loader: storiesLoader, + action: createStoryAction + }, + { + path:"/publication/create", + element: , + loader: publicationsLoader, + action: createPublicationAction + }, + { + path:"/story/:storyId/delete", + action:deleteStoryAction + }, + { + path:"/publication/:publicationId/delete", + action:deletePublicationAction } ] }, diff --git a/src/routes/createPublication.jsx b/src/routes/createPublication.jsx new file mode 100644 index 0000000..f9427c9 --- /dev/null +++ b/src/routes/createPublication.jsx @@ -0,0 +1,53 @@ +import { Form,redirect } from "react-router-dom"; +import PageHeader from "../Components/PageHeader"; +import { requestCreate } from "../APIcalls.mjs"; + +export async function action({request,params}){ + const formData = await request.formData() + const data = Object.fromEntries(formData) + console.dir(data) + await requestCreate(data,'publication') + return redirect(`/publications`) +} + + + +export default function CreatePublication(){ + + + + return( + <> + +
+ + + + + +
+ + + ) + +} \ No newline at end of file diff --git a/src/routes/createStory.jsx b/src/routes/createStory.jsx new file mode 100644 index 0000000..0a8db2b --- /dev/null +++ b/src/routes/createStory.jsx @@ -0,0 +1,45 @@ +import { Form,redirect } from "react-router-dom"; +import PageHeader from "../Components/PageHeader"; +import { requestCreate } from "../APIcalls.mjs"; + +export async function action({request,params}){ + const formData = await request.formData() + const data = Object.fromEntries(formData) + console.dir(data) + await requestCreate(data,'story') + return redirect(`/stories`) +} + + + +export default function CreateStory(){ + + + + return( + <> + +
+ + + + +
+ + + ) + +} \ No newline at end of file diff --git a/src/routes/deletePublication.jsx b/src/routes/deletePublication.jsx new file mode 100644 index 0000000..bd1ccec --- /dev/null +++ b/src/routes/deletePublication.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.publicationId)},'publication') + return redirect("/publications") +} \ No newline at end of file diff --git a/src/routes/deleteStory.jsx b/src/routes/deleteStory.jsx new file mode 100644 index 0000000..1058ef7 --- /dev/null +++ b/src/routes/deleteStory.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)},'story') + return redirect("/stories") +} \ No newline at end of file diff --git a/src/routes/publication.jsx b/src/routes/publication.jsx index 2efef92..14ef464 100644 --- a/src/routes/publication.jsx +++ b/src/routes/publication.jsx @@ -1,4 +1,4 @@ -import { useLoaderData, useParams, Link } from "react-router-dom"; +import { useLoaderData, useParams, Link, Form } from "react-router-dom"; import Table from "../Components/Table"; import PageHeader from "../Components/PageHeader"; import { submissionsTableOptions } from "./submissions.jsx"; @@ -23,6 +23,21 @@ export default function Publication() { header='Submissions:' > EDIT +
{ + if ( + !confirm( + "Please confirm you want to delete this record." + ) + ) { + event.preventDefault(); + } + }} +> + +
) diff --git a/src/routes/story.jsx b/src/routes/story.jsx index 992d8ec..e5a1d13 100644 --- a/src/routes/story.jsx +++ b/src/routes/story.jsx @@ -1,4 +1,4 @@ -import { useLoaderData, useParams, Link } from "react-router-dom"; +import { useLoaderData, useParams, Link,Form } from "react-router-dom"; import Table from "../Components/Table"; import PageHeader from "../Components/PageHeader"; import { submissionsTableOptions } from "./submissions.jsx"; @@ -24,6 +24,21 @@ export default function Story(){ header='Submissions:' > EDIT +
{ + if ( + !confirm( + "Please confirm you want to delete this record." + ) + ) { + event.preventDefault(); + } + }} +> + +
)