diff options
Diffstat (limited to 'webui/src/Bug.js')
-rw-r--r-- | webui/src/Bug.js | 101 |
1 files changed, 17 insertions, 84 deletions
diff --git a/webui/src/Bug.js b/webui/src/Bug.js index de61bc8c..28558a13 100644 --- a/webui/src/Bug.js +++ b/webui/src/Bug.js @@ -1,105 +1,38 @@ import React from "react"; -import { Query } from "react-apollo"; import gql from "graphql-tag"; import { withStyles } from "@material-ui/core/styles"; -import Avatar from "@material-ui/core/Avatar"; -import Card from "@material-ui/core/Card"; -import CardContent from "@material-ui/core/CardContent"; -import CardHeader from "@material-ui/core/CardHeader"; -import Chip from "@material-ui/core/Chip"; -import CircularProgress from "@material-ui/core/CircularProgress"; -import Typography from "@material-ui/core/Typography"; +import Comment from "./Comment"; +import BugSummary from "./BugSummary"; const styles = theme => ({ main: { maxWidth: 600, margin: "auto", marginTop: theme.spacing.unit * 4 - }, - labelList: { - display: "flex", - flexWrap: "wrap", - marginTop: theme.spacing.unit - }, - label: { - marginRight: theme.spacing.unit - }, - summary: { - marginBottom: theme.spacing.unit * 2 - }, - comment: { - marginBottom: theme.spacing.unit } }); -const QUERY = gql` - query GetBug($id: BugID!) { - bug(id: $id) { - id - title - status - labels - comments { - message - author { - name - email - } - } - } - } -`; - -const Comment = withStyles(styles)(({ comment, classes }) => ( - <Card className={classes.comment}> - <CardHeader - avatar={ - <Avatar aria-label={comment.author.name}> - {comment.author.name[0].toUpperCase()} - </Avatar> - } - title={comment.author.name} - subheader={comment.author.email} - /> - <CardContent> - <Typography component="p">{comment.message}</Typography> - </CardContent> - </Card> -)); - -const BugView = withStyles(styles)(({ bug, classes }) => ( +const Bug = ({ bug, classes }) => ( <main className={classes.main}> - <Card className={classes.summary}> - <CardContent> - <Typography variant="headline" component="h2"> - {bug.title} - </Typography> - <Typography variant="subheading" component="h3" title={bug.id}> - #{bug.id.slice(0, 8)} • {bug.status.toUpperCase()} - </Typography> - <div className={classes.labelList}> - {bug.labels.map(label => ( - <Chip key={label} label={label} className={classes.label} /> - ))} - </div> - </CardContent> - </Card> + <BugSummary bug={bug} /> {bug.comments.map((comment, index) => ( <Comment key={index} comment={comment} /> ))} </main> -)); - -const Bug = ({ match }) => ( - <Query query={QUERY} variables={{ id: match.params.id }}> - {({ loading, error, data }) => { - if (loading) return <CircularProgress />; - if (error) return <p>Error.</p>; - return <BugView bug={data.bug} />; - }} - </Query> ); -export default Bug; +Bug.fragment = gql` + fragment Bug on Bug { + ...BugSummary + comments { + ...Comment + } + } + + ${BugSummary.fragment} + ${Comment.fragment} +`; + +export default withStyles(styles)(Bug); |