From 6e36ca3f948ed7246a15148baa2910e87fa2e444 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 27 Sep 2018 10:04:08 +0200 Subject: [PATCH] Users transmitted to parent component --- client/src/components/UserReferrals.js | 8 +- client/src/components/UserSearch.js | 282 ++++++++++++------------- 2 files changed, 140 insertions(+), 150 deletions(-) diff --git a/client/src/components/UserReferrals.js b/client/src/components/UserReferrals.js index ad7d8fe8c..28c83a2e7 100644 --- a/client/src/components/UserReferrals.js +++ b/client/src/components/UserReferrals.js @@ -51,6 +51,12 @@ class UserReferrals extends Component { } } + userSelected (user) { + console.log(user) + + this.setState({referrer: user.id}) + } + submitForm (e) { e.preventDefault() this.props.updateUserMutation({ @@ -136,7 +142,7 @@ class UserReferrals extends Component { overall reputation within the project. - + diff --git a/client/src/components/UserSearch.js b/client/src/components/UserSearch.js index 217a11e63..30c38b8b4 100644 --- a/client/src/components/UserSearch.js +++ b/client/src/components/UserSearch.js @@ -1,23 +1,23 @@ -import React, { Component } from 'react'; -import {graphql, compose} from 'react-apollo'; -import {getUsersBySearchFields} from '../queries/queries'; +import React, { Component } from 'react' +import {graphql, compose} from 'react-apollo' +import {getUsersBySearchFields} from '../queries/queries' // Materia UI -import { withStyles } from '@material-ui/core/styles'; -import Card from '@material-ui/core/Card'; -import CardActionArea from '@material-ui/core/CardActionArea'; -import CardActions from '@material-ui/core/CardActions'; -import CardContent from '@material-ui/core/CardContent'; -import CardMedia from '@material-ui/core/CardMedia'; -import Button from '@material-ui/core/Button'; -import Typography from '@material-ui/core/Typography'; -import Grid from '@material-ui/core/Grid'; +import { withStyles } from '@material-ui/core/styles' +import Card from '@material-ui/core/Card' +import CardActionArea from '@material-ui/core/CardActionArea' +import CardActions from '@material-ui/core/CardActions' +import CardContent from '@material-ui/core/CardContent' +import CardMedia from '@material-ui/core/CardMedia' +import Button from '@material-ui/core/Button' +import Typography from '@material-ui/core/Typography' +import Grid from '@material-ui/core/Grid' import TextField from '@material-ui/core/TextField' // components -import UserProfile from './UserProfile'; +import UserProfile from './UserProfile' // Images import PortraitImage from '../img/portrait.jpg' @@ -26,29 +26,29 @@ const styles = theme => ({ card: { maxWidth: 150, minWidth: 150, - paddingTop:'30', - marginBottom:40 + paddingTop: '30', + marginBottom: 40 }, media: { height: 0, paddingTop: '56.25%', // 16:9, - marginTop:'30', + marginTop: '30', minWidth: 300 }, typography: { maxWidth: 345, minWidth: 300, - paddingTop:'30' + paddingTop: '30' }, - appBar: { - position: 'relative', + appBar: { + position: 'relative' }, flex: { - flex: 1, + flex: 1 }, grid: { paddingTop: '30', - marginTop:30 + marginTop: 30 }, inputField: { width: '80%', @@ -64,39 +64,31 @@ const styles = theme => ({ margin: theme.spacing.unit, marginTop: theme.spacing.unit * 3 } -}); +}) class UserSearch extends Component { - constructor(props){ - super(props); - + constructor (props) { + super(props) + this.state = { alias: '', firstName: '', middleName: '', - lastName: '' + lastName: '' } } - handleClickOpen = () => { - this.setState({ open: true }); - }; - - handleClose = () => { - this.setState({ open: false }); - }; - submitForm (e) { e.preventDefault() - this.props.getUsersBySearchFields.variables.alias = this.state.alias; - this.props.getUsersBySearchFields.variables.firstName = this.state.firstName; - this.props.getUsersBySearchFields.variables.middleName = this.state.middleName; - this.props.getUsersBySearchFields.variables.lastName = this.state.lastName; - + this.props.getUsersBySearchFields.variables.alias = this.state.alias + this.props.getUsersBySearchFields.variables.firstName = this.state.firstName + this.props.getUsersBySearchFields.variables.middleName = this.state.middleName + this.props.getUsersBySearchFields.variables.lastName = this.state.lastName + this.props.getUsersBySearchFields.refetch({}) -} + } handleTextField (e) { /* @@ -138,149 +130,141 @@ class UserSearch extends Component { } } - selectButton(){ - - if (this.props.selectButton === true) { - - return( - - ) - - } else { - return(
) - } -} - - selectText(){ - + selectText () { if (this.props.selectButton === true) { - - return(After that press the 'Select' button on the desired user to continue.) - + return ({this.props.selectText}) } else { - return(
) + return (
) } - } - displayUsers(){ - let data = this.props.getUsersBySearchFields; - const { classes } = this.props; - - if(data.loading){ - return (
Loading Users...
); + selectButton (user) { + if (this.props.selectButton === true) { + return ( + + ) } else { - if(data.usersSearch === undefined) { - return (
No Users to Display
) - } else { - - return data.usersSearch.map(user => { + return (
) + } + } - return ( + displayUsers () { + let data = this.props.getUsersBySearchFields + const { classes } = this.props - - { - this.setState({ selected: user.id}); + if (data.loading) { + return (
Loading Users...
) + } else { + if (data.usersSearch === undefined) { + return (
No Users to Display
) + } else { + return data.usersSearch.map(user => { + return ( + + + { + this.setState({ selected: user.id}) } }> - - + - - - {user.alias} - - - - - - - {this.selectButton()} - - - - - + + + {user.alias} + + + + + + + {this.selectButton(user)} + + + +
+
- ) - }); - } + ) + }) + } } } - render() { - const { classes } = this.props; + render () { + const { classes } = this.props return ( - +
- + Use any of these fileds to search for users. {this.selectText()} - + - - - - - - - - - - - + + + + + + + + {this.displayUsers()} - - - - ); +
+ ) } } export default compose( graphql(getUsersBySearchFields, {name: 'getUsersBySearchFields'}), withStyles(styles) -) (UserSearch); // This technique binds more than one query to a single component. +)(UserSearch) // This technique binds more than one query to a single component.