diff --git a/packages/component-faraday-selectors/src/index.js b/packages/component-faraday-selectors/src/index.js index 1493dcaf07f232dc17d2ec03e4ea9e9090719b44..3a774ca94dbc52c0786a550c3dc096001946b53e 100644 --- a/packages/component-faraday-selectors/src/index.js +++ b/packages/component-faraday-selectors/src/index.js @@ -270,17 +270,9 @@ export const getHERecommendation = (state, collectionId, fragmentId) => { ) } -const canMakeDecisionStatuses = [ - 'submitted', - 'pendingApproval', - 'underReview', - 'reviewCompleted', -] export const canMakeDecision = (state, collection = {}) => { - const status = get(collection, 'status', 'draft') - const isEIC = currentUserIs(state, 'adminEiC') - return isEIC && canMakeDecisionStatuses.includes(status) + return isEIC } const collectionReviewerReports = state => diff --git a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js index dc5314f613c215bb949c5735f25c395f83e8b5f6..9d1e9b3d88350004f2f2365eb15aabf1637ca706 100644 --- a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js +++ b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js @@ -33,6 +33,12 @@ const eicDecisions = [ modalTitle: 'Publish Manuscript', modalSubtitle: 'A publish decision is final', }, + { + value: 'revision', + label: 'Request Revision', + modalTitle: 'Request Revision', + modalSubtitle: 'A request revision decision is final', + }, { value: 'reject', label: 'Reject', @@ -41,9 +47,17 @@ const eicDecisions = [ }, ] +const filterOptions = (eicDecisions, status) => { + if (status === 'submitted') return eicDecisions.slice(2) + if (status === 'pendingApproval') return eicDecisions + return [last(eicDecisions)] +} const ManuscriptEicDecision = ({ - isFetching, + status, + options, + decision, formValues, + isFetching, handleSubmit, messagesLabel, collection = {}, @@ -59,32 +73,23 @@ const ManuscriptEicDecision = ({ <ItemOverrideAlert flex={0} vertical> <Label required>Decision</Label> <ValidatedField - component={input => ( - <Menu - {...input} - options={ - get(collection, 'status', 'submitted') !== 'pendingApproval' - ? [last(eicDecisions)] - : eicDecisions - } - /> - )} + component={input => <Menu {...input} options={options} />} name="decision" validate={[required]} /> </ItemOverrideAlert> </Row> - {get(formValues, 'decision') !== 'publish' && ( + {decision !== 'publish' && ( <Row mt={2}> <Item vertical> - <Label required> + <Label required={decision !== 'reject'}> {messagesLabel[get(formValues, 'decision', 'reject')]} </Label> <ValidatedField component={ValidatedTextArea} name="message" - validate={[required]} + validate={decision !== 'reject' ? [required] : undefined} /> </Item> </Row> @@ -106,13 +111,18 @@ export default compose( modalKey: 'eic-decision', modalComponent: MultiAction, })), - withProps(({ formValues }) => ({ + withProps(({ formValues, collection }) => ({ modalTitle: eicDecisions.find( o => o.value === get(formValues, 'decision', 'publish'), ).modalTitle, modalSubtitle: eicDecisions.find( o => o.value === get(formValues, 'decision', 'publish'), ).modalSubtitle, + decision: get(formValues, 'decision'), + options: filterOptions( + eicDecisions, + get(collection, 'status', 'submitted'), + ), })), reduxForm({ form: 'eic-decision', diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js index 5f870ecfa43fe24b4886780c6a78feaf2f0d675b..868b408304a4537d0d39affe98fabaeb3e0c3ff5 100644 --- a/packages/component-manuscript/src/components/ManuscriptLayout.js +++ b/packages/component-manuscript/src/components/ManuscriptLayout.js @@ -24,6 +24,7 @@ import ReviewerReports from './ReviewerReports' const messagesLabel = { 'return-to-handling-editor': 'Comments for Handling Editor', reject: 'Comments for Author', + revision: 'Comments for Author', } const cannotViewReviewersDetails = ['revisionRequested', 'pendingApproval'] diff --git a/packages/xpub-faraday/app/config/journal/recommendations.js b/packages/xpub-faraday/app/config/journal/recommendations.js index 736effd199a5801309f3fe4e1a4f622c88cc33ad..99b50aa2d2eba35e06e7a127dd19a6631eed2b69 100644 --- a/packages/xpub-faraday/app/config/journal/recommendations.js +++ b/packages/xpub-faraday/app/config/journal/recommendations.js @@ -15,4 +15,8 @@ module.exports = [ value: 'reject', label: 'Reject', }, + { + value: 'revision', + label: 'Revision', + }, ] diff --git a/packages/xpub-faraday/config/validations.js b/packages/xpub-faraday/config/validations.js index 6d1ac18d402b9baa6333ed22f7cfbe5d2f566cdf..c60e5f85015904e4218550b1d78ab84567d28d33 100644 --- a/packages/xpub-faraday/config/validations.js +++ b/packages/xpub-faraday/config/validations.js @@ -126,6 +126,7 @@ module.exports = { 'reject', 'publish', 'revise', + 'revision', 'major', 'minor', 'return-to-handling-editor',