From 0f71748710b373dc16903181fda99102befb3c8f Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Tue, 6 Nov 2018 13:36:45 +0100 Subject: [PATCH 01/13] Upgrade to Website Integration --- client/package.json | 2 +- client/src/components/Browse.js | 53 +++++++-- client/src/components/Home.js | 114 ++++++------------ client/src/components/LoggedInUser.js | 73 +++++++++++- client/src/components/Menu.js | 142 +++++++++++++++++++++++ client/src/components/ProfileImages.js | 82 +++++++------ client/src/components/ProfileSheet.js | 116 ++++++++++++------ client/src/components/Search.js | 32 ++++- client/src/components/UserSearch.js | 8 +- client/src/components/YourDescendents.js | 56 ++++++++- client/src/components/YourReferrer.js | 56 ++++++++- client/src/index.js | 36 +++++- 12 files changed, 581 insertions(+), 189 deletions(-) create mode 100644 client/src/components/Menu.js diff --git a/client/package.json b/client/package.json index 3e764bdf9..32c519b93 100644 --- a/client/package.json +++ b/client/package.json @@ -1,7 +1,7 @@ { "name": "@advancedalgos/users-client", "description": "Advanced Algos Users client-side web app", - "version": "0.0.15", + "version": "0.0.16", "main": "src/index.js", "dependencies": { "@material-ui/core": "^3.2.0", diff --git a/client/src/components/Browse.js b/client/src/components/Browse.js index 2231b1f8b..7ee0100dd 100644 --- a/client/src/components/Browse.js +++ b/client/src/components/Browse.js @@ -1,14 +1,51 @@ -import React from 'react' +import React, { Component } from 'react' import UserList from './UserList' import CssBaseline from '@material-ui/core/CssBaseline' -const Browse = () => { - return ( - - - - - ) +class Browse extends Component { + + componentDidMount () { + window.dispatchEvent(new Event('load')) // This is a workaround to solve the problem that the slider does not show up + } + + render () { + return ( + + +
+
+
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Users Directory

    +

    +
    Everyone involved in Advanced Algos is here. +

    +
    +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ ) + } } export default Browse diff --git a/client/src/components/Home.js b/client/src/components/Home.js index bb829f8dd..f9437e5d1 100644 --- a/client/src/components/Home.js +++ b/client/src/components/Home.js @@ -1,98 +1,52 @@ import React, { Component } from 'react' import { compose } from 'recompose' import { withStyles } from '@material-ui/core/styles' -import Grid from '@material-ui/core/Grid' -import Typography from '@material-ui/core/Typography' import CssBaseline from '@material-ui/core/CssBaseline' const styles = theme => ({ - root: { - flexGrow: 1, - padding: 100 - }, - grid: { - margin: theme.spacing.unit, - width: '50%' - }, - typography: { - width: '100%', - marginTop: 20, - marginBottom: 20 - }, - '@global': { - body: { - backgroundColor: theme.palette.common.white - } - }, - layout: { - width: 'auto', - marginLeft: theme.spacing.unit * 3, - marginRight: theme.spacing.unit * 3, - [theme.breakpoints.up(900 + theme.spacing.unit * 3 * 2)]: { - width: 900, - marginLeft: 'auto', - marginRight: 'auto' - } - }, - heroContent: { - maxWidth: 600, - margin: '0 auto', - padding: `${theme.spacing.unit * 8}px 0 ${theme.spacing.unit * 6}px` - } + }) class Home extends Component { + componentDidMount () { + window.dispatchEvent(new Event('load')) // This is a workaround to solve the problem that the slider does not show up + } + render () { const { classes } = this.props return ( - -
-
- - Collaborate. Innovate. Evolve. - - - Welcome to Advanced Algos Users Module - + +
+
+
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Users Module

    +

    +
    Responsible for all human users of the Advanced Algos Platform. +

    +
    +
    +
    +
    +
    +
  • +
+
+
+
-
- - - - - Intro - - - This module is responsible for managing users across the Advanced Algos system. Here you can browse the Users Directory, search for users and get to their profiles. You can create your own User profile if you sign up, or manage it if you already have one by logging in. - - - Development Status - - - This module is is currently under development. Implementation started 1st of September 2018 and this is the result of the 3rd sprint of 2 weeks of work each. - - - What can you do? - - - Currently you can use the Browse section to list all registered users. At the Search page you can searh for users by name. Clicking on View Profile you can see some more info about that user. You can signup with your Github account and manage your profile information while logged in. While loggedin, you can edit your profile info, define your referrer and view your descendants. You will find all features under develpment with a dialog indicating it is not ready. - - - - - +
) diff --git a/client/src/components/LoggedInUser.js b/client/src/components/LoggedInUser.js index 933394e43..156ba0d17 100644 --- a/client/src/components/LoggedInUser.js +++ b/client/src/components/LoggedInUser.js @@ -11,6 +11,16 @@ import IconButton from '@material-ui/core/IconButton' import UserIcon from '@material-ui/icons/Person' import { Link } from 'react-router-dom' +import ProfileSheetIcon from '@material-ui/icons/Create' +import ProfileImagesIcon from '@material-ui/icons/Wallpaper' +import YourReferrerIcon from '@material-ui/icons/AccessibilityNew' +import DescendentsIcon from '@material-ui/icons/DeviceHub' + +const ProfileSheetLink = props => +const ProfileImagesLink = props => +const YourReferrerLink = props => +const YourDescendentsLink = props => + const UserLink = props => const styles = theme => ({ @@ -79,7 +89,7 @@ class LoggedInUser extends Component { let identityProvider = authArray[0] return ( -
+
  • -
  • + Your Profile + + + + ) } else { return ( @@ -114,9 +175,9 @@ class LoggedInUser extends Component { } return ( -
    + {this.displayLoggedInUser()} -
    + ) } } diff --git a/client/src/components/Menu.js b/client/src/components/Menu.js new file mode 100644 index 000000000..503e4ee34 --- /dev/null +++ b/client/src/components/Menu.js @@ -0,0 +1,142 @@ +import React, { Component } from 'react' +import PropTypes from 'prop-types' +import { withStyles } from '@material-ui/core/styles' +import classNames from 'classnames' +import AppBar from '@material-ui/core/AppBar' +import Toolbar from '@material-ui/core/Toolbar' +import Typography from '@material-ui/core/Typography' +import Button from '@material-ui/core/Button' + +// icons +import UsersIcon from '@material-ui/icons/People' +import BrowseIcon from '@material-ui/icons/ImportContacts' +import SearchIcon from '@material-ui/icons/Search' +import ContactIcon from '@material-ui/icons/ContactMail' +import BugReportIcon from '@material-ui/icons/BugReport' + +import { Link } from 'react-router-dom' + +// components +import LoggedInUser from './LoggedInUser' + +const HomeLink = props => +const BrowseLink = props => +const SearchLink = props => + +const styles = theme => ({ + cssRoot: { + color: '#FFFFFF', + backgroundColor: theme.palette.secondary, + '&:hover': { + backgroundColor: theme.palette.dark + }, + whiteSpace: 'nowrap', + paddingRight: 2 * theme.spacing.unit, + paddingLeft: 2 * theme.spacing.unit + }, + button: { + margin: theme.spacing.unit + }, + leftIcon: { + marginRight: theme.spacing.unit + }, + iconSmall: { + fontSize: 20 + } +}) + +class Menu extends Component { + + constructor (props) { + super(props) + this.state = { + authId: null + } + } + + componentDidMount () { + let user = localStorage.getItem('user') + let authId + + if (user !== null && user !== undefined && user !== 'undefined') { + user = JSON.parse(user) + authId = user.authId + } + + if (authId !== null && authId !== undefined && authId !== 'undefined') { + this.setState({ authId: authId }) + } + } + + render () { + const { classes, user } = this.props + const match = { + url: '/users' + } + + return ( + + ) + } +} + +Menu.propTypes = { + classes: PropTypes.object.isRequired, + user: PropTypes.object, + match: PropTypes.object +} + +export default withStyles(styles)(Menu) diff --git a/client/src/components/ProfileImages.js b/client/src/components/ProfileImages.js index 268efeaee..8e5c100e6 100644 --- a/client/src/components/ProfileImages.js +++ b/client/src/components/ProfileImages.js @@ -1,52 +1,58 @@ -import React from 'react' -import Button from '@material-ui/core/Button' -import Dialog from '@material-ui/core/Dialog' -import DialogActions from '@material-ui/core/DialogActions' -import DialogContent from '@material-ui/core/DialogContent' -import DialogContentText from '@material-ui/core/DialogContentText' -import DialogTitle from '@material-ui/core/DialogTitle' +import React, { Component } from 'react' +import { compose } from 'recompose' +import { withStyles } from '@material-ui/core/styles' import CssBaseline from '@material-ui/core/CssBaseline' -class Contact extends React.Component { - state = { - open: true - } +const styles = theme => ({ - handleClickOpen = () => { - this.setState({ open: true }) - } +}) - handleClose = () => { - this.setState({ open: false }) +class ProfileImages extends Component { + + componentDidMount () { + window.dispatchEvent(new Event('load')) // This is a workaround to solve the problem that the slider does not show up } render () { + const { classes } = this.props return ( - - - - - {"Section under development."} - - - - The functionality of this section has not been developed yet. We expect to have it for November 2018. Thanks for your understanding. - - - - - - + +
    +
    +
    +
    +
    +
      +
    • + +
      +
      +
      +
      +
      +

      Profile Images

      +

      +
      Comming Soon. +

      +
      +
      +
      +
      +
      +
    • +
    +
    +
    +
    +
    +
    + ) } } -export default Contact +export default compose( + withStyles(styles) +)(ProfileImages) diff --git a/client/src/components/ProfileSheet.js b/client/src/components/ProfileSheet.js index b603fa224..4bc2eb00e 100644 --- a/client/src/components/ProfileSheet.js +++ b/client/src/components/ProfileSheet.js @@ -31,7 +31,8 @@ const styles = theme => ({ flexGrow: 1, padding: 10, marginLeft: '25%', - marginTop: '2%' + marginTop: '5%', + marginBottom: '10%' }, inputField: { width: '80%', @@ -312,18 +313,54 @@ class ProfileSheet extends Component { } } - render () { + componentDidMount () { + window.dispatchEvent(new Event('load')) // This is a workaround to solve the problem that the slider does not show up + } + + addSlider () { + return ( +
    +
    +
    +
    +
    +
      +
    • + +
      +
      +
      +
      +
      +

      Profile Sheet

      +

      +
      Manage here your basic profile info. +

      +
      +
      +
      +
      +
      +
    • +
    +
    +
    +
    +
    +
    + ) + } + + addForm () { const { classes } = this.props return ( - - Profile Sheet - +
    - Use this form to control the information you keep at the Advanced Algos system about yourself. - + Use this form to control the information you keep at the Advanced Algos system about yourself. + @@ -332,8 +369,8 @@ class ProfileSheet extends Component { - This is your basic information we have gotten from the identity provider you used to sign up. This information can not be changed. - + This is your basic information we have gotten from the identity provider you used to sign up. This information can not be changed. + - } + /> + } label='Email Verified' - /> + /> @@ -371,8 +408,8 @@ class ProfileSheet extends Component { - Complete your profile with the following optional information. Providing your real name might help other users trust you more. - + Complete your profile with the following optional information. Providing your real name might help other users trust you more. + + /> + /> + /> - If you wish, you can add a short paragraph with your Bio or anything you would like to communicate to whoever finds your user profile. - + If you wish, you can add a short paragraph with your Bio or anything you would like to communicate to whoever finds your user profile. + + /> - Check the following options to enable specialized tools designed for each role. You can allways come back and change these settings later. - + Check the following options to enable specialized tools designed for each role. You can allways come back and change these settings later. + @@ -433,10 +470,10 @@ class ProfileSheet extends Component { onChange={this.handleCheckBoxes.bind(this)} checked={this.rightCheckboxValue(this.state.isDeveloper)} color='secondary' - /> - } + /> + } label='Developer' - /> + /> - } + /> + } label='Trader' - /> + /> - } + /> + } label='Data Analyst' - /> + /> @@ -473,8 +510,8 @@ class ProfileSheet extends Component { - Current Role - + Current Role + Select from the list your current role @@ -498,12 +535,19 @@ class ProfileSheet extends Component { className={classes.button} onClick={this.submitForm.bind(this)} disabled={this.state.updated} - >{this.displayButtonTitle()} + >{this.displayButtonTitle()}
    - + ) + } + render () { + return ( + + {this.addSlider()} + {this.addForm()} + ) } } diff --git a/client/src/components/Search.js b/client/src/components/Search.js index ae9d9562e..880c8ef09 100644 --- a/client/src/components/Search.js +++ b/client/src/components/Search.js @@ -14,7 +14,8 @@ const styles = theme => ({ flexGrow: 1, padding: 10, marginLeft: '25%', - marginTop: '2%' + marginTop: '5%', + marginBottom: '10%' } }) @@ -29,6 +30,35 @@ class Search extends Component { const { classes } = this.props return ( +
    +
    +
    +
    +
    +
      +
    • + +
      +
      +
      +
      +
      +

      Users Search

      +

      +
      Find anyone involved in Advanced Algos here. +

      +
      +
      +
      +
      +
      +
    • +
    +
    +
    +
    +
    +
    diff --git a/client/src/components/UserSearch.js b/client/src/components/UserSearch.js index 1cc71b62c..2520134b3 100644 --- a/client/src/components/UserSearch.js +++ b/client/src/components/UserSearch.js @@ -196,13 +196,18 @@ class UserSearch extends Component { } } + componentDidMount () { + window.dispatchEvent(new Event('load')) // This is a workaround to solve the problem that the slider does not show up + } + render () { const { classes } = this.props return ( +
    - + Use any of these fileds to search for users. {this.selectText()} @@ -257,6 +262,7 @@ class UserSearch extends Component { {this.displayUsers()}
    + ) } } diff --git a/client/src/components/YourDescendents.js b/client/src/components/YourDescendents.js index dd5f4aec4..db03f60b7 100644 --- a/client/src/components/YourDescendents.js +++ b/client/src/components/YourDescendents.js @@ -17,7 +17,8 @@ const styles = theme => ({ flexGrow: 1, padding: 10, marginLeft: '25%', - marginTop: '2%' + marginTop: '5%', + marginBottom: '10%' }, typography: { width: '80%', @@ -59,14 +60,48 @@ class YourDescendents extends Component { } } - render () { - const { classes } = this.props + componentDidMount () { + window.dispatchEvent(new Event('load')) // This is a workaround to solve the problem that the slider does not show up + } + addSlider () { + return ( +
    +
    +
    +
    +
    +
      +
    • + +
      +
      +
      +
      +
      +

      Your Descendents

      +

      +
      Explore here generations of people that discovered Advanced Algos because of you. +

      +
      +
      +
      +
      +
      +
    • +
    +
    +
    +
    +
    +
    + ) + } + + addForm () { + const { classes } = this.props return ( - - Your Descendents - These are your decendents within the project. Your children referred you as the one who brought them to the project, while @@ -79,6 +114,15 @@ class YourDescendents extends Component { ) } + + render () { + return ( + + {this.addSlider()} + {this.addForm()} + + ) + } } export default compose( diff --git a/client/src/components/YourReferrer.js b/client/src/components/YourReferrer.js index 6a658ea4d..57ae6a3d2 100644 --- a/client/src/components/YourReferrer.js +++ b/client/src/components/YourReferrer.js @@ -19,7 +19,8 @@ const styles = theme => ({ flexGrow: 1, padding: 10, marginLeft: '25%', - marginTop: '2%' + marginTop: '5%', + marginBottom: '10%' }, typography: { width: '80%', @@ -125,18 +126,61 @@ class YourReferrer extends Component { } } - render () { + componentDidMount () { + window.dispatchEvent(new Event('load')) // This is a workaround to solve the problem that the slider does not show up + } + + addSlider () { + return ( +
    +
    +
    +
    +
    +
      +
    • + +
      +
      +
      +
      +
      +

      Your Referrer

      +

      +
      It is important to know who introduced you to Advanced Algos. +

      +
      +
      +
      +
      +
      +
    • +
    +
    +
    +
    +
    +
    + ) + } + + addForm () { const { classes } = this.props return ( - - Your Referrer - - {this.renderMode()} ) } + + render () { + return ( + + {this.addSlider()} + {this.addForm()} + + ) + } } export default compose( diff --git a/client/src/index.js b/client/src/index.js index 66f52879e..8594ffbef 100644 --- a/client/src/index.js +++ b/client/src/index.js @@ -6,12 +6,15 @@ import { hot } from 'react-hot-loader' import { withStyles } from '@material-ui/core/styles' // Components -import NavBar from './components/NavBar' import Home from './components/Home' import User from './components/User' import Browse from './components/Browse' import Search from './components/Search' -import Contact from './components/Contact' +import ProfileSheet from './components/ProfileSheet' +import ProfileImages from './components/ProfileImages' +import YourReferrer from './components/YourReferrer' +import YourDescendents from './components/YourDescendents' +import UsersMenu from './components/Menu' import { getItem } from './utils/local-storage' import { @@ -36,12 +39,10 @@ class App extends Component { } render () { - const { match } = this.props - + const match = {path: '/users'} return (
    - } /> - + } + /> + } + /> + } + /> + } + />
    @@ -77,4 +97,8 @@ App.propTypes = { } const StyledApp = withStyles(globalStyles)(App) +export { + StyledApp, + UsersMenu +} export default hot(module)(StyledApp) From b8c89b98041a985215ea9a5f61032020478b13c3 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Tue, 6 Nov 2018 16:37:43 +0100 Subject: [PATCH 02/13] Version .17 --- client/package.json | 2 +- client/src/components/Menu.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/client/package.json b/client/package.json index 32c519b93..944a99e49 100644 --- a/client/package.json +++ b/client/package.json @@ -1,7 +1,7 @@ { "name": "@advancedalgos/users-client", "description": "Advanced Algos Users client-side web app", - "version": "0.0.16", + "version": "0.0.17", "main": "src/index.js", "dependencies": { "@material-ui/core": "^3.2.0", diff --git a/client/src/components/Menu.js b/client/src/components/Menu.js index 503e4ee34..cd4c60d74 100644 --- a/client/src/components/Menu.js +++ b/client/src/components/Menu.js @@ -120,7 +120,6 @@ class Menu extends Component { className={classNames(classes.button, classes.cssRoot)} title='Report a Users Module bug' href='https://github.com/AdvancedAlgos/UsersModule/issues/new' - target='_blank' > Report From b80ab5acf30da39ef559070f4ecb60e2be55256e Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 9 Nov 2018 09:03:40 +0100 Subject: [PATCH 03/13] Upgrade to Nikolas version of Master App header --- client/package.json | 2 +- client/src/components/Browse.js | 38 +----- client/src/components/Contact.js | 52 -------- client/src/components/Home.js | 49 +------- client/src/components/Menu.js | 141 --------------------- client/src/components/NavBar.js | 150 ----------------------- client/src/components/ProfileSheet.js | 39 ------ client/src/components/Search.js | 38 +----- client/src/components/TopBar/index.js | 42 +++++++ client/src/components/TopBar/styles.js | 39 ++++++ client/src/components/User.js | 4 +- client/src/components/YourDescendents.js | 39 ------ client/src/components/YourReferrer.js | 39 ------ client/src/index.js | 110 +++-------------- 14 files changed, 106 insertions(+), 676 deletions(-) delete mode 100644 client/src/components/Contact.js delete mode 100644 client/src/components/Menu.js delete mode 100644 client/src/components/NavBar.js create mode 100644 client/src/components/TopBar/index.js create mode 100644 client/src/components/TopBar/styles.js diff --git a/client/package.json b/client/package.json index 944a99e49..fa4bcd6a2 100644 --- a/client/package.json +++ b/client/package.json @@ -1,7 +1,7 @@ { "name": "@advancedalgos/users-client", "description": "Advanced Algos Users client-side web app", - "version": "0.0.17", + "version": "0.0.18", "main": "src/index.js", "dependencies": { "@material-ui/core": "^3.2.0", diff --git a/client/src/components/Browse.js b/client/src/components/Browse.js index 7ee0100dd..7dbaefb78 100644 --- a/client/src/components/Browse.js +++ b/client/src/components/Browse.js @@ -1,47 +1,13 @@ import React, { Component } from 'react' import UserList from './UserList' -import CssBaseline from '@material-ui/core/CssBaseline' +import TopBar from './TopBar' class Browse extends Component { - componentDidMount () { - window.dispatchEvent(new Event('load')) // This is a workaround to solve the problem that the slider does not show up - } - render () { return ( - -
    -
    -
    -
    -
    -
      -
    • - -
      -
      -
      -
      -
      -

      Users Directory

      -

      -
      Everyone involved in Advanced Algos is here. -

      -
      -
      -
      -
      -
      -
    • -
    -
    -
    -
    -
    -
    - +
    ) diff --git a/client/src/components/Contact.js b/client/src/components/Contact.js deleted file mode 100644 index 268efeaee..000000000 --- a/client/src/components/Contact.js +++ /dev/null @@ -1,52 +0,0 @@ -import React from 'react' -import Button from '@material-ui/core/Button' -import Dialog from '@material-ui/core/Dialog' -import DialogActions from '@material-ui/core/DialogActions' -import DialogContent from '@material-ui/core/DialogContent' -import DialogContentText from '@material-ui/core/DialogContentText' -import DialogTitle from '@material-ui/core/DialogTitle' -import CssBaseline from '@material-ui/core/CssBaseline' - -class Contact extends React.Component { - state = { - open: true - } - - handleClickOpen = () => { - this.setState({ open: true }) - } - - handleClose = () => { - this.setState({ open: false }) - } - - render () { - return ( - - - - - - {"Section under development."} - - - - The functionality of this section has not been developed yet. We expect to have it for November 2018. Thanks for your understanding. - - - - - - - - ) - } -} - -export default Contact diff --git a/client/src/components/Home.js b/client/src/components/Home.js index f9437e5d1..7e5506fa9 100644 --- a/client/src/components/Home.js +++ b/client/src/components/Home.js @@ -1,58 +1,15 @@ import React, { Component } from 'react' -import { compose } from 'recompose' -import { withStyles } from '@material-ui/core/styles' -import CssBaseline from '@material-ui/core/CssBaseline' - -const styles = theme => ({ - -}) +import TopBar from './TopBar' class Home extends Component { - componentDidMount () { - window.dispatchEvent(new Event('load')) // This is a workaround to solve the problem that the slider does not show up - } - render () { - const { classes } = this.props return ( - -
    -
    -
    -
    -
    -
      -
    • - -
      -
      -
      -
      -
      -

      Users Module

      -

      -
      Responsible for all human users of the Advanced Algos Platform. -

      -
      -
      -
      -
      -
      -
    • -
    -
    -
    -
    -
    -
    +
    - ) } } -export default compose( - withStyles(styles) -)(Home) +export default Home diff --git a/client/src/components/Menu.js b/client/src/components/Menu.js deleted file mode 100644 index cd4c60d74..000000000 --- a/client/src/components/Menu.js +++ /dev/null @@ -1,141 +0,0 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' -import classNames from 'classnames' -import AppBar from '@material-ui/core/AppBar' -import Toolbar from '@material-ui/core/Toolbar' -import Typography from '@material-ui/core/Typography' -import Button from '@material-ui/core/Button' - -// icons -import UsersIcon from '@material-ui/icons/People' -import BrowseIcon from '@material-ui/icons/ImportContacts' -import SearchIcon from '@material-ui/icons/Search' -import ContactIcon from '@material-ui/icons/ContactMail' -import BugReportIcon from '@material-ui/icons/BugReport' - -import { Link } from 'react-router-dom' - -// components -import LoggedInUser from './LoggedInUser' - -const HomeLink = props => -const BrowseLink = props => -const SearchLink = props => - -const styles = theme => ({ - cssRoot: { - color: '#FFFFFF', - backgroundColor: theme.palette.secondary, - '&:hover': { - backgroundColor: theme.palette.dark - }, - whiteSpace: 'nowrap', - paddingRight: 2 * theme.spacing.unit, - paddingLeft: 2 * theme.spacing.unit - }, - button: { - margin: theme.spacing.unit - }, - leftIcon: { - marginRight: theme.spacing.unit - }, - iconSmall: { - fontSize: 20 - } -}) - -class Menu extends Component { - - constructor (props) { - super(props) - this.state = { - authId: null - } - } - - componentDidMount () { - let user = localStorage.getItem('user') - let authId - - if (user !== null && user !== undefined && user !== 'undefined') { - user = JSON.parse(user) - authId = user.authId - } - - if (authId !== null && authId !== undefined && authId !== 'undefined') { - this.setState({ authId: authId }) - } - } - - render () { - const { classes, user } = this.props - const match = { - url: '/users' - } - - return ( -
      - -
    • - -
    • -
    • - -
    • -
    • - -
    • -
    • - -
    • - - -
    - ) - } -} - -Menu.propTypes = { - classes: PropTypes.object.isRequired, - user: PropTypes.object, - match: PropTypes.object -} - -export default withStyles(styles)(Menu) diff --git a/client/src/components/NavBar.js b/client/src/components/NavBar.js deleted file mode 100644 index 20fd77632..000000000 --- a/client/src/components/NavBar.js +++ /dev/null @@ -1,150 +0,0 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' -import { withStyles } from '@material-ui/core/styles' -import classNames from 'classnames' -import AppBar from '@material-ui/core/AppBar' -import Toolbar from '@material-ui/core/Toolbar' -import Typography from '@material-ui/core/Typography' -import Button from '@material-ui/core/Button' - -// icons -import UsersIcon from '@material-ui/icons/People' -import BrowseIcon from '@material-ui/icons/ImportContacts' -import SearchIcon from '@material-ui/icons/Search' -import ContactIcon from '@material-ui/icons/ContactMail' -import BugReportIcon from '@material-ui/icons/BugReport' - -import { Link } from 'react-router-dom' - -// components -import LoggedInUser from './LoggedInUser' - -const HomeLink = props => -const BrowseLink = props => -const SearchLink = props => - -const styles = theme => ({ - root: { - flexGrow: 1 - }, - flex: { - flexGrow: 1, - marginLeft: 30 - }, - menuButton: { - marginLeft: -12, - marginRight: 20 - }, - cssRoot: { - color: '#FFFFFF', - backgroundColor: theme.palette.secondary, - '&:hover': { - backgroundColor: theme.palette.dark - }, - whiteSpace: 'nowrap', - paddingRight: 2 * theme.spacing.unit, - paddingLeft: 2 * theme.spacing.unit - }, - button: { - margin: theme.spacing.unit - }, - leftIcon: { - marginRight: theme.spacing.unit - }, - rightIcon: { - marginLeft: theme.spacing.unit - }, - iconSmall: { - fontSize: 20 - } -}) - -class NavBar extends Component { - - constructor (props) { - super(props) - this.state = { - authId: null - } - } - - componentDidMount () { - let user = localStorage.getItem('user') - let authId - - if (user !== null && user !== undefined && user !== 'undefined') { - user = JSON.parse(user) - authId = user.authId - } - - if (authId !== null && authId !== undefined && authId !== 'undefined') { - this.setState({ authId: authId }) - } - } - - render () { - const { classes, user, match } = this.props - return ( -
    - - - - Users - - - - - - - - -
    - ) - } -} - -NavBar.propTypes = { - classes: PropTypes.object.isRequired, - user: PropTypes.object, - match: PropTypes.object -} - -export default withStyles(styles)(NavBar) - diff --git a/client/src/components/ProfileSheet.js b/client/src/components/ProfileSheet.js index 4bc2eb00e..9f9883591 100644 --- a/client/src/components/ProfileSheet.js +++ b/client/src/components/ProfileSheet.js @@ -313,44 +313,6 @@ class ProfileSheet extends Component { } } - componentDidMount () { - window.dispatchEvent(new Event('load')) // This is a workaround to solve the problem that the slider does not show up - } - - addSlider () { - return ( -
    -
    -
    -
    -
    -
      -
    • - -
      -
      -
      -
      -
      -

      Profile Sheet

      -

      -
      Manage here your basic profile info. -

      -
      -
      -
      -
      -
      -
    • -
    -
    -
    -
    -
    -
    - ) - } - addForm () { const { classes } = this.props return ( @@ -545,7 +507,6 @@ class ProfileSheet extends Component { render () { return ( - {this.addSlider()} {this.addForm()} ) diff --git a/client/src/components/Search.js b/client/src/components/Search.js index 880c8ef09..041116bd3 100644 --- a/client/src/components/Search.js +++ b/client/src/components/Search.js @@ -1,8 +1,8 @@ import React, { Component } from 'react' import UserSearch from './UserSearch' import {compose} from 'react-apollo' -import CssBaseline from '@material-ui/core/CssBaseline' import Paper from '@material-ui/core/Paper' +import TopBar from './TopBar' // Materia UI @@ -21,45 +21,11 @@ const styles = theme => ({ class Search extends Component { - constructor (props) { - super(props) - this.state = { - } - } render () { const { classes } = this.props return ( -
    -
    -
    -
    -
    -
      -
    • - -
      -
      -
      -
      -
      -

      Users Search

      -

      -
      Find anyone involved in Advanced Algos here. -

      -
      -
      -
      -
      -
      -
    • -
    -
    -
    -
    -
    -
    - + diff --git a/client/src/components/TopBar/index.js b/client/src/components/TopBar/index.js new file mode 100644 index 000000000..82e6b319f --- /dev/null +++ b/client/src/components/TopBar/index.js @@ -0,0 +1,42 @@ +import React from 'react'; + +import { Typography } from '@material-ui/core'; +import { withStyles } from '@material-ui/core/styles'; + +import styles from './styles'; + +class TopBar extends React.Component { + render() { + const { + classes, + size, + title, + text, + } = this.props; + if (size === 'big') { + return ( +
    +
    + {title} + {text} +
    +
    + ); + } + if (size === 'medium') { + return ( +
    +
    + {title} + {text} +
    +
    + ); + } + return ( +
    + ); + } +} + +export default withStyles(styles)(TopBar); diff --git a/client/src/components/TopBar/styles.js b/client/src/components/TopBar/styles.js new file mode 100644 index 000000000..ef12ddf5f --- /dev/null +++ b/client/src/components/TopBar/styles.js @@ -0,0 +1,39 @@ +const styles = () => ({ + rootBig: { + backgroundImage: 'url(https://aacorporatesitedevelop.azurewebsites.net/img/photos/connect.jpg)', + width: '100%', + height: '100vh', + }, + rootMedium: { + backgroundImage: 'url(https://aacorporatesitedevelop.azurewebsites.net/img/photos/connect.jpg)', + width: '100%', + height: '50vh', + }, + rootSmall: { + backgroundImage: 'url(https://aacorporatesitedevelop.azurewebsites.net/img/photos/connect.jpg)', + width: '100%', + height: '220px', + }, + captions: { + position: 'relative', + top: '50%', + transform: 'translateY(-50%)', + }, + title: { + fontFamily: 'Saira', + color: 'white', + fontSize: '64px', + lineHeight: '78px', + fontWeight: 100, + }, + text: { + fontFamily: 'Saira', + color: 'white', + fontSize: '20px', + lineHeight: '30px', + fontWeight: 600, + padding: '20px 0 0.5em 0', + }, +}); + +export default styles; diff --git a/client/src/components/User.js b/client/src/components/User.js index 043f3ddaf..2e5c7e1fb 100644 --- a/client/src/components/User.js +++ b/client/src/components/User.js @@ -1,11 +1,11 @@ import React from 'react' import UserTabs from './UserTabs' -import CssBaseline from '@material-ui/core/CssBaseline' +import TopBar from './TopBar' const User = () => { return ( - + ) diff --git a/client/src/components/YourDescendents.js b/client/src/components/YourDescendents.js index db03f60b7..5678ef838 100644 --- a/client/src/components/YourDescendents.js +++ b/client/src/components/YourDescendents.js @@ -60,44 +60,6 @@ class YourDescendents extends Component { } } - componentDidMount () { - window.dispatchEvent(new Event('load')) // This is a workaround to solve the problem that the slider does not show up - } - - addSlider () { - return ( -
    -
    -
    -
    -
    -
      -
    • - -
      -
      -
      -
      -
      -

      Your Descendents

      -

      -
      Explore here generations of people that discovered Advanced Algos because of you. -

      -
      -
      -
      -
      -
      -
    • -
    -
    -
    -
    -
    -
    - ) - } - addForm () { const { classes } = this.props return ( @@ -118,7 +80,6 @@ class YourDescendents extends Component { render () { return ( - {this.addSlider()} {this.addForm()} ) diff --git a/client/src/components/YourReferrer.js b/client/src/components/YourReferrer.js index 57ae6a3d2..050d007cb 100644 --- a/client/src/components/YourReferrer.js +++ b/client/src/components/YourReferrer.js @@ -126,44 +126,6 @@ class YourReferrer extends Component { } } - componentDidMount () { - window.dispatchEvent(new Event('load')) // This is a workaround to solve the problem that the slider does not show up - } - - addSlider () { - return ( -
    -
    -
    -
    -
    -
      -
    • - -
      -
      -
      -
      -
      -

      Your Referrer

      -

      -
      It is important to know who introduced you to Advanced Algos. -

      -
      -
      -
      -
      -
      -
    • -
    -
    -
    -
    -
    -
    - ) - } - addForm () { const { classes } = this.props return ( @@ -176,7 +138,6 @@ class YourReferrer extends Component { render () { return ( - {this.addSlider()} {this.addForm()} ) diff --git a/client/src/index.js b/client/src/index.js index 8594ffbef..c2f66af6d 100644 --- a/client/src/index.js +++ b/client/src/index.js @@ -1,104 +1,24 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' -import { Route, BrowserRouter, Switch } from 'react-router-dom' -import { hot } from 'react-hot-loader' +import React from 'react' +import { Route, Switch } from 'react-router-dom' -import { withStyles } from '@material-ui/core/styles' +import { MuiPickersUtilsProvider } from 'material-ui-pickers' +import LuxonUtils from 'material-ui-pickers/utils/luxon-utils' -// Components import Home from './components/Home' import User from './components/User' import Browse from './components/Browse' import Search from './components/Search' -import ProfileSheet from './components/ProfileSheet' -import ProfileImages from './components/ProfileImages' -import YourReferrer from './components/YourReferrer' -import YourDescendents from './components/YourDescendents' -import UsersMenu from './components/Menu' -import { getItem } from './utils/local-storage' -import { - globalStyles -} from './theme' +const App = () => ( + + + + + + + + +) -class App extends Component { - constructor (props) { - super(props) - this.state = { - user: null - } - } +export default App - async componentDidMount () { - let user = await getItem('user') - - if (user !== null && user !== undefined && user !== 'undefined') { - user = JSON.parse(user) - this.setState({ user: user }) - } - } - - render () { - const match = {path: '/users'} - return ( - -
    - - - } - /> - } - /> - } - /> - } - /> - } - /> - } - /> - } - /> - } - /> - -
    -
    - ) - } -} - -App.propTypes = { - auth: PropTypes.object -} - -const StyledApp = withStyles(globalStyles)(App) -export { - StyledApp, - UsersMenu -} -export default hot(module)(StyledApp) From 235be24d85ca98765c3eb0b17d4d35404221a7c5 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 9 Nov 2018 09:19:33 +0100 Subject: [PATCH 04/13] Titles Missing --- client/src/components/ProfileSheet.js | 8 ++++++-- client/src/components/YourDescendents.js | 4 ++++ client/src/components/YourReferrer.js | 3 +++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/client/src/components/ProfileSheet.js b/client/src/components/ProfileSheet.js index 9f9883591..034cf6046 100644 --- a/client/src/components/ProfileSheet.js +++ b/client/src/components/ProfileSheet.js @@ -320,9 +320,13 @@ class ProfileSheet extends Component { + + Profile Sheet + + - Use this form to control the information you keep at the Advanced Algos system about yourself. - + Use this form to control the information you keep at the Advanced Algos system about yourself. + diff --git a/client/src/components/YourDescendents.js b/client/src/components/YourDescendents.js index 5678ef838..d0e144167 100644 --- a/client/src/components/YourDescendents.js +++ b/client/src/components/YourDescendents.js @@ -65,6 +65,10 @@ class YourDescendents extends Component { return ( + + Your Decendents + + These are your decendents within the project. Your children referred you as the one who brought them to the project, while your grandchildren referred your children and so on. In order to be able to see your descendents, the users who you referred diff --git a/client/src/components/YourReferrer.js b/client/src/components/YourReferrer.js index 050d007cb..974e8c24c 100644 --- a/client/src/components/YourReferrer.js +++ b/client/src/components/YourReferrer.js @@ -130,6 +130,9 @@ class YourReferrer extends Component { const { classes } = this.props return ( + + Your Referrer + {this.renderMode()} ) From eac9f25c67577821d1692856d1f6229a76b6a472 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 9 Nov 2018 17:12:44 +0100 Subject: [PATCH 05/13] Correcto React Dom Version --- client/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/package.json b/client/package.json index fa4bcd6a2..6efd82661 100644 --- a/client/package.json +++ b/client/package.json @@ -6,9 +6,9 @@ "dependencies": { "@material-ui/core": "^3.2.0", "@material-ui/icons": "^3.0.1", - "react": "^16.5.2", + "react": "^16.6.1", "react-apollo": "^2.2.4", - "react-dom": "^16.5.2", + "react-dom": "^16.6.1", "react-router-dom": "^4.3.1", "react-scripts": "^2.0.4", "graphql": "^14.0.2", From 82ec8476364a4e84bfc6ff75b93f289d0e76d5ef Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 9 Nov 2018 17:37:03 +0100 Subject: [PATCH 06/13] BannerTopBar replaces TopBar --- client/package.json | 2 +- client/src/components/BannerTopBar/index.js | 18 +++++++++ client/src/components/Browse.js | 9 ++++- client/src/components/Home.js | 9 ++++- client/src/components/Search.js | 9 ++++- client/src/components/TopBar/index.js | 42 --------------------- client/src/components/TopBar/styles.js | 39 ------------------- client/src/components/User.js | 9 ++++- 8 files changed, 47 insertions(+), 90 deletions(-) create mode 100644 client/src/components/BannerTopBar/index.js delete mode 100644 client/src/components/TopBar/index.js delete mode 100644 client/src/components/TopBar/styles.js diff --git a/client/package.json b/client/package.json index 6efd82661..e52309b1e 100644 --- a/client/package.json +++ b/client/package.json @@ -1,7 +1,7 @@ { "name": "@advancedalgos/users-client", "description": "Advanced Algos Users client-side web app", - "version": "0.0.18", + "version": "0.0.19", "main": "src/index.js", "dependencies": { "@material-ui/core": "^3.2.0", diff --git a/client/src/components/BannerTopBar/index.js b/client/src/components/BannerTopBar/index.js new file mode 100644 index 000000000..255e9888d --- /dev/null +++ b/client/src/components/BannerTopBar/index.js @@ -0,0 +1,18 @@ +import React from 'react' +import Typography from '@material-ui/core/Typography' + +const BannerTopBar = ({ + size, + backgroundUrl, + title, + text +}) => ( +
    +
    + {title} + {text} +
    +
    +) + +export default BannerTopBar diff --git a/client/src/components/Browse.js b/client/src/components/Browse.js index 7dbaefb78..a1ef87aa6 100644 --- a/client/src/components/Browse.js +++ b/client/src/components/Browse.js @@ -1,13 +1,18 @@ import React, { Component } from 'react' import UserList from './UserList' -import TopBar from './TopBar' +import BannerTopBar from './BannerTopBar' class Browse extends Component { render () { return ( - + ) diff --git a/client/src/components/Home.js b/client/src/components/Home.js index 7e5506fa9..bbd5a1b80 100644 --- a/client/src/components/Home.js +++ b/client/src/components/Home.js @@ -1,12 +1,17 @@ import React, { Component } from 'react' -import TopBar from './TopBar' +import BannerTopBar from './BannerTopBar' class Home extends Component { render () { return ( - + ) } diff --git a/client/src/components/Search.js b/client/src/components/Search.js index 041116bd3..76ba4097a 100644 --- a/client/src/components/Search.js +++ b/client/src/components/Search.js @@ -2,7 +2,7 @@ import React, { Component } from 'react' import UserSearch from './UserSearch' import {compose} from 'react-apollo' import Paper from '@material-ui/core/Paper' -import TopBar from './TopBar' +import BannerTopBar from './BannerTopBar' // Materia UI @@ -25,7 +25,12 @@ class Search extends Component { const { classes } = this.props return ( - + diff --git a/client/src/components/TopBar/index.js b/client/src/components/TopBar/index.js deleted file mode 100644 index 82e6b319f..000000000 --- a/client/src/components/TopBar/index.js +++ /dev/null @@ -1,42 +0,0 @@ -import React from 'react'; - -import { Typography } from '@material-ui/core'; -import { withStyles } from '@material-ui/core/styles'; - -import styles from './styles'; - -class TopBar extends React.Component { - render() { - const { - classes, - size, - title, - text, - } = this.props; - if (size === 'big') { - return ( -
    -
    - {title} - {text} -
    -
    - ); - } - if (size === 'medium') { - return ( -
    -
    - {title} - {text} -
    -
    - ); - } - return ( -
    - ); - } -} - -export default withStyles(styles)(TopBar); diff --git a/client/src/components/TopBar/styles.js b/client/src/components/TopBar/styles.js deleted file mode 100644 index ef12ddf5f..000000000 --- a/client/src/components/TopBar/styles.js +++ /dev/null @@ -1,39 +0,0 @@ -const styles = () => ({ - rootBig: { - backgroundImage: 'url(https://aacorporatesitedevelop.azurewebsites.net/img/photos/connect.jpg)', - width: '100%', - height: '100vh', - }, - rootMedium: { - backgroundImage: 'url(https://aacorporatesitedevelop.azurewebsites.net/img/photos/connect.jpg)', - width: '100%', - height: '50vh', - }, - rootSmall: { - backgroundImage: 'url(https://aacorporatesitedevelop.azurewebsites.net/img/photos/connect.jpg)', - width: '100%', - height: '220px', - }, - captions: { - position: 'relative', - top: '50%', - transform: 'translateY(-50%)', - }, - title: { - fontFamily: 'Saira', - color: 'white', - fontSize: '64px', - lineHeight: '78px', - fontWeight: 100, - }, - text: { - fontFamily: 'Saira', - color: 'white', - fontSize: '20px', - lineHeight: '30px', - fontWeight: 600, - padding: '20px 0 0.5em 0', - }, -}); - -export default styles; diff --git a/client/src/components/User.js b/client/src/components/User.js index 2e5c7e1fb..4fc70a777 100644 --- a/client/src/components/User.js +++ b/client/src/components/User.js @@ -1,11 +1,16 @@ import React from 'react' import UserTabs from './UserTabs' -import TopBar from './TopBar' +import BannerTopBar from './BannerTopBar' const User = () => { return ( - + ) From e2df61586e5de5d5297cabc9cf768db9e4515d44 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 9 Nov 2018 21:17:38 +0100 Subject: [PATCH 07/13] Disabling Profile Images Tab --- client/package.json | 2 +- client/src/components/ProfileImages.js | 58 ++++++++++---------------- client/src/components/UserTabs.js | 2 +- 3 files changed, 23 insertions(+), 39 deletions(-) diff --git a/client/package.json b/client/package.json index e52309b1e..8e59b03ca 100644 --- a/client/package.json +++ b/client/package.json @@ -1,7 +1,7 @@ { "name": "@advancedalgos/users-client", "description": "Advanced Algos Users client-side web app", - "version": "0.0.19", + "version": "0.0.20", "main": "src/index.js", "dependencies": { "@material-ui/core": "^3.2.0", diff --git a/client/src/components/ProfileImages.js b/client/src/components/ProfileImages.js index 8e5c100e6..2a7788304 100644 --- a/client/src/components/ProfileImages.js +++ b/client/src/components/ProfileImages.js @@ -1,54 +1,38 @@ import React, { Component } from 'react' import { compose } from 'recompose' import { withStyles } from '@material-ui/core/styles' -import CssBaseline from '@material-ui/core/CssBaseline' +import Paper from '@material-ui/core/Paper' +import Typography from '@material-ui/core/Typography' const styles = theme => ({ - + root: { + width: '50%', + flexGrow: 1, + padding: 10, + marginLeft: '25%', + marginTop: '5%', + marginBottom: '10%' + }, + typography: { + width: '80%', + marginLeft: '10%', + marginTop: 40, + marginBottom: 40 + } }) class ProfileImages extends Component { - componentDidMount () { - window.dispatchEvent(new Event('load')) // This is a workaround to solve the problem that the slider does not show up - } - render () { const { classes } = this.props return ( - -
    -
    -
    -
    -
    -
      -
    • - -
      -
      -
      -
      -
      -

      Profile Images

      -

      -
      Comming Soon. -

      -
      -
      -
      -
      -
      -
    • -
    -
    -
    -
    -
    -
    + + + Comming Soon + +
    - ) } } diff --git a/client/src/components/UserTabs.js b/client/src/components/UserTabs.js index 592bc8da9..7821ed19e 100644 --- a/client/src/components/UserTabs.js +++ b/client/src/components/UserTabs.js @@ -65,7 +65,7 @@ class UserTabs extends React.Component { fullWidth > } /> - } /> + } /> } /> } /> From 8f3d19a61e6a43c5cab21a7f477fec8befe5bdf5 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 10 Nov 2018 09:19:53 +0100 Subject: [PATCH 08/13] Switching to Users image --- client/src/components/Browse.js | 2 +- client/src/components/Home.js | 2 +- client/src/components/Search.js | 2 +- client/src/components/User.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/components/Browse.js b/client/src/components/Browse.js index a1ef87aa6..53dcde252 100644 --- a/client/src/components/Browse.js +++ b/client/src/components/Browse.js @@ -11,7 +11,7 @@ class Browse extends Component { size='medium' title='Users Directory' text='Everyone involved in Advanced Algos is here.' - backgroundUrl='https://advancedalgos.net/img/photos/connect.jpg' + backgroundUrl='https://advancedalgos.net/img/photos/users.jpg' /> diff --git a/client/src/components/Home.js b/client/src/components/Home.js index bbd5a1b80..c584bbfea 100644 --- a/client/src/components/Home.js +++ b/client/src/components/Home.js @@ -10,7 +10,7 @@ class Home extends Component { size='big' title='Users Module' text='Responsible for all human users of the Advanced Algos Platform.' - backgroundUrl='https://advancedalgos.net/img/photos/connect.jpg' + backgroundUrl='https://advancedalgos.net/img/photos/users.jpg' /> ) diff --git a/client/src/components/Search.js b/client/src/components/Search.js index 76ba4097a..5bafb588a 100644 --- a/client/src/components/Search.js +++ b/client/src/components/Search.js @@ -29,7 +29,7 @@ class Search extends Component { size='medium' title='Users Search' text='Find anyone involved in Advanced Algos here.' - backgroundUrl='https://advancedalgos.net/img/photos/connect.jpg' + backgroundUrl='https://advancedalgos.net/img/photos/users.jpg' /> diff --git a/client/src/components/User.js b/client/src/components/User.js index 4fc70a777..e4eb6976c 100644 --- a/client/src/components/User.js +++ b/client/src/components/User.js @@ -9,7 +9,7 @@ const User = () => { size='medium' title='Your Profile' text='Manage your profile info, pictures and more.' - backgroundUrl='https://advancedalgos.net/img/photos/connect.jpg' + backgroundUrl='https://advancedalgos.net/img/photos/users.jpg' /> From 81814def2be8ccfe0f36764ce06c37d54f84d1a9 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 10 Nov 2018 14:40:03 +0100 Subject: [PATCH 09/13] Default User Pic changed --- client/package.json | 2 +- client/src/components/UserList.js | 6 +++--- client/src/img/portrait.jpg | Bin 21688 -> 0 bytes client/src/img/user-default-pic.jpg | Bin 0 -> 67481 bytes 4 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 client/src/img/portrait.jpg create mode 100644 client/src/img/user-default-pic.jpg diff --git a/client/package.json b/client/package.json index 8e59b03ca..119243e6b 100644 --- a/client/package.json +++ b/client/package.json @@ -1,7 +1,7 @@ { "name": "@advancedalgos/users-client", "description": "Advanced Algos Users client-side web app", - "version": "0.0.20", + "version": "0.0.21", "main": "src/index.js", "dependencies": { "@material-ui/core": "^3.2.0", diff --git a/client/src/components/UserList.js b/client/src/components/UserList.js index 4e5751836..cfc205511 100644 --- a/client/src/components/UserList.js +++ b/client/src/components/UserList.js @@ -30,7 +30,7 @@ import Slide from '@material-ui/core/Slide'; import UserProfile from './UserProfile'; // Images -import PortraitImage from '../img/portrait.jpg' +import UserDefaultPicture from '../img/user-default-pic.jpg' const styles = theme => ({ root: { @@ -108,7 +108,7 @@ class UserList extends Component { @@ -167,7 +167,7 @@ class UserList extends Component { const { classes } = this.props; return ( - + {this.displayUsers()} diff --git a/client/src/img/portrait.jpg b/client/src/img/portrait.jpg deleted file mode 100644 index 2108ceee8559ada40a967b61b4d2076c94ebbbf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21688 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 diff --git a/client/src/img/user-default-pic.jpg b/client/src/img/user-default-pic.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4709ae9b1f1d14b0fb9a9715af28724af1d4d7e4 GIT binary patch literal 67481 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 literal 0 HcmV?d00001 From f84f7b8a7f40391f290d7929e3a1935d5996e95a Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 10 Nov 2018 14:50:36 +0100 Subject: [PATCH 10/13] Final changes on user default profile pic --- client/src/components/DescendentsTree.js | 6 +++--- client/src/components/UserProfile.js | 4 ++-- client/src/components/UserSearch.js | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/client/src/components/DescendentsTree.js b/client/src/components/DescendentsTree.js index 9a1cb06ea..8087cd192 100644 --- a/client/src/components/DescendentsTree.js +++ b/client/src/components/DescendentsTree.js @@ -25,7 +25,7 @@ import ExpandMore from '@material-ui/icons/ExpandMore'; import StarBorder from '@material-ui/icons/StarBorder'; // Images -import PortraitImage from '../img/portrait.jpg' +import UserDefaultPicture from '../img/user-default-pic.jpg' const styles = theme => ({ card: { @@ -132,7 +132,7 @@ class DescendentsTree extends Component { @@ -201,7 +201,7 @@ class DescendentsTree extends Component { diff --git a/client/src/components/UserProfile.js b/client/src/components/UserProfile.js index 7efc09a8c..a94f23ba5 100644 --- a/client/src/components/UserProfile.js +++ b/client/src/components/UserProfile.js @@ -14,7 +14,7 @@ import Typography from '@material-ui/core/Typography' import Divider from '@material-ui/core/Divider' // Images -import PortraitImage from '../img/portrait.jpg' +import UserDefaultPicture from '../img/user-default-pic.jpg' const styles = theme => ({ root: { @@ -107,7 +107,7 @@ class UserProfile extends Component { diff --git a/client/src/components/UserSearch.js b/client/src/components/UserSearch.js index 2520134b3..ffc3334ce 100644 --- a/client/src/components/UserSearch.js +++ b/client/src/components/UserSearch.js @@ -17,7 +17,7 @@ import Grid from '@material-ui/core/Grid' import TextField from '@material-ui/core/TextField' // Images -import PortraitImage from '../img/portrait.jpg' +import UserDefaultPicture from '../img/user-default-pic.jpg' const styles = theme => ({ card: { @@ -170,7 +170,7 @@ class UserSearch extends Component { From 09b8af4d07cec1bbc2577c509f071a8ab486d786 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Tue, 13 Nov 2018 15:04:49 +0100 Subject: [PATCH 11/13] Implementing Container Div --- client/src/components/Browse.js | 4 +++- client/src/components/ProfileSheet.js | 7 ++++--- client/src/components/Search.js | 11 ++++++----- client/src/components/UserList.js | 6 +++--- client/src/components/YourDescendents.js | 7 ++++--- client/src/components/YourReferrer.js | 7 ++++--- 6 files changed, 24 insertions(+), 18 deletions(-) diff --git a/client/src/components/Browse.js b/client/src/components/Browse.js index 53dcde252..000c8d4b7 100644 --- a/client/src/components/Browse.js +++ b/client/src/components/Browse.js @@ -13,7 +13,9 @@ class Browse extends Component { text='Everyone involved in Advanced Algos is here.' backgroundUrl='https://advancedalgos.net/img/photos/users.jpg' /> - +
    + +
    ) } diff --git a/client/src/components/ProfileSheet.js b/client/src/components/ProfileSheet.js index 034cf6046..3e75bc881 100644 --- a/client/src/components/ProfileSheet.js +++ b/client/src/components/ProfileSheet.js @@ -27,10 +27,9 @@ import AALogo from '../img/aa-logo.png' const styles = theme => ({ root: { - width: '50%', + width: '100%', flexGrow: 1, padding: 10, - marginLeft: '25%', marginTop: '5%', marginBottom: '10%' }, @@ -511,7 +510,9 @@ class ProfileSheet extends Component { render () { return ( - {this.addForm()} +
    + {this.addForm()} +
    ) } diff --git a/client/src/components/Search.js b/client/src/components/Search.js index 5bafb588a..c2d6f0ab9 100644 --- a/client/src/components/Search.js +++ b/client/src/components/Search.js @@ -10,10 +10,9 @@ import { withStyles } from '@material-ui/core/styles' const styles = theme => ({ root: { - width: '50%', + width: '100%', flexGrow: 1, padding: 10, - marginLeft: '25%', marginTop: '5%', marginBottom: '10%' } @@ -31,9 +30,11 @@ class Search extends Component { text='Find anyone involved in Advanced Algos here.' backgroundUrl='https://advancedalgos.net/img/photos/users.jpg' /> - - - +
    + + + +
    ) } diff --git a/client/src/components/UserList.js b/client/src/components/UserList.js index cfc205511..462ecd1b4 100644 --- a/client/src/components/UserList.js +++ b/client/src/components/UserList.js @@ -34,9 +34,9 @@ import UserDefaultPicture from '../img/user-default-pic.jpg' const styles = theme => ({ root: { - flexGrow: 1, - padding: 60, - margin: 2, + paddingTop:30, + paddingBottom:30, + flexGrow: 1 }, card: { maxWidth: 345, diff --git a/client/src/components/YourDescendents.js b/client/src/components/YourDescendents.js index d0e144167..8427fb313 100644 --- a/client/src/components/YourDescendents.js +++ b/client/src/components/YourDescendents.js @@ -13,10 +13,9 @@ import DescendentsTree from './DescendentsTree' const styles = theme => ({ root: { - width: '50%', + width: '100%', flexGrow: 1, padding: 10, - marginLeft: '25%', marginTop: '5%', marginBottom: '10%' }, @@ -84,7 +83,9 @@ class YourDescendents extends Component { render () { return ( - {this.addForm()} +
    + {this.addForm()} +
    ) } diff --git a/client/src/components/YourReferrer.js b/client/src/components/YourReferrer.js index 974e8c24c..5b9865a89 100644 --- a/client/src/components/YourReferrer.js +++ b/client/src/components/YourReferrer.js @@ -15,10 +15,9 @@ import Typography from '@material-ui/core/Typography' const styles = theme => ({ root: { - width: '50%', + width: '100%', flexGrow: 1, padding: 10, - marginLeft: '25%', marginTop: '5%', marginBottom: '10%' }, @@ -141,7 +140,9 @@ class YourReferrer extends Component { render () { return ( - {this.addForm()} +
    + {this.addForm()} +
    ) } From cfdc515442c1a878c61b387de8c7d462c9bd1435 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Tue, 13 Nov 2018 15:05:35 +0100 Subject: [PATCH 12/13] Version .22 --- client/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/package.json b/client/package.json index 119243e6b..4782b912c 100644 --- a/client/package.json +++ b/client/package.json @@ -1,7 +1,7 @@ { "name": "@advancedalgos/users-client", "description": "Advanced Algos Users client-side web app", - "version": "0.0.21", + "version": "0.0.22", "main": "src/index.js", "dependencies": { "@material-ui/core": "^3.2.0", From 8ad466d967b7536595ba1a265e32a0c01c7635cd Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 14 Nov 2018 14:09:54 +0100 Subject: [PATCH 13/13] Update README.md --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 76a35b66e..d148bc8e8 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,2 @@ -![alt text](https://github.com/AdvancedAlgos/UsersModule/blob/master/image.png?raw=true "Screenshot") - -