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..823891b 100644
--- a/src/Components/Table.jsx
+++ b/src/Components/Table.jsx
@@ -3,9 +3,10 @@ import { useState } from "react"
import { renderClassNames } from "../functions/utilities.mjs"
import { DateTime } from "luxon"
import { Link } from "react-router-dom"
-import { cloneDeep } from "lodash"
+import { cloneDeep, forIn } 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,12 +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...
}
const [sortBy, setSortBy] = useState({
@@ -94,11 +105,19 @@ export default function Table(props) {
return {props.children} |
}
const contents = row[key]
+
if (Array.isArray(contents)) {
+ const badgeIndex = props?.badges?.findIndex(e=>{return e[0]==key})
+ console.log("badgeIndex for key "+key+": "+badgeIndex)
+ if(badgeIndex>=0){
+ const array = contents.map(e=>{return e[props.badges[badgeIndex][1]]})
+ console.dir(array)
+ return |
+ }
if (typeof contents[0] === 'object') {
return |
}
- return |
+
}
const getOriginalRowByID = (array,row) => {
return array.find(e=>e?.id===row?.id)
@@ -111,9 +130,7 @@ export default function Table(props) {
if (props?.links?.includes(key)) {
return {contents} |
}
- // if (key === "Days Out") {
- // return {row['Days Out']} |
- // }
+
return {contents} |
}
const oddOrEven = (n) => {
@@ -131,7 +148,6 @@ export default function Table(props) {
const classNames = [
`row ${oddOrEven(rowIndex)} `,
isHighlight(props?.highlights, row) ? 'highlight' : "",
- //row['Query After'] - row['Days Out'] < 0 && row['Responded'] === '-' ? "alert" : ""
]
return {cells}
})
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"?
:""}
{
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;