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

feat(details): add preview file

parent d0ac76e7
No related branches found
No related tags found
1 merge request!43Sprint #19
import React from 'react' import React from 'react'
import { get } from 'lodash'
import { import {
Row, Row,
Item, Item,
Text,
ActionLink, ActionLink,
IconButton, IconButton,
DownloadZipFiles, DownloadZipFiles,
PreviewFile,
ManuscriptVersion, ManuscriptVersion,
Text,
} from 'pubsweet-component-faraday-ui' } from 'pubsweet-component-faraday-ui'
import { DateParser } from '@pubsweet/ui' import { DateParser } from '@pubsweet/ui'
const ManuscriptDetailsTop = ({ history, collection = {}, fragment = {} }) => ( const ManuscriptDetailsTop = ({
history,
getSignedUrl,
collection = {},
fragment = {},
}) => (
<Row alignItems="center" mb={1}> <Row alignItems="center" mb={1}>
<Item alignItems="center" justify="flex-start"> <Item justify="flex-start">
<ActionLink icon="arrow-left" onClick={() => history.push('/')}> <ActionLink icon="arrow-left" onClick={() => history.push('/')}>
Dashboard Dashboard
</ActionLink> </ActionLink>
</Item> </Item>
<Item alignItems="center" justify="flex-end"> <Item justify="flex-end">
<PreviewFile
file={get(fragment, 'files.manuscripts[0]', {})}
getSignedUrl={getSignedUrl}
/>
<DownloadZipFiles <DownloadZipFiles
archiveName={`ID-${collection.customId}`} archiveName={`ID-${collection.customId}`}
collectionId={collection.id} collectionId={collection.id}
fragmentId={fragment.id} fragmentId={fragment.id}
> >
<IconButton icon="download" /> <IconButton icon="download" iconSize={2} mr={3} secondary />
</DownloadZipFiles> </DownloadZipFiles>
<DateParser durationThreshold={0} timestamp={fragment.submitted || ''}> <DateParser durationThreshold={0} timestamp={fragment.submitted || ''}>
{timestamp => <Text mr={1}>Updated on {timestamp}</Text>} {timestamp => <Text mr={1}>Updated on {timestamp}</Text>}
......
import React, { Fragment } from 'react'
import { last } from 'lodash'
import { withProps, withHandlers, compose } from 'recompose'
import { IconButton } from './'
import { withFilePreview } from './helpers'
const hasPreview = (name = '') => {
const extension = last(name.split('.')).toLocaleLowerCase()
return ['pdf', 'png', 'jpg'].includes(extension)
}
const PreviewFile = ({ onPreview, hasPreview }) => (
<Fragment>
{hasPreview && (
<IconButton
icon="eye"
iconSize={2}
ml={1}
mr={1}
onClick={onPreview}
secondary
/>
)}
</Fragment>
)
export default compose(
withFilePreview,
withProps(({ file: { name } }) => ({
hasPreview: hasPreview(name),
})),
withHandlers({
onPreview: ({ previewFile, file }) => () => {
typeof previewFile === 'function' && previewFile(file)
},
}),
)(PreviewFile)
Preview file in browser if possible
```js
const file = {};
<PreviewFile file={file} />
```
...@@ -11,6 +11,7 @@ export default styled.div.attrs({ ...@@ -11,6 +11,7 @@ export default styled.div.attrs({
flex: ${({ flex }) => (isNumber(flex) ? flex : 1)}; flex: ${({ flex }) => (isNumber(flex) ? flex : 1)};
flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')}; flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};
justify-content: ${({ justify }) => justify || 'initial'}; justify-content: ${({ justify }) => justify || 'initial'};
align-items: ${({ alignItems }) => alignItems || 'flex-start'}; align-items: ${({ alignItems }) => alignItems || 'center'};
${marginHelper}; ${marginHelper};
` `
...@@ -21,6 +21,7 @@ export { default as Tag } from './Tag' ...@@ -21,6 +21,7 @@ export { default as Tag } from './Tag'
export { default as Text } from './Text' export { default as Text } from './Text'
export { default as WizardAuthors } from './WizardAuthors' export { default as WizardAuthors } from './WizardAuthors'
export { default as WizardFiles } from './WizardFiles' export { default as WizardFiles } from './WizardFiles'
export { default as PreviewFile } from './PreviewFile'
export { default as DownloadZipFiles } from './DownloadZipFiles' export { default as DownloadZipFiles } from './DownloadZipFiles'
// Manuscript Details // Manuscript Details
......
...@@ -6,6 +6,7 @@ import { Text, ManuscriptDetailsTop, Row } from 'pubsweet-component-faraday-ui' ...@@ -6,6 +6,7 @@ import { Text, ManuscriptDetailsTop, Row } from 'pubsweet-component-faraday-ui'
const ManuscriptLayout = ({ const ManuscriptLayout = ({
journal, journal,
history, history,
getSignedUrl,
currentUser, currentUser,
editorInChief, editorInChief,
canMakeRevision, canMakeRevision,
...@@ -20,6 +21,7 @@ const ManuscriptLayout = ({ ...@@ -20,6 +21,7 @@ const ManuscriptLayout = ({
<ManuscriptDetailsTop <ManuscriptDetailsTop
collection={project} collection={project}
fragment={version} fragment={version}
getSignedUrl={getSignedUrl}
history={history} history={history}
/> />
<Row justify="flex-start">Aici header</Row> <Row justify="flex-start">Aici header</Row>
......
...@@ -12,7 +12,7 @@ const DashboardFilters = ({ ...@@ -12,7 +12,7 @@ const DashboardFilters = ({
<Text mr={1} pb={1} secondary> <Text mr={1} pb={1} secondary>
Filters Filters
</Text> </Text>
<Item flex={0} mr={1} vertical> <Item alignItems="flex-start" flex={0} mr={1} vertical>
<Label>Priority</Label> <Label>Priority</Label>
<Menu <Menu
inline inline
...@@ -21,7 +21,7 @@ const DashboardFilters = ({ ...@@ -21,7 +21,7 @@ const DashboardFilters = ({
value={getDefaultFilterValue('priority')} value={getDefaultFilterValue('priority')}
/> />
</Item> </Item>
<Item flex={0} vertical> <Item alignItems="flex-start" flex={0} vertical>
<Label>Order</Label> <Label>Order</Label>
<Menu <Menu
inline inline
......
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