aboutsummaryrefslogtreecommitdiffstats
path: root/webui/src/bug/LabelChange.js
blob: f954372a5b1618d8860ccb5aee57ede6ed1ec2bf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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)