From a3cac51d18d122ccbfce63edd3c69bc5383ce572 Mon Sep 17 00:00:00 2001 From: Iosif Boanca <iosif.boanca@thinslices.com> Date: Tue, 30 Oct 2018 14:40:06 +0200 Subject: [PATCH] contextual box --- .../component-faraday-ui/src/AuthorReply.js | 56 ++++++++++++++ .../component-faraday-ui/src/AuthorReply.md | 77 +++++++++++++++++++ .../ResponseToRevisionRequest.js | 11 +++ .../ResponseToRevisionRequest.md | 75 ++++++++++++++++++ .../src/contextualBoxes/index.js | 3 + packages/component-faraday-ui/src/index.js | 1 + .../src/components/ManuscriptLayout.js | 2 +- packages/xpub-faraday/config/validations.js | 1 + 8 files changed, 225 insertions(+), 1 deletion(-) create mode 100644 packages/component-faraday-ui/src/AuthorReply.js create mode 100644 packages/component-faraday-ui/src/AuthorReply.md create mode 100644 packages/component-faraday-ui/src/contextualBoxes/ResponseToRevisionRequest.js create mode 100644 packages/component-faraday-ui/src/contextualBoxes/ResponseToRevisionRequest.md diff --git a/packages/component-faraday-ui/src/AuthorReply.js b/packages/component-faraday-ui/src/AuthorReply.js new file mode 100644 index 000000000..c9f8c6ca8 --- /dev/null +++ b/packages/component-faraday-ui/src/AuthorReply.js @@ -0,0 +1,56 @@ +import React from 'react' +import { get } from 'lodash' +import { withProps } from 'recompose' +import styled from 'styled-components' +import { th } from '@pubsweet/ui-toolkit' +import { DateParser } from '@pubsweet/ui' + +import { Label, Item, Row, Text } from './' + +const submittingAuthor = authors => { + const thisAuthor = authors.filter(e => e.isSubmitting) + return thisAuthor[0] +} + +const AuthorReply = ({ reply, authorName, submittedOn }) => ( + <Root> + <Row justify="space-between" mb={2}> + <Item justify="flex-end"> + <Row mb={1}> + <Item vertical> + <Label mb={1 / 2}>Author Reply</Label> + <Text>{reply}</Text> + </Item> + </Row> + <Text ml={1} mr={1} whiteSpace="nowrap"> + {authorName} + </Text> + <DateParser timestamp={submittedOn}> + {date => <Text>{date}</Text>} + </DateParser> + </Item> + </Row> + </Root> +) + +export default withProps( + ({ fragment: { authors, submitted, responseToReviewers } }) => ({ + reply: responseToReviewers.content, + submittedOn: submitted, + authorName: `${get(submittingAuthor(authors), 'firstName', '')} ${get( + submittingAuthor(authors), + 'lastName', + '', + )}`, + }), +)(AuthorReply) + +// #region styles +const Root = styled.div` + background-color: ${th('colorBackgroundHue')}; + border: ${th('borderWidth')} ${th('borderStyle')} ${th('colorBackgroundHue3')}; + border-radius: ${th('borderRadius')}; + padding: calc(${th('gridUnit')} * 2); + margin: ${th('gridUnit')}; +` +// #endregion diff --git a/packages/component-faraday-ui/src/AuthorReply.md b/packages/component-faraday-ui/src/AuthorReply.md new file mode 100644 index 000000000..0548cdd8d --- /dev/null +++ b/packages/component-faraday-ui/src/AuthorReply.md @@ -0,0 +1,77 @@ +Reviewer report. + +```js +const fragment = { + "id": "1378b0e4-5c29-46a6-8afe-2f5ec1b13899", + "type": "fragment", + "files": { + "manuscripts": [ + { + "id": "e891d6dd-fe46-472d-87db-5c80fdd48ac2/9e103d6a-dd0e-4d1e-b6ff-9b8383579649", + "name": "Evolutionary Programming.pdf", + "size": 81618, + "originalName": "Evolutionary Programming.pdf" + } + ], + "supplementary": [] + }, + "owners": [ + { + "id": "f3a16660-ae1e-4ab2-9ae4-220a0c7ac575", + "username": "tania.fecheta+a@thinslices.com" + } + ], + "authors": [ + { + "id": "f3a16660-ae1e-4ab2-9ae4-220a0c7ac575", + "title": "mrs", + "country": "AL", + "lastName": "Tania", + "firstName": "Author", + "affiliation": "Ts", + "isSubmitting": true, + "isCorresponding": true + } + ], + "created": "2018-10-30T07:33:26.128Z", + "version": 2, + "metadata": { + "type": "research", + "title": "Major revision and new version sunmited", + "journal": "Bioinorganic Chemistry and Applications", + "abstract": "something something" + }, + "conflicts": { + "hasFunding": "", + "hasConflicts": "no", + "hasDataAvailability": "" + }, + "submitted": 1540884806175, + "invitations": [ + { + "id": "7b50667d-883c-43d4-aea5-71455e251801", + "role": "reviewer", + "type": "invitation", + "userId": "b7554926-89dc-4b8b-b4d7-cd1bcc51f2de", + "hasAnswer": true, + "invitedOn": 1540884401711, + "isAccepted": true, + "respondedOn": 1540884410543 + } + ], + "collectionId": "383a5314-788c-49e5-aa00-617426b5c7c7", + "declarations": { + "agree": true + }, + "fragmentType": "version", + "responseToReviewers": { + "file": null, + "content": "i changed that thing" + }, + "recommendations": [] +}; + +<AuthorReply + fragment={fragment} +/> +``` diff --git a/packages/component-faraday-ui/src/contextualBoxes/ResponseToRevisionRequest.js b/packages/component-faraday-ui/src/contextualBoxes/ResponseToRevisionRequest.js new file mode 100644 index 000000000..3f6bbd424 --- /dev/null +++ b/packages/component-faraday-ui/src/contextualBoxes/ResponseToRevisionRequest.js @@ -0,0 +1,11 @@ +import React from 'react' + +import { ContextualBox, AuthorReply } from '../' + +const ResponseToRevisionRequest = ({ fragment }) => ( + <ContextualBox label="Response to Revision Request" mb={2}> + <AuthorReply fragment={fragment} /> + </ContextualBox> +) + +export default ResponseToRevisionRequest diff --git a/packages/component-faraday-ui/src/contextualBoxes/ResponseToRevisionRequest.md b/packages/component-faraday-ui/src/contextualBoxes/ResponseToRevisionRequest.md new file mode 100644 index 000000000..eae07412e --- /dev/null +++ b/packages/component-faraday-ui/src/contextualBoxes/ResponseToRevisionRequest.md @@ -0,0 +1,75 @@ +ResponseToRevisionRequest. + +```js +const fragment = { + "id": "1378b0e4-5c29-46a6-8afe-2f5ec1b13899", + "type": "fragment", + "files": { + "manuscripts": [ + { + "id": "e891d6dd-fe46-472d-87db-5c80fdd48ac2/9e103d6a-dd0e-4d1e-b6ff-9b8383579649", + "name": "Evolutionary Programming.pdf", + "size": 81618, + "originalName": "Evolutionary Programming.pdf" + } + ], + "supplementary": [] + }, + "owners": [ + { + "id": "f3a16660-ae1e-4ab2-9ae4-220a0c7ac575", + "username": "tania.fecheta+a@thinslices.com" + } + ], + "authors": [ + { + "id": "f3a16660-ae1e-4ab2-9ae4-220a0c7ac575", + "title": "mrs", + "country": "AL", + "lastName": "Tania", + "firstName": "Author", + "affiliation": "Ts", + "isSubmitting": true, + "isCorresponding": true + } + ], + "created": "2018-10-30T07:33:26.128Z", + "version": 2, + "metadata": { + "type": "research", + "title": "Major revision and new version sunmited", + "journal": "Bioinorganic Chemistry and Applications", + "abstract": "something something" + }, + "conflicts": { + "hasFunding": "", + "hasConflicts": "no", + "hasDataAvailability": "" + }, + "submitted": 1540884806175, + "invitations": [ + { + "id": "7b50667d-883c-43d4-aea5-71455e251801", + "role": "reviewer", + "type": "invitation", + "userId": "b7554926-89dc-4b8b-b4d7-cd1bcc51f2de", + "hasAnswer": true, + "invitedOn": 1540884401711, + "isAccepted": true, + "respondedOn": 1540884410543 + } + ], + "collectionId": "383a5314-788c-49e5-aa00-617426b5c7c7", + "declarations": { + "agree": true + }, + "fragmentType": "version", + "responseToReviewers": { + "file": null, + "content": "i changed that thing" + }, + "recommendations": [] +}; + +<ResponseToRevisionRequest fragment={fragment} /> +``` diff --git a/packages/component-faraday-ui/src/contextualBoxes/index.js b/packages/component-faraday-ui/src/contextualBoxes/index.js index d3ad70c5b..97a41d51e 100644 --- a/packages/component-faraday-ui/src/contextualBoxes/index.js +++ b/packages/component-faraday-ui/src/contextualBoxes/index.js @@ -3,3 +3,6 @@ export { default as ReviewerDetails } from './ReviewerDetails' export { default as HERecommendation } from './HERecommendation' export { default as ReviewerReportForm } from './ReviewerReportForm' export { default as AuthorReviews } from './AuthorReviews' +export { + default as ResponseToRevisionRequest, +} from './ResponseToRevisionRequest' diff --git a/packages/component-faraday-ui/src/index.js b/packages/component-faraday-ui/src/index.js index 4bfa4af16..a99b60e4c 100644 --- a/packages/component-faraday-ui/src/index.js +++ b/packages/component-faraday-ui/src/index.js @@ -6,6 +6,7 @@ export * from './gridItems' export { default as ActionLink } from './ActionLink' export { default as AuthorWithTooltip } from './AuthorWithTooltip' +export { default as AuthorReply } from './AuthorReply' export { default as Logo } from './Logo' export { default as AppBar } from './AppBar' export { default as AppBarMenu } from './AppBarMenu' diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js index ab97d2960..13865d92c 100644 --- a/packages/component-manuscript/src/components/ManuscriptLayout.js +++ b/packages/component-manuscript/src/components/ManuscriptLayout.js @@ -195,7 +195,7 @@ const ManuscriptLayout = ({ {...inviteReviewer} /> )} - + {console.log('fragment', fragment)} {get(currentUser, 'permissions.canSubmitRevision', false) && ( <SubmitRevision {...submitRevision} /> )} diff --git a/packages/xpub-faraday/config/validations.js b/packages/xpub-faraday/config/validations.js index cc116eecc..60cd146de 100644 --- a/packages/xpub-faraday/config/validations.js +++ b/packages/xpub-faraday/config/validations.js @@ -98,6 +98,7 @@ module.exports = { size: Joi.number(), url: Joi.string(), signedUrl: Joi.string(), + submittedOn: Joi.date(), }), ), }), -- GitLab