diff --git a/packages/component-faraday-selectors/src/index.js b/packages/component-faraday-selectors/src/index.js index df747afbdb60a787bea1167ea43d342b525378c2..3de59eeeffe84facdca95cef37510e34334a42e7 100644 --- a/packages/component-faraday-selectors/src/index.js +++ b/packages/component-faraday-selectors/src/index.js @@ -369,7 +369,7 @@ export const canMakeHERecommendation = (state, { collection, statuses }) => { 1, ) - if (!(statusImportance > 1 && statusImportance < 9)) return false + if (!(statusImportance > 1 && statusImportance < 10)) return false return true } @@ -385,6 +385,7 @@ export const getFragmentReviewerRecommendations = (state, fragmentId) => getFragmentRecommendations(state, fragmentId).filter( r => r.recommendationType === 'review', ) + const getFragmentEditorialComments = (state, fragmentId) => getFragmentRecommendations(state, fragmentId).filter( r => r.recommendationType === 'editorRecommendation', diff --git a/packages/component-faraday-ui/src/contextualBoxes/HERecommendation.js b/packages/component-faraday-ui/src/contextualBoxes/HERecommendation.js index 877243b16fc5e34b2cc9b4ccb2593124c031624e..43e98348b6d55192ca3bb6e7267331e883aef3a5 100644 --- a/packages/component-faraday-ui/src/contextualBoxes/HERecommendation.js +++ b/packages/component-faraday-ui/src/contextualBoxes/HERecommendation.js @@ -1,5 +1,5 @@ import React from 'react' -import { get, tail } from 'lodash' +import { get, tail, findKey } from 'lodash' import { reduxForm } from 'redux-form' import styled from 'styled-components' import { th } from '@pubsweet/ui-toolkit' @@ -46,6 +46,22 @@ const options = [ }, ] +const optionsWhereHECanOnlyReject = { + reviewersInvited: 'reviewersInvited', + underReview: 'underReview', + revisionRequested: 'revisionRequested', +} + +const showHEOptions = (collection, hasReviewerReports) => { + const { status, fragments } = collection + if (findKey(optionsWhereHECanOnlyReject, sts => sts === status)) { + return [options[1]] + } else if (hasReviewerReports || fragments.length) { + return options + } + return tail(options) +} + const parseFormValues = ({ recommendation, ...rest }) => { const comments = Object.entries(rest).map(([key, value]) => ({ content: value, @@ -65,6 +81,7 @@ const HERecommendation = ({ handleSubmit, hasReviewerReports, highlight, + collection, }) => ( <ContextualBox highlight={highlight} @@ -82,7 +99,7 @@ const HERecommendation = ({ <ValidatedField component={input => ( <Menu - options={hasReviewerReports ? options : tail(options)} + options={showHEOptions(collection, hasReviewerReports)} {...input} /> )} diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js index 161ca3fb1f0049712b15026a6c3bd34e67c7451f..1c680f3a6465958fad65d5594aee5d9894f07e11 100644 --- a/packages/component-manuscript/src/components/ManuscriptLayout.js +++ b/packages/component-manuscript/src/components/ManuscriptLayout.js @@ -222,6 +222,7 @@ const ManuscriptLayout = ({ {isLatestVersion && get(currentUser, 'permissions.canMakeHERecommendation', false) && ( <HERecommendation + collection={collection} formValues={get(formValues, 'editorialRecommendation', {})} hasReviewerReports={reviewerRecommendations.length > 0} highlight={reviewerRecommendations.length > 0}