From 8308557afaf2c7a8418b25744cf3508f4670ac63 Mon Sep 17 00:00:00 2001 From: Andrzej Stepien Date: Thu, 14 Sep 2023 11:39:46 +0200 Subject: [PATCH] make 'deleting' stories and pubs non-destructive --- src/APIcalls.mjs | 1 + src/Components/Table.jsx | 18 +++++++++++++++--- src/assets/document.svg | 3 +++ src/routes/deletePublication.jsx | 4 ++-- src/routes/deleteStory.jsx | 11 ++++++++--- src/routes/editSubmissionRoot.jsx | 2 +- src/routes/publication.jsx | 4 ++-- src/routes/publications.jsx | 11 ++++++++--- src/routes/root.jsx | 4 ++-- src/routes/stories.jsx | 13 +++++++++---- src/routes/story.jsx | 4 ++-- src/routes/submissions.jsx | 14 ++++++++++---- src/styles/PageHeader.css | 1 - src/styles/Sidebar.css | 2 ++ src/styles/index.css | 3 +++ 15 files changed, 68 insertions(+), 27 deletions(-) create mode 100644 src/assets/document.svg diff --git a/src/APIcalls.mjs b/src/APIcalls.mjs index f744e9c..10e1adb 100644 --- a/src/APIcalls.mjs +++ b/src/APIcalls.mjs @@ -42,6 +42,7 @@ export const getResponses = async () => { export const requestEdit = async (data,type) => { try { const res = await API.post(`/${type}/edit`,data) + console.log(res) return res } catch (error) { console.error(error) diff --git a/src/Components/Table.jsx b/src/Components/Table.jsx index a9725bb..0abe8a4 100644 --- a/src/Components/Table.jsx +++ b/src/Components/Table.jsx @@ -5,7 +5,8 @@ import { DateTime } from "luxon" import { Link } from "react-router-dom" import { cloneDeep } from "lodash" export default function Table(props) { - const filterList = props?.filterList ?? [] + const filterColumns = props?.filterColumns ?? [] + const filterRows = props?.filterRows ?? [] const sort = (data,sortBy) => { const isDate = (str) =>{ if(str && DateTime.fromFormat(str,'yyyy-MM-dd').isValid){ @@ -37,11 +38,22 @@ export default function Table(props) { } const data = props?.data ? cloneDeep(props?.data) .map(e=>{ - for (const filter of filterList) { + for(const filter of filterRows){ + if(e[filter.column]===filter.value){ + return null + } + } + for (const filter of filterColumns) { delete e[filter] } + if(props?.extraCols){ + for (const col of props.extraCols) { + e[col[0]]=col[1] + } + } return e - }) : [] + }) + .filter(e=>{return e!==null}) : [] if (data.length === 0) { return

Nothing to see here...

} diff --git a/src/assets/document.svg b/src/assets/document.svg new file mode 100644 index 0000000..8e2ba05 --- /dev/null +++ b/src/assets/document.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/routes/deletePublication.jsx b/src/routes/deletePublication.jsx index 6033e46..853ae29 100644 --- a/src/routes/deletePublication.jsx +++ b/src/routes/deletePublication.jsx @@ -1,10 +1,10 @@ import { redirect } from "react-router"; -import { requestDelete } from "../APIcalls.mjs"; +import { requestEdit } from "../APIcalls.mjs"; export async function action({request}){ const formData = await request.formData() const data = Object.fromEntries(formData) console.dir(data) - await requestDelete({id:Number(data.id)},'publication') + await requestEdit({id:Number(data.id),deleted:1},'publication') return redirect("/publications") } \ No newline at end of file diff --git a/src/routes/deleteStory.jsx b/src/routes/deleteStory.jsx index da7d0e9..d319347 100644 --- a/src/routes/deleteStory.jsx +++ b/src/routes/deleteStory.jsx @@ -1,10 +1,15 @@ import { redirect } from "react-router"; -import { requestDelete } from "../APIcalls.mjs"; +import { requestEdit } from "../APIcalls.mjs"; export async function action({request}){ const formData = await request.formData() - const data = Object.fromEntries(formData) + let data = Object.fromEntries(formData) console.dir(data) - await requestDelete({id:Number(data.id)},'story') + data = { + id:Number(data.id), + deleted:1, + } + console.log(data) + await requestEdit(data,'story') return redirect("/stories") } \ No newline at end of file diff --git a/src/routes/editSubmissionRoot.jsx b/src/routes/editSubmissionRoot.jsx index 1036add..12c7fdf 100644 --- a/src/routes/editSubmissionRoot.jsx +++ b/src/routes/editSubmissionRoot.jsx @@ -3,7 +3,7 @@ import Dropdown from "../Components/Dropdown"; import { useState } from "react"; export default function EditSubmissionRoot (){ const {submissions} = useLoaderData() -const submissionsOptions = submissions?.map(row=>[row.id,row.date_submitted]) +const submissionsOptions = submissions?.map(row=>[row.id,`#${row.id}, submitted: ${row.date_submitted}`]) const [id,setId]=useState(1) const handleChange = (event) => { const value = event.target.value diff --git a/src/routes/publication.jsx b/src/routes/publication.jsx index 3b9a79e..3ade3ad 100644 --- a/src/routes/publication.jsx +++ b/src/routes/publication.jsx @@ -3,7 +3,7 @@ import Table from "../Components/Table"; import PageHeader from "../Components/PageHeader"; import { submissionsTableOptions } from "./submissions.jsx"; -const { filterList, highlights, clickables } = submissionsTableOptions +const { filterColumns, highlights, clickables } = submissionsTableOptions export default function Publication() { const { publicationId } = useParams() const { publications } = useLoaderData() @@ -19,7 +19,7 @@ export default function Publication() {
) diff --git a/src/routes/root.jsx b/src/routes/root.jsx index e1e9dbd..d8d3032 100644 --- a/src/routes/root.jsx +++ b/src/routes/root.jsx @@ -3,7 +3,6 @@ import { getStories, getPublications, getSubmissions } from "../APIcalls.mjs" import Loader from "../Components/Loader" - export function Root() { const navigation = useNavigation() return( @@ -11,7 +10,8 @@ export function Root() {
{navigation==="loading"?:""}
) diff --git a/src/routes/story.jsx b/src/routes/story.jsx index 2bc05c9..2ea57cb 100644 --- a/src/routes/story.jsx +++ b/src/routes/story.jsx @@ -4,7 +4,7 @@ import PageHeader from "../Components/PageHeader"; import { submissionsTableOptions } from "./submissions.jsx"; import { useState, useEffect } from "react"; -const { filterList = [...filterList], highlights, clickables } = submissionsTableOptions +const { filterColumns = [...filterColumns], highlights, clickables } = submissionsTableOptions export default function Story() { const { storyId } = useParams() const { stories } = useLoaderData() @@ -20,7 +20,7 @@ export default function Story() {
{ return `../../story/${row.story_id}`}], ['publication',(row)=>{return `../../publication/${row.pub_id}`}], - ['id',(row)=>{return `../../submission/${row.id}/edit`}] + ['edit',(row)=>{return `../../submission/${row.id}/edit`}] + ] + + const extraCols = [ + ['edit', ] ] @@ -43,10 +48,11 @@ export function Submissions(){
) diff --git a/src/styles/PageHeader.css b/src/styles/PageHeader.css index 67542e5..a26b4b2 100644 --- a/src/styles/PageHeader.css +++ b/src/styles/PageHeader.css @@ -2,7 +2,6 @@ width: 5rem; height: 5rem; margin: 1rem; - filter: invert(83%) sepia(12%) saturate(387%) hue-rotate(129deg) brightness(89%) contrast(89%); } #page-header h1 { diff --git a/src/styles/Sidebar.css b/src/styles/Sidebar.css index 55e326e..83416a5 100644 --- a/src/styles/Sidebar.css +++ b/src/styles/Sidebar.css @@ -10,6 +10,8 @@ #sidebar h1{ text-shadow: var(--text-shadow-dark); font-size:4.5rem; + line-height: 1em; + margin-bottom: 1rem; } #sidebar a:hover{ text-shadow: diff --git a/src/styles/index.css b/src/styles/index.css index 9b776c2..44272f0 100644 --- a/src/styles/index.css +++ b/src/styles/index.css @@ -73,6 +73,9 @@ html { cursor:pointer; } + img{ + filter: invert(83%) sepia(12%) saturate(500%) hue-rotate(129deg) brightness(60%) contrast(89%); + } h1{ font-size: 4rem;