diff options
Diffstat (limited to 'webui/src/bug/LabelChange.js')
-rw-r--r-- | webui/src/bug/LabelChange.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/webui/src/bug/LabelChange.js b/webui/src/bug/LabelChange.js new file mode 100644 index 00000000..f954372a --- /dev/null +++ b/webui/src/bug/LabelChange.js @@ -0,0 +1,44 @@ +import { withStyles } from '@material-ui/core/styles' +import gql from 'graphql-tag' +import React from 'react' +import Author from '../Author' +import Date from '../Date' +import Label from '../Label' + +const styles = theme => ({ + main: { + ...theme.typography.body2 + }, +}) + +const LabelChange = ({op, classes}) => { + const {added, removed} = op + return ( + <div className={classes.main}> + <Author author={op.author} bold /> + { added.length > 0 && <span> added the </span>} + { added.map((label, index) => <Label key={index} label={label} />)} + { (added.length > 0 && removed.length > 0) && <span> and</span>} + { removed.length > 0 && <span> removed the </span>} + { removed.map((label, index) => <Label key={index} label={label} />)} + <span> label{ (added.length + removed.length > 1) && 's'} </span> + <Date date={op.date} /> + </div> + ) +} + +LabelChange.fragment = gql` + fragment LabelChange on Operation { + ... on LabelChangeOperation { + date + author { + name + email + } + added + removed + } + } +` + +export default withStyles(styles)(LabelChange) |