move loaders to own module
This commit is contained in:
parent
3f2da991b4
commit
e483e39c5d
|
@ -0,0 +1,16 @@
|
||||||
|
import {getStories,getPublications,getSubmissions} from './APIcalls.mjs'
|
||||||
|
|
||||||
|
export async function publicationsLoader (){
|
||||||
|
let publications = await getPublications()
|
||||||
|
publications = publications.data
|
||||||
|
return {publications}
|
||||||
|
}
|
||||||
|
export async function storiesLoader(){
|
||||||
|
let stories = await getStories()
|
||||||
|
stories = stories.data
|
||||||
|
return {stories}
|
||||||
|
}export async function submissionsLoader(){
|
||||||
|
let submissions = await getSubmissions()
|
||||||
|
submissions=submissions.data
|
||||||
|
return { submissions }
|
||||||
|
}
|
15
src/main.jsx
15
src/main.jsx
|
@ -1,12 +1,13 @@
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import ReactDOM from 'react-dom/client'
|
import ReactDOM from 'react-dom/client'
|
||||||
import { Root, loader as rootLoader } from './routes/root';
|
import { Root } from './routes/root';
|
||||||
import ErrorPage from './error-page';
|
import ErrorPage from './error-page';
|
||||||
import Submissions from './routes/submissions';
|
import {Submissions} from './routes/submissions';
|
||||||
import Story from './routes/story';
|
import Story from './routes/story';
|
||||||
import Stories from './routes/stories';
|
import Stories from './routes/stories';
|
||||||
import Publication from './routes/publication';
|
import Publication from './routes/publication';
|
||||||
import Publications from './routes/publications';
|
import Publications from './routes/publications';
|
||||||
|
import { storiesLoader,publicationsLoader,submissionsLoader } from './loaders.mjs';
|
||||||
import './styles/index.css'
|
import './styles/index.css'
|
||||||
import {
|
import {
|
||||||
createBrowserRouter,
|
createBrowserRouter,
|
||||||
|
@ -22,27 +23,27 @@ const router = createBrowserRouter([
|
||||||
{
|
{
|
||||||
path: "/stories",
|
path: "/stories",
|
||||||
element: <Stories/>,
|
element: <Stories/>,
|
||||||
loader: rootLoader
|
loader: storiesLoader
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/submissions",
|
path: "/submissions",
|
||||||
element: <Submissions/>,
|
element: <Submissions/>,
|
||||||
loader: rootLoader
|
loader: submissionsLoader
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/publications",
|
path: "/publications",
|
||||||
element: <Publications/>,
|
element: <Publications/>,
|
||||||
loader: rootLoader
|
loader: publicationsLoader
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/story/:storyId",
|
path: "/story/:storyId",
|
||||||
element: <Story/>,
|
element: <Story/>,
|
||||||
loader: rootLoader
|
loader: storiesLoader
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/publication/:publicationId",
|
path: "/publication/:publicationId",
|
||||||
element: <Publication/>,
|
element: <Publication/>,
|
||||||
loader: rootLoader
|
loader: publicationsLoader
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,15 +1,23 @@
|
||||||
import { useLoaderData, useParams } from "react-router-dom";
|
import { useLoaderData, useParams } from "react-router-dom";
|
||||||
import Table from "../Components/Table";
|
import Table from "../Components/Table";
|
||||||
import PageHeader from "../Components/PageHeader";
|
import PageHeader from "../Components/PageHeader";
|
||||||
export default function Publication(){
|
import { submissionsTableOptions } from "./submissions.jsx";
|
||||||
|
|
||||||
|
const { filterList, highlights, clickables } = submissionsTableOptions
|
||||||
|
export default function Publication() {
|
||||||
const { publicationId } = useParams()
|
const { publicationId } = useParams()
|
||||||
const { publications } = useLoaderData()
|
const { publications } = useLoaderData()
|
||||||
const publicationsData = publications.find(row=>row.id==publicationId)
|
const publicationsData = publications.find(row => row.id == publicationId)
|
||||||
return(
|
return (
|
||||||
<>
|
<>
|
||||||
<PageHeader text={'Publication#'+publicationId}/>
|
<PageHeader text={'Publication#' + publicationId} />
|
||||||
{JSON.stringify(publicationsData)}
|
{JSON.stringify(publicationsData)}
|
||||||
<Table data={publicationsData.submissions}></Table>
|
<Table data={publicationsData.submissions}
|
||||||
|
filterList={filterList}
|
||||||
|
highlights={highlights}
|
||||||
|
clickables={clickables}
|
||||||
|
sortByDefault='date_submitted'
|
||||||
|
></Table>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
|
@ -4,6 +4,7 @@ import Table from "../Components/Table.jsx";
|
||||||
import PageHeader from "../Components/PageHeader.jsx";
|
import PageHeader from "../Components/PageHeader.jsx";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export default function Publications(){
|
export default function Publications(){
|
||||||
|
@ -25,6 +26,7 @@ export default function Publications(){
|
||||||
filterList={filterList}
|
filterList={filterList}
|
||||||
links={links}
|
links={links}
|
||||||
clickables={clickables}
|
clickables={clickables}
|
||||||
|
sortByDefault='title'
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,15 +1,7 @@
|
||||||
import { Outlet, Link } from "react-router-dom"
|
import { Outlet, Link } from "react-router-dom"
|
||||||
import { getStories, getPublications, getSubmissions } from "../APIcalls.mjs"
|
import { getStories, getPublications, getSubmissions } from "../APIcalls.mjs"
|
||||||
|
|
||||||
export async function loader(){
|
|
||||||
let stories = await getStories()
|
|
||||||
stories = stories.data
|
|
||||||
let publications = await getPublications()
|
|
||||||
publications = publications.data
|
|
||||||
let submissions = await getSubmissions()
|
|
||||||
submissions=submissions.data
|
|
||||||
return { stories, publications, submissions }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
export function Root() {
|
export function Root() {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { useLoaderData } from "react-router-dom"
|
import { useLoaderData } from "react-router-dom"
|
||||||
import { getStories } from "../APIcalls.mjs";
|
|
||||||
import Table from "../Components/Table.jsx";
|
import Table from "../Components/Table.jsx";
|
||||||
import PageHeader from "../Components/PageHeader.jsx";
|
import PageHeader from "../Components/PageHeader.jsx";
|
||||||
|
import { getStories } from "../APIcalls.mjs";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,7 +17,12 @@ export default function Stories(){
|
||||||
return(
|
return(
|
||||||
<>
|
<>
|
||||||
<PageHeader text="Stories"/>
|
<PageHeader text="Stories"/>
|
||||||
<Table data={stories} filterList={filterList} clickables={clickables}/>
|
<Table
|
||||||
|
data={stories}
|
||||||
|
filterList={filterList}
|
||||||
|
clickables={clickables}
|
||||||
|
sortByDefault='title'
|
||||||
|
/>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,28 @@
|
||||||
import { useLoaderData, useParams } from "react-router-dom";
|
import { useLoaderData, useParams } from "react-router-dom";
|
||||||
import Table from "../Components/Table";
|
import Table from "../Components/Table";
|
||||||
import PageHeader from "../Components/PageHeader";
|
import PageHeader from "../Components/PageHeader";
|
||||||
|
import { submissionsTableOptions } from "./submissions.jsx";
|
||||||
|
|
||||||
|
const { filterList=[...filterList],highlights,clickables } = submissionsTableOptions
|
||||||
export default function Story(){
|
export default function Story(){
|
||||||
const { storyId } = useParams()
|
const { storyId } = useParams()
|
||||||
const { stories } = useLoaderData()
|
const { stories } = useLoaderData()
|
||||||
const storyData = stories.find(row=>row.id==storyId)
|
const storyData = stories.find(row=>row.id==storyId)
|
||||||
|
filterList.push(
|
||||||
|
'story',
|
||||||
|
|
||||||
|
)
|
||||||
return(
|
return(
|
||||||
<>
|
<>
|
||||||
<PageHeader text={'Story#'+storyId}/>
|
<PageHeader text={'Story#'+storyId}/>
|
||||||
{JSON.stringify(storyData)}
|
{JSON.stringify(storyData)}
|
||||||
<Table data={storyData.submissions}></Table>
|
<Table
|
||||||
|
data={storyData.submissions}
|
||||||
|
filterList={filterList}
|
||||||
|
highlights={highlights}
|
||||||
|
clickables={clickables}
|
||||||
|
sortByDefault='date_submitted'
|
||||||
|
></Table>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
|
@ -3,9 +3,23 @@ import { getSubmissions } from "../APIcalls.mjs";
|
||||||
import Table from "../Components/Table";
|
import Table from "../Components/Table";
|
||||||
import PageHeader from "../Components/PageHeader";
|
import PageHeader from "../Components/PageHeader";
|
||||||
|
|
||||||
|
export const submissionsTableOptions = {
|
||||||
|
filterList : [
|
||||||
|
'response_id',
|
||||||
|
'pub_id',
|
||||||
|
'story_id'
|
||||||
|
],
|
||||||
|
highlights : [
|
||||||
|
['response','Pending']
|
||||||
|
],
|
||||||
|
clickables : [
|
||||||
|
['story',(row)=>{
|
||||||
|
return `../../story/${row.story_id}`}],
|
||||||
|
['publication',(row)=>{return `../../publication/${row.pub_id}`}]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
export function Submissions(){
|
||||||
export default function Submissions(){
|
|
||||||
const { submissions } = useLoaderData();
|
const { submissions } = useLoaderData();
|
||||||
const filterList = [
|
const filterList = [
|
||||||
'response_id',
|
'response_id',
|
||||||
|
@ -28,7 +42,7 @@ export default function Submissions(){
|
||||||
data={submissions}
|
data={submissions}
|
||||||
filterList={filterList}
|
filterList={filterList}
|
||||||
highlights={highlights}
|
highlights={highlights}
|
||||||
sortByDefault="Submitted"
|
sortByDefault="date_submitted"
|
||||||
clickables={clickables}
|
clickables={clickables}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
|
|
Loading…
Reference in New Issue