aboutsummaryrefslogtreecommitdiffstats
path: root/webui/src/bug/LabelChange.js
diff options
context:
space:
mode:
Diffstat (limited to 'webui/src/bug/LabelChange.js')
-rw-r--r--webui/src/bug/LabelChange.js44
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)