Skip to content
Snippets Groups Projects
Commit a39b12f1 authored by Bogdan Cochior's avatar Bogdan Cochior
Browse files

feat(HE): add button for HE in heAssigned status

parent 5c32f1b3
No related branches found
No related tags found
2 merge requests!34Sprint 17 features,!24feat(HE): add button for HE in heAssigned status
...@@ -7,10 +7,12 @@ export const isHEToManuscript = (state, collectionId) => { ...@@ -7,10 +7,12 @@ export const isHEToManuscript = (state, collectionId) => {
return get(collection, 'handlingEditor.id') === currentUserId return get(collection, 'handlingEditor.id') === currentUserId
} }
const canMakeRecommendationStatuses = ['reviewCompleted', 'heAssigned']
export const canMakeRecommendation = (state, collection, fragment = {}) => { export const canMakeRecommendation = (state, collection, fragment = {}) => {
if (fragment.id !== last(collection.fragments)) return false if (fragment.id !== last(collection.fragments)) return false
const isHE = isHEToManuscript(state, collection.id) const isHE = isHEToManuscript(state, collection.id)
return isHE && get(collection, 'status') === 'reviewCompleted' const status = get(collection, 'status')
return isHE && canMakeRecommendationStatuses.includes(status)
} }
export const currentUserIs = ({ currentUser: { user } }, role) => { export const currentUserIs = ({ currentUser: { user } }, role) => {
......
...@@ -24,6 +24,7 @@ import { ...@@ -24,6 +24,7 @@ import {
import { AuthorList, Files } from 'pubsweet-components-faraday/src/components' import { AuthorList, Files } from 'pubsweet-components-faraday/src/components'
import { submitRevision } from 'pubsweet-component-wizard/src/redux/conversion' import { submitRevision } from 'pubsweet-component-wizard/src/redux/conversion'
import AutosaveIndicator from 'pubsweet-component-wizard/src/components/AutosaveIndicator' import AutosaveIndicator from 'pubsweet-component-wizard/src/components/AutosaveIndicator'
import { selectReviewRecommendations } from 'pubsweet-components-faraday/src/redux/recommendations'
import { import {
toClass, toClass,
compose, compose,
...@@ -60,6 +61,7 @@ const SubmitRevision = ({ ...@@ -60,6 +61,7 @@ const SubmitRevision = ({
removeFile, removeFile,
handleSubmit, handleSubmit,
responseFiles, responseFiles,
reviews = [],
submitFailed, submitFailed,
}) => ( }) => (
<Root> <Root>
...@@ -108,39 +110,41 @@ const SubmitRevision = ({ ...@@ -108,39 +110,41 @@ const SubmitRevision = ({
/> />
</CustomValidatedField> </CustomValidatedField>
</Expandable> </Expandable>
<Expandable label="RESPONSE TO REVIEWER COMMENTS" startExpanded> {!isEmpty(reviews) && (
<Title>Reply text*</Title> <Expandable label="RESPONSE TO REVIEWER COMMENTS" startExpanded>
<Row> <Title>Reply text*</Title>
<FullWidth className="full-width"> <Row>
<ValidatedField <FullWidth className="full-width">
component={TextAreaField} <ValidatedField
name="commentsToReviewers" component={TextAreaField}
validate={ name="commentsToReviewers"
isEmpty(get(formValues, 'files.responseToReviewers')) validate={
? [required] isEmpty(get(formValues, 'files.responseToReviewers'))
: [] ? [required]
} : []
/> }
</FullWidth> />
</Row> </FullWidth>
<Row left> </Row>
{responseFiles.map(file => ( <Row left>
<FileItem {responseFiles.map(file => (
compact <FileItem
id={file.id} compact
key={file.id} id={file.id}
{...file} key={file.id}
removeFile={removeFile} {...file}
/> removeFile={removeFile}
))} />
</Row> ))}
<FilePicker </Row>
allowedFileExtensions={['pdf', 'doc', 'docx']} <FilePicker
onUpload={addFile} allowedFileExtensions={['pdf', 'doc', 'docx']}
> onUpload={addFile}
<ActionText left={12}>Upload file</ActionText> >
</FilePicker> <ActionText left={12}>Upload file</ActionText>
</Expandable> </FilePicker>
</Expandable>
)}
<SubmitContainer> <SubmitContainer>
{submitFailed && {submitFailed &&
formError && <Error>There are some errors above.</Error>} formError && <Error>There are some errors above.</Error>}
...@@ -169,8 +173,9 @@ export default compose( ...@@ -169,8 +173,9 @@ export default compose(
modalComponent: ConfirmationModal, modalComponent: ConfirmationModal,
})), })),
connect( connect(
state => ({ (state, { version }) => ({
fileFetching: getRequestStatus(state), fileFetching: getRequestStatus(state),
reviews: selectReviewRecommendations(state, version.id),
formValues: getFormValues('revision')(state), formValues: getFormValues('revision')(state),
formError: getFormSyncErrors('revision')(state), formError: getFormSyncErrors('revision')(state),
}), }),
......
...@@ -74,6 +74,7 @@ const DashboardCard = ({ ...@@ -74,6 +74,7 @@ const DashboardCard = ({
collectionId={project.id} collectionId={project.id}
fragmentId={version.id} fragmentId={version.id}
modalKey={`recommend-${version.id}`} modalKey={`recommend-${version.id}`}
status={project.status}
/> />
)} )}
<ZipFiles <ZipFiles
......
...@@ -30,12 +30,14 @@ export default compose( ...@@ -30,12 +30,14 @@ export default compose(
})), })),
withHandlers({ withHandlers({
showFirstStep: ({ showFirstStep: ({
status,
showModal, showModal,
hideModal, hideModal,
fragmentId, fragmentId,
collectionId, collectionId,
}) => () => { }) => () => {
showModal({ showModal({
status,
hideModal, hideModal,
fragmentId, fragmentId,
collectionId, collectionId,
......
...@@ -7,7 +7,7 @@ import { FormItems } from '../UIComponents' ...@@ -7,7 +7,7 @@ import { FormItems } from '../UIComponents'
const { Row, Title, RowItem, RootContainer, CustomRadioGroup } = FormItems const { Row, Title, RowItem, RootContainer, CustomRadioGroup } = FormItems
const StepOne = ({ hideModal, disabled, onSubmit }) => ( const StepOne = ({ hideModal, disabled, onSubmit, status }) => (
<RootContainer> <RootContainer>
<Title>Recommendation for Next Phase</Title> <Title>Recommendation for Next Phase</Title>
<Row> <Row>
...@@ -20,7 +20,11 @@ const StepOne = ({ hideModal, disabled, onSubmit }) => ( ...@@ -20,7 +20,11 @@ const StepOne = ({ hideModal, disabled, onSubmit }) => (
> >
<RadioGroup <RadioGroup
name="decision" name="decision"
options={utils.recommendationOptions} options={
status === 'reviewCompleted'
? utils.recommendationOptions
: utils.recommendationOptions.slice(1)
}
{...input} {...input}
/> />
</CustomRadioGroup> </CustomRadioGroup>
......
import { omit } from 'lodash' import { omit } from 'lodash'
export const recommendationOptions = [ export const recommendationOptions = [
{ value: 'reject', label: 'Reject' },
{ value: 'publish', label: 'Publish' }, { value: 'publish', label: 'Publish' },
{ value: 'reject', label: 'Reject' },
{ value: 'revise', label: 'Request revision' }, { value: 'revise', label: 'Request revision' },
] ]
......
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