diff --git a/packages/components-faraday/src/components/Dashboard/DashboardCard.js b/packages/components-faraday/src/components/Dashboard/DashboardCard.js index d9ce0788938903cc7732e95dbed205ef96c921e8..0b7f235c6b3774a00aab0b2e0d70271e4de00e13 100644 --- a/packages/components-faraday/src/components/Dashboard/DashboardCard.js +++ b/packages/components-faraday/src/components/Dashboard/DashboardCard.js @@ -14,12 +14,9 @@ import ZipFiles from './ZipFiles' import { InviteReviewers } from '../Reviewers/' import { selectInvitation } from '../../redux/reviewers' import { parseVersion, parseJournalIssue, mapStatusToLabel } from './../utils' -import { - AuthorTooltip, - ReviewerDecision, - HandlingEditorSection, - ReviewerReports, -} from './' +import { AuthorTooltip, ReviewerDecision, HandlingEditorSection } from './' + +import { ReviewerBreakdown } from '../Invitations' const DashboardCard = ({ deleteProject, @@ -160,9 +157,7 @@ const DashboardCard = ({ </LeftDetails> {canInviteReviewers() && ( <RightDetails flex={4}> - <ReviewerReports - invitations={invitations.filter(i => i.role === 'reviewer')} - /> + <ReviewerBreakdown compact invitations={invitations} /> <InviteReviewers modalKey={`invite-reviewers-${project.id}`} project={project} diff --git a/packages/components-faraday/src/components/Dashboard/ReviewerReports.js b/packages/components-faraday/src/components/Dashboard/ReviewerReports.js deleted file mode 100644 index b7adb7ede2d92e302d5222ebff7ba8c93f9151ec..0000000000000000000000000000000000000000 --- a/packages/components-faraday/src/components/Dashboard/ReviewerReports.js +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react' -import { th } from '@pubsweet/ui' -import styled, { css } from 'styled-components' - -const ReviewerReports = ({ invitations }) => { - const accepted = invitations.filter(i => i.isAccepted).length - return ( - <ReviewerText>{`Reviewer reports (${accepted}/${ - invitations.length - })`}</ReviewerText> - ) -} - -export default ReviewerReports - -// #region styled-components -const defaultText = css` - color: ${th('colorText')}; - font-family: ${th('fontReading')}; - font-size: ${th('fontSizeBaseSmall')}; -` - -const ReviewerText = styled.div` - ${defaultText}; - margin-right: ${th('subGridUnit')}; - text-transform: uppercase; -` -// #endregion diff --git a/packages/components-faraday/src/components/Dashboard/index.js b/packages/components-faraday/src/components/Dashboard/index.js index fa4dcd89662ccd93739e012ffcf5ed16ae89df0d..25397e39beeab99b17fc2c39a929760ff1d206c3 100644 --- a/packages/components-faraday/src/components/Dashboard/index.js +++ b/packages/components-faraday/src/components/Dashboard/index.js @@ -1,7 +1,6 @@ import DashboardPage from './DashboardPage' export { default as AuthorTooltip } from './AuthorTooltip' -export { default as ReviewerReports } from './ReviewerReports' export { default as ReviewerDecision } from './ReviewerDecision' export { default as EditorInChiefActions } from './EditorInChiefActions' export { default as HandlingEditorActions } from './HandlingEditorActions' diff --git a/packages/components-faraday/src/components/Invitations/ReviewerBreakdown.js b/packages/components-faraday/src/components/Invitations/ReviewerBreakdown.js new file mode 100644 index 0000000000000000000000000000000000000000..67191bd3aa614f3be49cb134adb46dcd8848504b --- /dev/null +++ b/packages/components-faraday/src/components/Invitations/ReviewerBreakdown.js @@ -0,0 +1,66 @@ +import React from 'react' +import { th } from '@pubsweet/ui' +import styled, { css } from 'styled-components' +import { compose, withHandlers, withProps } from 'recompose' + +const ReviewerBreakdown = ({ + compact = false, + getCompactInvitations, + getExtendedInvitations, +}) => (compact ? getCompactInvitations() : getExtendedInvitations()) + +export default compose( + withProps(({ invitations = [] }) => ({ + invitations: invitations.filter(i => i.role === 'reviewer'), + })), + withHandlers({ + getCompactInvitations: ({ invitations }) => () => { + const acceptedInvitations = invitations.filter( + i => i.isAccepted && i.hasAnswer, + ) + return ( + <ReviewerText> + Reviewer reports ({acceptedInvitations.length}/{invitations.length}) + </ReviewerText> + ) + }, + getExtendedInvitations: ({ invitations }) => () => { + const invitationStatus = invitations.filter(i => i.hasAnswer).reduce( + (acc, i) => ({ + ...acc, + [i.isAccepted ? 'accepted' : 'declined']: + acc[[i.isAccepted ? 'accepted' : 'declined']] + 1, + }), + { + accepted: 0, + declined: 0, + }, + ) + + return ( + <BreakdownText> + <b>{invitations.length}</b> invited, + <b> {invitationStatus.accepted}</b> agreed, + <b> {invitationStatus.declined}</b> declined + </BreakdownText> + ) + }, + }), +)(ReviewerBreakdown) + +// #region styled-components +const defaultText = css` + color: ${th('colorText')}; + font-family: ${th('fontReading')}; + font-size: ${th('fontSizeBaseSmall')}; +` + +const BreakdownText = styled.div` + ${defaultText}; + margin-right: ${th('subGridUnit')}; +` + +const ReviewerText = BreakdownText.extend` + text-transform: uppercase; +` +// #endregion diff --git a/packages/components-faraday/src/components/Invitations/index.js b/packages/components-faraday/src/components/Invitations/index.js new file mode 100644 index 0000000000000000000000000000000000000000..0506cde3a56ab1dde3e4b8175a759aaeac830d1e --- /dev/null +++ b/packages/components-faraday/src/components/Invitations/index.js @@ -0,0 +1 @@ +export { default as ReviewerBreakdown } from './ReviewerBreakdown' diff --git a/packages/components-faraday/src/components/Reviewers/InviteReviewers.js b/packages/components-faraday/src/components/Reviewers/InviteReviewers.js index 15895bc3c355b724807e4c577fdf9fd84a9b104c..9de8150cf4eb160703e809e662fd8a7456d75d49 100644 --- a/packages/components-faraday/src/components/Reviewers/InviteReviewers.js +++ b/packages/components-faraday/src/components/Reviewers/InviteReviewers.js @@ -8,6 +8,7 @@ import { withModal2, } from 'pubsweet-component-modal/src/components' +import { ReviewerBreakdown } from '../Invitations' import { ReviewerForm, ReviewersList } from './' import { getCollectionReviewers, @@ -51,11 +52,12 @@ const InviteReviewersModal = compose( hideModal, onConfirm, showModal, - collectionId, reviewers, + invitations, + collectionId, getReviewers, - fetchingReviewers, fetchingInvite, + fetchingReviewers, }) => ( <Root> <CloseIcon data-test="icon-modal-hide" onClick={hideModal}> @@ -73,6 +75,7 @@ const InviteReviewersModal = compose( <Row> <Subtitle hidden={reviewers.length === 0}>Reviewers Info</Subtitle> + <ReviewerBreakdown invitations={invitations} /> {fetchingReviewers && <Spinner size={3} />} </Row> <ReviewersList @@ -106,6 +109,7 @@ export default compose( showModal({ type: 'invite-reviewers', collectionId: project.id, + invitations: project.invitations, onConfirm: () => { hideModal() }, @@ -149,7 +153,6 @@ const Row = styled.div` display: flex; flex-direction: row; justify-content: space-between; - padding-right: 20px; ` const Root = styled.div` diff --git a/packages/components-faraday/src/components/SignUp/FormItems.js b/packages/components-faraday/src/components/SignUp/FormItems.js index 4b39b74eb60dcbfb7326a17c0cf6ce7e95f0ef2f..26db2ecb4473a8ce079a968a741f98d19c30a7bb 100644 --- a/packages/components-faraday/src/components/SignUp/FormItems.js +++ b/packages/components-faraday/src/components/SignUp/FormItems.js @@ -1,5 +1,5 @@ -import styled from 'styled-components' import { th } from '@pubsweet/ui' +import styled from 'styled-components' export const RootContainer = styled.div` background-color: ${th('backgroundColorReverse')}; diff --git a/packages/components-faraday/src/components/SignUp/ReviewerDecline.js b/packages/components-faraday/src/components/SignUp/ReviewerDecline.js index 12b6a96b3b6fcf0ed6e94cbcb8cbdb69f5265292..acebe87b7e9434c17ebfd970313fa9e4c5751e3f 100644 --- a/packages/components-faraday/src/components/SignUp/ReviewerDecline.js +++ b/packages/components-faraday/src/components/SignUp/ReviewerDecline.js @@ -1,12 +1,31 @@ import React from 'react' +import { th } from '@pubsweet/ui' import { connect } from 'react-redux' +import styled from 'styled-components' +import { withJournal } from 'xpub-journal' import { compose, lifecycle } from 'recompose' +import { RootContainer, Title } from './FormItems' import { reviewerDecline } from '../../redux/reviewers' -const ReviewerDecline = props => <div>I decline textul de la Matt</div> +const ReviewerDecline = ({ journal: { metadata: { email } } }) => ( + <RootContainer> + <Title>Thank you for letting us know.</Title> + <div> + <Description> + We hope you will review for Hindawi in the future. If you want any more + information, or would like to submit a review for this article, then + please contact us at{' '} + <MailLink href={`mailto:${email}`} target="_blank"> + {email} + </MailLink>. + </Description> + </div> + </RootContainer> +) export default compose( + withJournal, connect(null, { reviewerDecline }), lifecycle({ componentDidMount() { @@ -20,3 +39,19 @@ export default compose( }, }), )(ReviewerDecline) + +// #region styled-components +const MailLink = styled.a` + color: ${th('colorPrimary')}; + + &:visited { + color: ${th('colorTextPlaceholder')}; + } +` + +const Description = styled.span` + color: ${th('colorPrimary')}; + font-family: ${th('fontReading')}; + font-size: ${th('fontSizeBaseSmall')}; +` +// #endregion diff --git a/packages/xpub-faraday/app/config/journal/metadata.js b/packages/xpub-faraday/app/config/journal/metadata.js index f099501bf61de0aa128bbd2094665c4dfd1defb2..ba3113919eb951f7b620a3cbb4f1fb5fa02adb7d 100644 --- a/packages/xpub-faraday/app/config/journal/metadata.js +++ b/packages/xpub-faraday/app/config/journal/metadata.js @@ -6,4 +6,5 @@ export default { name: <Logo srcUrl="/assets/hindawi-logo.png" />, logo: '/assets/hindawi-logo.png', nameText: 'Faraday Journal', + email: 'faraday@hindawi.com', }