Skip to content
Snippets Groups Projects
Commit 98451d52 authored by Alexandru Munteanu's avatar Alexandru Munteanu
Browse files

fix(various): multiple fixes after QA

parent cfc57cef
No related branches found
No related tags found
1 merge request!58Sprint #20 - Goal - Reviewers submit report
......@@ -65,7 +65,9 @@ const ReviewersTable = ({
</Fragment>
</td>
<td>
<div />
<DateParser timestamp={get(invitation, 'review.submittedOn')}>
{timestamp => <Text>{timestamp}</Text>}
</DateParser>
</td>
<HiddenCell>
{!invitation.hasAnswer && (
......
import React, { Fragment } from 'react'
import { H4 } from '@pubsweet/ui'
import { withProps } from 'recompose'
import styled from 'styled-components'
import { th } from '@pubsweet/ui-toolkit'
......@@ -56,7 +57,12 @@ const ReviewerDetails = ({
</ContextualBox>
)
export default ReviewerDetails
export default withProps(({ invitations, reviewerReports = [] }) => ({
invitations: invitations.map(i => ({
...i,
review: reviewerReports.find(r => r.userId === i.userId),
})),
}))(ReviewerDetails)
// #region styles
const TabButton = styled.div`
......
import React from 'react'
import { has, get } from 'lodash'
import { get } from 'lodash'
import { compose } from 'recompose'
import styled from 'styled-components'
import { reduxForm } from 'redux-form'
import { th } from '@pubsweet/ui-toolkit'
import { required } from 'xpub-validators'
import { compose, withProps } from 'recompose'
import { Button, Menu, ValidatedField } from '@pubsweet/ui'
import { withModal } from 'pubsweet-component-modal/src/components'
import { ContextualBox, OpenModal, Row, Item, Label, Textarea } from '../'
import {
Row,
Item,
Label,
Textarea,
MultiAction,
ContextualBox,
ItemOverrideAlert,
withFetching,
} from '../'
const ManuscriptEicDecision = ({
disabled,
isFetching,
formValues,
handleSubmit,
......@@ -21,17 +30,17 @@ const ManuscriptEicDecision = ({
<ContextualBox label="Your Editorial Decision" {...rest}>
<Root>
<Row justify="flex-start">
<Item flex={0} vertical>
<ItemOverrideAlert flex={0} vertical>
<Label required>Decision</Label>
<ValidatedField
component={input => <CustomMenu {...input} options={options} />}
component={input => <Menu {...input} options={options} />}
name="decision"
validate={[required]}
/>
</Item>
</ItemOverrideAlert>
</Row>
<Row mt={6}>
<Row mt={2}>
<Item vertical>
<Label required>
{
......@@ -49,37 +58,34 @@ const ManuscriptEicDecision = ({
</Row>
<Row justify="flex-end" mt={4}>
<OpenModal
isFetching={isFetching}
onConfirm={props => {
handleSubmit()(props)
}}
title="Are you sure you want to submit this decision?"
>
{showModal => (
<Button
disabled={disabled}
onClick={showModal}
primary
size="medium"
>
SUBMIT DECISION
</Button>
)}
</OpenModal>
<Button onClick={handleSubmit} primary size="medium">
SUBMIT DECISION
</Button>
</Row>
</Root>
</ContextualBox>
)
export default compose(
withProps(({ formValues }) => ({
disabled: !has(formValues, 'decision') || !has(formValues, 'message'),
withFetching,
withModal(({ isFetching }) => ({
isFetching,
modalKey: 'eic-decision',
modalComponent: MultiAction,
})),
reduxForm({
form: 'eic-decision',
onSubmit: (values, dispatch, { submitDecision }) => modalProps => {
submitDecision(values, modalProps)
onSubmit: (
values,
dispatch,
{ submitDecision, showModal, setFetching },
) => {
showModal({
title: 'Are you sure you want to submit this decision?',
onConfirm: modalProps => {
submitDecision(values, { ...modalProps, setFetching })
},
})
},
}),
)(ManuscriptEicDecision)
......@@ -91,10 +97,6 @@ const Root = styled.div`
padding: ${th('gridUnit')};
`
const CustomMenu = styled(Menu)`
min-width: calc(${th('gridUnit')} * 30);
`
const ValidatedTextArea = styled(Textarea)`
& + div {
margin-top: 0;
......
......@@ -90,7 +90,6 @@ export default compose(
})),
reduxForm({
form: 'answer-invitation',
destroyOnUnmount: false,
onSubmit: (values, dispatch, { showModal, onResponse, setFetching }) => {
showModal({
title: `${capitalize(values.decision)} this invitation?`,
......
......@@ -59,9 +59,9 @@ const ManuscriptLayout = ({
pendingOwnRecommendation,
toggleReviewerRecommendations,
reviewerRecommendationExpanded,
//
shouldReview,
submittedOwnRecommendation,
reviewerReports,
}) => (
<Root pb={1}>
{!isEmpty(collection) && !isEmpty(fragment) ? (
......@@ -169,6 +169,7 @@ const ManuscriptLayout = ({
onInviteReviewer={onInviteReviewer}
onResendReviewerInvite={onResendReviewerInvite}
onRevokeReviewerInvite={onRevokeReviewerInvite}
reviewerReports={reviewerReports}
/>
)}
</Fragment>
......
......@@ -64,6 +64,7 @@ import {
import {
createRecommendation,
recommendationsFetching,
selectReviewRecommendations,
} from '../redux/recommendations'
export default compose(
......@@ -86,6 +87,7 @@ export default compose(
state,
selectCollection(state, match.params.project),
),
reviewerReports: selectReviewRecommendations(state, match.params.version),
pendingHEInvitation: pendingHEInvitation(state, match.params.project),
pendingOwnRecommendation: getOwnPendingRecommendation(
state,
......@@ -112,7 +114,6 @@ export default compose(
changeForm,
clearCustomError,
assignHandlingEditor,
createRecommendation,
revokeHandlingEditor,
getUsers: actions.getUsers,
getFragment: actions.getFragment,
......@@ -229,19 +230,23 @@ export default compose(
fragment,
collection,
fetchUpdatedCollection,
createRecommendation,
}) => (values, modalProps) => {
const recommendation = parseEicDecision(values)
modalProps.setFetching(true)
createRecommendation({
recommendation,
fragmentId: fragment.id,
collectionId: collection.id,
})
.then(() => {
fetchUpdatedCollection()
modalProps.setFetching(false)
modalProps.hideModal()
fetchUpdatedCollection()
})
.catch(err => {
modalProps.setFetching(false)
handleError(modalProps.setModalError)(err)
})
.catch(handleError(modalProps.setModalError))
},
onHEResponse: ({
history,
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment