From 299bbec0f220a4e3dc7faefd277d012a96e6da51 Mon Sep 17 00:00:00 2001 From: Iosif Boanca <iosif.boanca@thinslices.com> Date: Wed, 17 Oct 2018 13:38:44 +0300 Subject: [PATCH] HIN-1006 conextual box added --- .../component-faraday-selectors/src/index.js | 18 +- .../src/contextualBoxes/ReviewerDetails.js | 168 +++++++++--------- .../src/components/ManuscriptLayout.js | 9 + .../src/components/ManuscriptPage.js | 5 + 4 files changed, 113 insertions(+), 87 deletions(-) diff --git a/packages/component-faraday-selectors/src/index.js b/packages/component-faraday-selectors/src/index.js index 80fb4af49..36eca8431 100644 --- a/packages/component-faraday-selectors/src/index.js +++ b/packages/component-faraday-selectors/src/index.js @@ -61,6 +61,22 @@ export const canViewReviewersDetails = (state, collection = {}) => { return canViewReports(state, collection.id) } +const authorCannotViewReportsDetails = ['submitted', 'rejected'] + +export const authorCanViewReportsDetails = (state, collection = {}) => { + if ( + authorCannotViewReportsDetails.includes(get(collection, 'status', 'draft')) + ) { + return false + } + return authorCanViewReports(state, collection.id) +} + +export const authorCanViewReports = (state, collectionId) => { + const isAuthor = currentUserIs(state, 'author') + return isAuthor +} + const canHeViewEditorialCommentsStatuses = [ 'revisionRequested', 'rejected', @@ -73,8 +89,6 @@ export const canHeViewEditorialComments = (state, collection = {}) => { return isHE && canHeViewEditorialCommentsStatuses.includes(status) } -//authorcanviewreviewerreports(state,fragmentid) - const canEICViewEditorialCommentsStatuses = ['rejected', 'accepted', 'inQA'] export const canEICViewEditorialComments = (state, collection = {}) => { const isEIC = currentUserIs(state, 'adminEiC') diff --git a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js index 8e242820b..2f3cd527d 100644 --- a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js +++ b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js @@ -39,99 +39,97 @@ const ReviewerDetails = ({ expanded, highlight, canViewReviewersDetails, + authorCanViewReportsDetails, ...rest -}) => - canViewReviewersDetails ? ( - <ContextualBox - expanded={expanded} - highlight={highlight} - label="Reviewer Details & Reports" - rightChildren={ - <ReviewerBreakdown fitContent fragment={fragment} mr={1} /> - } - toggle={toggle} - {...rest} - > - <Tabs selectedTab={reports.length ? 1 : 0}> - {({ selectedTab, changeTab }) => ( - <Fragment> - <TabsHeader> +}) => ( + <ContextualBox + expanded={expanded} + highlight={highlight} + label="Reviewer Details & Reports" + rightChildren={<ReviewerBreakdown fitContent fragment={fragment} mr={1} />} + toggle={toggle} + {...rest} + > + <Tabs selectedTab={reports.length ? 1 : 0}> + {({ selectedTab, changeTab }) => ( + <Fragment> + <TabsHeader> + <TabButton + ml={1} + mr={1} + onClick={() => changeTab(0)} + selected={selectedTab === 0} + > + <H4>Reviewer Details</H4> + </TabButton> + {canInviteReviewers && ( <TabButton ml={1} mr={1} - onClick={() => changeTab(0)} - selected={selectedTab === 0} + onClick={() => changeTab(2)} + selected={selectedTab === 2} > - <H4>Reviewer Details</H4> + <H4>Reviewer Suggestions</H4> </TabButton> - {canInviteReviewers && ( - <TabButton - ml={1} - mr={1} - onClick={() => changeTab(2)} - selected={selectedTab === 2} - > - <H4>Reviewer Suggestions</H4> - </TabButton> - )} - <TabButton - ml={1} - mr={1} - onClick={() => changeTab(1)} - selected={selectedTab === 1} - > - <H4>Reviewer Reports</H4> - <Tag mr={1}>{reports.length}</Tag> - </TabButton> - </TabsHeader> - <TabContent> - {selectedTab === 0 && ( - <Fragment> - {canInviteReviewers && ( - <InviteReviewers - modalKey="invite-reviewers" - onInvite={onInviteReviewer} - /> - )} - <ReviewersTable - invitations={invitations} - onResendReviewerInvite={onResendReviewerInvite} - onRevokeReviewerInvite={onRevokeReviewerInvite} + )} + <TabButton + ml={1} + mr={1} + onClick={() => changeTab(1)} + selected={selectedTab === 1} + > + <H4>Reviewer Reports</H4> + <Tag mr={1}>{reports.length}</Tag> + </TabButton> + </TabsHeader> + <TabContent> + {selectedTab === 0 && ( + <Fragment> + {canInviteReviewers && ( + <InviteReviewers + modalKey="invite-reviewers" + onInvite={onInviteReviewer} /> - </Fragment> - )} - {selectedTab === 2 && ( - <PublonsTable - onInvite={onInvitePublonReviewer} - publonsError={fetchingError} - publonsFetching={isFetching} - reviewers={publonReviewers} + )} + <ReviewersTable + invitations={invitations} + onResendReviewerInvite={onResendReviewerInvite} + onRevokeReviewerInvite={onRevokeReviewerInvite} /> - )} - {selectedTab === 1 && ( - <Fragment> - {reports.length === 0 && ( - <Text align="center">No reports submitted yet.</Text> - )} - {reports.map((report, index) => ( - <ReviewerReport - journal={journal} - key={report.id} - onDownload={downloadFile} - onPreview={previewFile} - report={report} - reviewerIndex={index + 1} - showOwner - /> - ))} - </Fragment> - )} - </TabContent> - </Fragment> - )} - </Tabs> - </ContextualBox> - ) : null + </Fragment> + )} + {selectedTab === 2 && ( + <PublonsTable + onInvite={onInvitePublonReviewer} + publonsError={fetchingError} + publonsFetching={isFetching} + reviewers={publonReviewers} + /> + )} + {selectedTab === 1 && ( + <Fragment> + {reports.length === 0 && ( + <Text align="center">No reports submitted yet.</Text> + )} + {reports.map((report, index) => ( + <ReviewerReport + journal={journal} + key={report.id} + onDownload={downloadFile} + onPreview={previewFile} + report={report} + reviewerIndex={index + 1} + showOwner + /> + ))} + </Fragment> + )} + </TabContent> + </Fragment> + )} + </Tabs> + </ContextualBox> +) export default compose( withFilePreview, diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js index b054b71e4..fd2ec4983 100644 --- a/packages/component-manuscript/src/components/ManuscriptLayout.js +++ b/packages/component-manuscript/src/components/ManuscriptLayout.js @@ -5,6 +5,7 @@ import { Text, paddingHelper, ReviewerDetails, + AuthorReviews, HERecommendation, ManuscriptHeader, ManuscriptAssignHE, @@ -186,6 +187,14 @@ const ManuscriptLayout = ({ /> )} + {get(currentUser, 'permissions.authorCanViewReportsDetails', false) && ( + <AuthorReviews + currentUser={currentUser} + journal={journal} + reports={reviewerReports} + /> + )} + {get(currentUser, 'permissions.canMakeHERecommendation', false) && (!invitationsWithReviewers.length || reviewerRecommendations.length > 0) && ( diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js index bada3abde..6889be601 100644 --- a/packages/component-manuscript/src/components/ManuscriptPage.js +++ b/packages/component-manuscript/src/components/ManuscriptPage.js @@ -52,6 +52,7 @@ import { canViewEditorialComments, pendingReviewerInvitation, canOverrideTechnicalChecks, + authorCanViewReportsDetails, getOwnPendingRecommendation, getOwnSubmittedRecommendation, getFragmentReviewerRecommendations, @@ -178,6 +179,10 @@ export default compose( canMakeDecision: canMakeDecision(state, collection, fragment), canEditManuscript: canEditManuscript(state, collection, fragment), canViewReviewersDetails: canViewReviewersDetails(state, collection), + authorCanViewReportsDetails: authorCanViewReportsDetails( + state, + collection, + ), canOverrideTechChecks: canOverrideTechnicalChecks(state, collection), }, }, -- GitLab