import React, { Fragment } from 'react' import { H2, Button } from '@pubsweet/ui' import { th } from '@pubsweet/ui-toolkit' import styled from 'styled-components' import moment from 'moment' import { Table } from '../ui' import { obtainEventDescription } from './helpers' import Mailer from '../mailer' const DetailsTable = styled(Table)` width: 100%; ` const TdDate = styled.td` vertical-align: top; ` const TdPerson = TdDate const ActivityList = ({ manuscript }) => manuscript.audits .reduce((reversed, audit) => { reversed.unshift(audit) return reversed }, []) .map(audit => ( <tr key={audit.id}> <TdDate>{moment(audit.created).format('DD/MM/YYYY HH:mm:ss')}</TdDate> <TdPerson>{`${audit.user.givenNames} ${audit.user.surname}`}</TdPerson> <td>{obtainEventDescription(audit, manuscript)}</td> </tr> )) const NewMsgBtn = styled(Button)` padding: calc(${th('gridUnit')} / 2) ${th('gridUnit')}; ` const DetailsHeading = styled.div` display: flex; align-items: baseline; justify-content: space-between; ` const DataColumn = styled.th` width: 20%; ` const PersonColumn = styled.th` width: 20%; ` class ActivityDetails extends React.Component { state = { sendingMail: false } render() { return ( <Fragment> <DetailsHeading> <div> <H2>Details</H2> </div> <div> <NewMsgBtn onClick={() => this.setState({ sendingMail: true })} primary > New message </NewMsgBtn> </div> {this.state.sendingMail && ( <Mailer close={() => this.setState({ sendingMail: false })} currentUser={this.props.currentUser} manuscript={this.props.manuscript} /> )} </DetailsHeading> <DetailsTable> <tbody> <tr> <DataColumn>Date</DataColumn> <PersonColumn>Person</PersonColumn> <th>Event</th> </tr> <ActivityList manuscript={this.props.manuscript} /> </tbody> </DetailsTable> </Fragment> ) } } export default ActivityDetails