Skip to content
Snippets Groups Projects
ActivityDetails.jsx 1.64 KiB
Newer Older
import React, { Fragment } from 'react'
import { H2, Button } from '@pubsweet/ui'
Yuci Gou's avatar
Yuci Gou committed
import { th } from '@pubsweet/ui-toolkit'
Yuci Gou's avatar
Yuci Gou committed
import styled from 'styled-components'
Yuci Gou's avatar
Yuci Gou committed
import moment from 'moment'
import { Table } from '../ui'
Yuci Gou's avatar
Yuci Gou committed
import { obtainEventDescription } from './helper'
Yuci Gou's avatar
Yuci Gou committed
const DetailsTable = styled(Table)`
  width: 100%;
`

Yuci Gou's avatar
Yuci Gou committed
const TdDate = styled.td`
  vertical-align: top;
`

const TdPerson = TdDate

Yuci Gou's avatar
Yuci Gou committed
const ActivityList = ({ manuscript }) =>
Yuci Gou's avatar
Yuci Gou committed
  manuscript.audits
    .reduce((reversed, audit) => {
      reversed.unshift(audit)
      return reversed
    }, [])
    .map(audit => (
      <tr key={audit.id}>
Yuci Gou's avatar
Yuci Gou committed
        <TdDate>{moment(audit.created).format('DD/MM/YYYY HH:mm:ss')}</TdDate>
        <TdPerson>{`${audit.user.givenNames} ${audit.user.surname}`}</TdPerson>
Yuci Gou's avatar
Yuci Gou committed
        <td>{obtainEventDescription(audit, manuscript)}</td>
      </tr>
    ))
Yuci Gou's avatar
Yuci Gou committed
const NewMsgBtn = styled(Button)`
Yuci Gou's avatar
Yuci Gou committed
  padding: calc(${th('gridUnit')} / 2) ${th('gridUnit')};
Yuci Gou's avatar
Yuci Gou committed
`

const DetailsHeading = styled.div`
  display: flex;
  align-items: baseline;
  justify-content: space-between;
`

Yuci Gou's avatar
Yuci Gou committed
const DataColumn = styled.th`
Yuci Gou's avatar
Yuci Gou committed
  width: 20%;
Yuci Gou's avatar
Yuci Gou committed
`

const PersonColumn = styled.th`
Yuci Gou's avatar
Yuci Gou committed
  width: 20%;
Yuci Gou's avatar
Yuci Gou committed
`

const ActivityDetails = props => (
  <Fragment>
Yuci Gou's avatar
Yuci Gou committed
    <DetailsHeading>
      <div>
        <H2>Details</H2>
      </div>
      <div>
        <NewMsgBtn primary>New message</NewMsgBtn>
      </div>
    </DetailsHeading>

Yuci Gou's avatar
Yuci Gou committed
    <DetailsTable>
      <tbody>
        <tr>
Yuci Gou's avatar
Yuci Gou committed
          <DataColumn>Date</DataColumn>
          <PersonColumn>Person</PersonColumn>
          <th>Event</th>
        </tr>
Yuci Gou's avatar
Yuci Gou committed
        <ActivityList manuscript={props.manuscript} />
Yuci Gou's avatar
Yuci Gou committed
    </DetailsTable>
  </Fragment>
)

export default ActivityDetails