diff --git a/admin/package.json b/admin/package.json index 309e3e363..3030d72c9 100644 --- a/admin/package.json +++ b/admin/package.json @@ -21,7 +21,7 @@ "react-scripts": "3.4.1" }, "scripts": { - "start": "set PORT=3001 react-scripts start", + "start": "set PORT=3001 && react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" diff --git a/admin/public/index.html b/admin/public/index.html index aa069f27c..5ce0f5032 100644 --- a/admin/public/index.html +++ b/admin/public/index.html @@ -24,7 +24,7 @@ work correctly both with client-side routing and a non-root public URL. Learn how to configure a non-root public URL by running `npm run build`. --> - React App + ImEX Online - ADMIN diff --git a/admin/src/components/admin-root/admin-root.component.jsx b/admin/src/components/admin-root/admin-root.component.jsx index 3fff80099..773005d6c 100644 --- a/admin/src/components/admin-root/admin-root.component.jsx +++ b/admin/src/components/admin-root/admin-root.component.jsx @@ -1,15 +1,27 @@ -import React, { Component } from "react"; -import buildHasuraProvider from "ra-data-hasura-graphql"; -import { Admin, Resource, ListGuesser, Authenticated } from "react-admin"; -import { ApolloClient, InMemoryCache } from "@apollo/client"; -import authProvider from "../auth-provider/auth-provider"; -import { setContext } from "apollo-link-context"; -import apolloLogger from "apollo-link-logger"; +import { ApolloClient, InMemoryCache, ApolloProvider } from "@apollo/client"; import { ApolloLink } from "apollo-boost"; +import { setContext } from "apollo-link-context"; import { HttpLink } from "apollo-link-http"; +import apolloLogger from "apollo-link-logger"; +import buildHasuraProvider from "ra-data-hasura-graphql"; +import React, { Component } from "react"; +import { + Admin, + EditGuesser, + ListGuesser, + Resource, + ShowGuesser, +} from "react-admin"; import { auth } from "../../firebase/admin-firebase-utils"; -import JobsList from "../jobs/jobs.list"; +import authProvider from "../auth-provider/auth-provider"; +import JoblinesCreate from "../joblines/joblines.create"; +import JoblinesEdit from "../joblines/joblines.edit"; +import JoblinesList from "../joblines/joblines.list"; +import JoblinesShow from "../joblines/joblines.show"; +import JobsCreate from "../jobs/jobs.create"; import JobsEdit from "../jobs/jobs.edit"; +import JobsList from "../jobs/jobs.list"; +import JobsShow from "../jobs/jobs.show"; const httpLink = new HttpLink({ uri: process.env.REACT_APP_GRAPHQL_ENDPOINT, @@ -76,10 +88,186 @@ class AdminRoot extends Component { } return ( - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); } } diff --git a/admin/src/components/joblines/joblines.create.jsx b/admin/src/components/joblines/joblines.create.jsx new file mode 100644 index 000000000..b1fa4fb97 --- /dev/null +++ b/admin/src/components/joblines/joblines.create.jsx @@ -0,0 +1,26 @@ +import React from "react"; +import { + Create, + + + + NumberInput, SimpleForm, + TextInput +} from "react-admin"; + +const JoblinesCreate = (props) => ( + + + + + + + + + + + + +); + +export default JoblinesCreate; diff --git a/admin/src/components/joblines/joblines.edit.jsx b/admin/src/components/joblines/joblines.edit.jsx new file mode 100644 index 000000000..3bd67ec90 --- /dev/null +++ b/admin/src/components/joblines/joblines.edit.jsx @@ -0,0 +1,73 @@ +import React from "react"; +import { + Edit, + EmailField, + DateTimeInput, + DateField, + NumberInput, + BooleanInput, + SimpleForm, + TextInput, +} from "react-admin"; +import { number } from "prop-types"; + +const JoblinesEdit = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export default JoblinesEdit; diff --git a/admin/src/components/joblines/joblines.list.jsx b/admin/src/components/joblines/joblines.list.jsx new file mode 100644 index 000000000..f9c6500b6 --- /dev/null +++ b/admin/src/components/joblines/joblines.list.jsx @@ -0,0 +1,29 @@ +import React from "react"; +import { + Datagrid, List, + + + NumberField, + + ReferenceField, TextField +} from "react-admin"; + +const JoblinesList = (props) => ( + + + + + + + + + + + + + + + +); + +export default JoblinesList; diff --git a/admin/src/components/joblines/joblines.show.jsx b/admin/src/components/joblines/joblines.show.jsx new file mode 100644 index 000000000..3d7b4d5da --- /dev/null +++ b/admin/src/components/joblines/joblines.show.jsx @@ -0,0 +1,24 @@ +import React from "react"; +import { + NumberInput, Show, + + SimpleShowLayout, + TextInput +} from "react-admin"; + +const JoblinesShow = (props) => ( + + + + + + + + + + + + +); + +export default JoblinesShow; diff --git a/admin/src/components/jobs/jobs.create.jsx b/admin/src/components/jobs/jobs.create.jsx new file mode 100644 index 000000000..7c133229b --- /dev/null +++ b/admin/src/components/jobs/jobs.create.jsx @@ -0,0 +1,17 @@ +import React from "react"; +import { Create, EmailField, SimpleForm, TextInput } from "react-admin"; + +const JobsCreate = (props) => ( + + + + + + + + + + +); + +export default JobsCreate; diff --git a/admin/src/components/jobs/jobs.edit.jsx b/admin/src/components/jobs/jobs.edit.jsx index e3276c0e5..754ef6a04 100644 --- a/admin/src/components/jobs/jobs.edit.jsx +++ b/admin/src/components/jobs/jobs.edit.jsx @@ -1,22 +1,253 @@ import React from "react"; -import { - Edit, - - - EmailField, - SimpleForm, - TextInput -} from "react-admin"; +import { Edit, SimpleForm, TextInput } from "react-admin"; const JobsEdit = (props) => ( - - - - - - - + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
); diff --git a/admin/src/components/jobs/jobs.list.jsx b/admin/src/components/jobs/jobs.list.jsx index 68de61829..3dd4b98d3 100644 --- a/admin/src/components/jobs/jobs.list.jsx +++ b/admin/src/components/jobs/jobs.list.jsx @@ -1,8 +1,19 @@ import React from "react"; -import { List, Datagrid, TextField, EmailField, ReferenceField } from "react-admin"; +import { + Datagrid, + Filter, + List, + ReferenceField, + TextField, + SelectInput, + TextInput, +} from "react-admin"; +import { useQuery } from "@apollo/client"; +import { QUERY_ALL_SHOPS } from "../../graphql/admin.shop.queries"; +import CircularProgress from "@material-ui/core/CircularProgress"; const JobsList = (props) => ( - + } {...props}> @@ -12,10 +23,40 @@ const JobsList = (props) => ( - - + + + + + + + + + + + + ); +const JobsFilter = (props) => { + const { loading, error, data } = useQuery(QUERY_ALL_SHOPS); + if (loading) return ; + if (error) return JSON.stringify(error); + + return ( + + + { + return { id: b.id, name: b.shopname }; + })} + alwaysOn + allowEmpty={false} + /> + + ); +}; + export default JobsList; diff --git a/admin/src/components/jobs/jobs.show.jsx b/admin/src/components/jobs/jobs.show.jsx new file mode 100644 index 000000000..5ed4fef45 --- /dev/null +++ b/admin/src/components/jobs/jobs.show.jsx @@ -0,0 +1,283 @@ +import React from "react"; +import { + Datagrid, + EditButton, + + NumberField, + ReferenceManyField, + Show, + + + Tab, TabbedShowLayout, + TextField +} from "react-admin"; + +const JobsShow = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export default JobsShow; diff --git a/admin/src/graphql/admin.shop.queries.js b/admin/src/graphql/admin.shop.queries.js new file mode 100644 index 000000000..04ef8d816 --- /dev/null +++ b/admin/src/graphql/admin.shop.queries.js @@ -0,0 +1,10 @@ +import gql from "graphql-tag"; + +export const QUERY_ALL_SHOPS = gql` + query QUERY_ALL_SHOPS { + bodyshops { + id + shopname + } + } +`;