From 81000dd971ad45c3efb26021bdf762c601abaf68 Mon Sep 17 00:00:00 2001
From: Patrick Fic <>
Date: Fri, 31 Jul 2020 17:28:06 -0700
Subject: [PATCH] Further development of admin dashboard BOD-194
---
admin/package.json | 2 +-
admin/public/index.html | 2 +-
.../admin-root/admin-root.component.jsx | 212 ++++++++++++-
.../components/joblines/joblines.create.jsx | 26 ++
.../src/components/joblines/joblines.edit.jsx | 73 +++++
.../src/components/joblines/joblines.list.jsx | 29 ++
.../src/components/joblines/joblines.show.jsx | 24 ++
admin/src/components/jobs/jobs.create.jsx | 17 ++
admin/src/components/jobs/jobs.edit.jsx | 261 +++++++++++++++-
admin/src/components/jobs/jobs.list.jsx | 49 ++-
admin/src/components/jobs/jobs.show.jsx | 283 ++++++++++++++++++
admin/src/graphql/admin.shop.queries.js | 10 +
12 files changed, 955 insertions(+), 33 deletions(-)
create mode 100644 admin/src/components/joblines/joblines.create.jsx
create mode 100644 admin/src/components/joblines/joblines.edit.jsx
create mode 100644 admin/src/components/joblines/joblines.list.jsx
create mode 100644 admin/src/components/joblines/joblines.show.jsx
create mode 100644 admin/src/components/jobs/jobs.create.jsx
create mode 100644 admin/src/components/jobs/jobs.show.jsx
create mode 100644 admin/src/graphql/admin.shop.queries.js
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
+ }
+ }
+`;