From 6bdd0b5ebd6a7bb2bb20b8b041c441050b8a45d3 Mon Sep 17 00:00:00 2001
From: James D'Alton <jda1g15@soton.ac.uk>
Date: Mon, 17 Feb 2020 14:03:26 +0000
Subject: [PATCH] basic layout achieved

---
 src/compforge/src/FormsDisplay.js |  49 ++++++++++++++
 src/compforge/src/Menu.js         |  47 +++++++++++++
 src/compforge/src/index.js        | 106 ++++++++++++++----------------
 3 files changed, 146 insertions(+), 56 deletions(-)
 create mode 100644 src/compforge/src/FormsDisplay.js
 create mode 100644 src/compforge/src/Menu.js

diff --git a/src/compforge/src/FormsDisplay.js b/src/compforge/src/FormsDisplay.js
new file mode 100644
index 00000000..aa04585a
--- /dev/null
+++ b/src/compforge/src/FormsDisplay.js
@@ -0,0 +1,49 @@
+import React from 'react';
+import { Grid } from '@material-ui/core';
+
+const FormsDisplay = ({ formItems }) => {
+    return (
+        <div>
+            {formItems.map(
+                (formItem, i) =>
+                    <Grid
+                        container
+                        direction="column"
+                        justify="space-evenly"
+                        alignItems="stretch"
+                        spacing={3}
+                        item
+                        xs={9}
+                        key={i}>
+                        <FormItem
+                            name={formItem.name}
+                            owner={formItem.owner}
+                            dateModified={formItem.dateModified} />
+                    </Grid>
+            )}
+        </div>
+    )
+}
+
+const FormItem = ({ name, owner, dateModified }) => {
+    return (
+        <Grid
+            container
+            direction="row"
+            spacing={3}>
+            <Grid item xs={3}>
+                <h3>{name}</h3>
+            </Grid>
+            <Grid item xs={3}>
+                <h3>{owner}</h3>
+            </Grid>
+            <Grid item xs={3}>
+                <div outline="2px solid black">
+                    <h3>{dateModified}</h3>
+                </div>
+            </Grid>
+        </Grid>
+    )
+}
+
+export default FormsDisplay
\ No newline at end of file
diff --git a/src/compforge/src/Menu.js b/src/compforge/src/Menu.js
new file mode 100644
index 00000000..11db4d1c
--- /dev/null
+++ b/src/compforge/src/Menu.js
@@ -0,0 +1,47 @@
+import React from 'react';
+import { Button, Grid } from '@material-ui/core';
+
+
+class Menu extends React.Component {
+    state = { signedIn: false }
+
+    toggleSignedInOut = () => {
+        this.setState(prevState => ({
+            signedIn: !prevState.signedIn
+        }))
+    }
+
+    render() {
+        const { menuItems } = this.props
+        return (
+            <Grid
+                container
+                direction="column"
+                justify="space-evenly"
+                alignItems="stretch"
+                spacing={3}
+                >
+                {
+                    menuItems.map(
+                        (menuItem, i) =>
+                            <Grid key={i} item xs={3}>
+                                <MenuButton
+                                    key={i}
+                                    id={menuItem.id} />
+                            </Grid>
+                    )
+                }
+            </Grid >
+        )
+    }
+}
+
+const MenuButton = ({ id }) => {
+    return (
+        <section>
+            <Button variant="contained" color="primary">{id}</Button>
+        </section>
+    )
+}
+
+export default Menu
\ No newline at end of file
diff --git a/src/compforge/src/index.js b/src/compforge/src/index.js
index 2b109ff7..d8bacca7 100644
--- a/src/compforge/src/index.js
+++ b/src/compforge/src/index.js
@@ -1,75 +1,69 @@
 import React from 'react';
 import ReactDOM from 'react-dom';
-import { Grid, AppBar, Button } from '@material-ui/core';
+import { Grid, AppBar, Toolbar, Typography, Button, makeStyles } from '@material-ui/core';
+import Menu from './Menu'
+import FormsDisplay from './FormsDisplay'
 
 let menuItems = [
-  {"id": "createForm"},
-  {"id": "shareForm"},
-  {"id": "addPartner"},
-  {"id": "viewAccount"},
-  {"id": "signOut"}
+  { "id": "createForm" },
+  { "id": "shareForm" },
+  { "id": "addPartner" },
+  { "id": "viewAccount" },
+  { "id": "signOut" }
 ]
 
+let formItems = [
+  { "name": "myFirstForm", "owner": "me!", "dateModified": "Today 12:32" },
+  { "name": "mySecondForm", "owner": "me!", "dateModified": "Yesterday 16:04" },
+  { "name": "myThirdForm", "owner": "me!", "dateModified": "Friday 14:46" }
+]
+
+const useStyles = makeStyles(theme => ({
+  root: {
+    flexGrow: 1,
+  },
+  menuButton: {
+    marginRight: theme.spacing(2),
+  },
+  title: {
+    flexGrow: 1,
+  },
+}));
+
 const Page = () => {
+  const classes = useStyles();
   return (
-    <Grid container>
+    <Grid container spacing={3}>
       <Grid item xs={12}>
-        {/* <AppBar /> */}
-        <h1>header</h1>
+        <AppBar position="static">
+          <Toolbar>
+            <Typography variant="h6" className={classes.title}>
+              Compforge
+            </Typography>
+            <Button color="inherit">Login</Button>
+          </Toolbar>
+        </AppBar>
       </Grid>
-      <Grid item xs={3}>
-        <Menu menuItems={menuItems}/>
+      <Grid
+        item
+        xs={3}
+      >
+        <Menu menuItems={menuItems} />
       </Grid>
-      <Grid item xs={9}>
-        <FormsDisplay />
+      <Grid
+        container
+        item
+        xs={9}
+        direction="column"
+        justify="space-evenly"
+        spacing={3}
+      >
+        <FormsDisplay formItems={formItems} />
       </Grid>
     </Grid>
   )
 }
 
-const FormsDisplay = () => {
-  return (
-    <Grid item xs={3}>
-      <p>[Form name here]</p>
-    </Grid>
-  )
-}
-
-const MenuButton = ({id}) => {
-  return (
-    <section>
-      <Button variant="contained" color="primary">{id}</Button>
-    </section>
-  )
-}
-
-class Menu extends React.Component {
-  state = {signedIn: false}
-
-  toggleSignedInOut = () => {
-    this.setState(prevState => ({
-      signedIn: !prevState.signedIn
-    }))
-  }
-
-  render () {
-    const { menuItems } = this.props
-    return (
-      <div id="menu">
-        <AppBar />
-        <h2>Signed {this.state.signedIn ? 'in' : 'out'}</h2>
-        <Button variant="contained" color="primary" onClick={this.toggleSignedInOut}>Sign in/out</Button>
-        {menuItems.map(
-          (menuItem, i) =>
-            <MenuButton
-              key={i}
-              id={menuItem.id}/>
-        )}
-      </div>
-    )
-  }
-}
-
 ReactDOM.render(
   <Page />,
   document.getElementById('root')
-- 
GitLab