Skip to content
Snippets Groups Projects
Commit bff45dd1 authored by Alexandru Munteanu's avatar Alexandru Munteanu
Browse files

Add empty states for dashboard.

parent 86d80e8f
No related branches found
No related tags found
No related merge requests found
...@@ -11,76 +11,73 @@ const OwnerItemWithVersion = withVersion(OwnerItem) ...@@ -11,76 +11,73 @@ const OwnerItemWithVersion = withVersion(OwnerItem)
const EditorItemWithVersion = withVersion(EditorItem) const EditorItemWithVersion = withVersion(EditorItem)
const ReviewerItemWithVersion = withVersion(ReviewerItem) const ReviewerItemWithVersion = withVersion(ReviewerItem)
const Dashboard = ({ AssignEditor, currentUser, dashboard, conversion, deleteProject, reviewerResponse, uploadManuscript }) => ( const Dashboard = ({
AssignEditor,
currentUser,
dashboard,
conversion,
deleteProject,
reviewerResponse,
uploadManuscript
}) => (
<div className={classes.root}> <div className={classes.root}>
<div className={classes.upload}> <div className={classes.upload}>
<UploadManuscript <UploadManuscript conversion={conversion} uploadManuscript={uploadManuscript} />
conversion={conversion}
uploadManuscript={uploadManuscript}/>
</div> </div>
<div className={classes.section}> <div className={classes.section}>
<div className={classes.heading}> <div className={classes.heading}>My Submissions</div>
My Submissions
</div>
{dashboard.owner ? ( {false ? (
dashboard.owner.map(project => ( dashboard.owner.map(project => (
<OwnerItemWithVersion <OwnerItemWithVersion key={project.id} project={project} deleteProject={deleteProject} />
key={project.id}
project={project}
deleteProject={deleteProject}/>
)) ))
) : ( ) : (
<EmptySubmissions/> <EmptySubmissions
conversion={conversion}
uploadManuscript={uploadManuscript}
text={`You haven't submitted any manuscripts yet.`}
/>
)} )}
</div> </div>
{!!dashboard.reviewer.length && ( <div className={classes.section}>
<div className={classes.section}> <div className={classes.heading}>To review</div>
<div className={classes.heading}> {!dashboard.reviewer.length ? (
My Reviews <EmptySubmissions text={`You have no manuscripts to review for now.`} />
</div> ) : (
dashboard.reviewer.map(project => (
{dashboard.reviewer.map(project => (
<ReviewerItemWithVersion <ReviewerItemWithVersion
key={project.id} key={project.id}
project={project} project={project}
currentUser={currentUser} currentUser={currentUser}
reviewerResponse={reviewerResponse}/> reviewerResponse={reviewerResponse}
))} />
</div> ))
)} )}
</div>
{!!dashboard.assign.length && (
<div className={classes.section}>
<div className={classes.heading}>
Assign
</div>
{dashboard.assign.map(project => (
<EditorItemWithVersion
key={project.id}
project={project}
AssignEditor={AssignEditor}/>
))}
</div>
)}
{!!dashboard.editor.length && ( <div className={classes.section}>
<div className={classes.section}> <div className={classes.heading}>Assign</div>
<div className={classes.heading}> {!dashboard.assign.length ? (
My Manuscripts <EmptySubmissions text={`Nu este nimic nici aici.`} />
</div> ) : (
dashboard.assign.map(project => (
<EditorItemWithVersion key={project.id} project={project} AssignEditor={AssignEditor} />
))
)}
</div>
{dashboard.editor.map(project => ( <div className={classes.section}>
<EditorItemWithVersion <div className={classes.heading}>My Manuscripts</div>
key={project.id} {!dashboard.editor.length ? (
project={project} <EmptySubmissions text={`You have no manuscripts.`} />
AssignEditor={AssignEditor}/> ) : (
))} dashboard.editor.map(project => (
</div> <EditorItemWithVersion key={project.id} project={project} AssignEditor={AssignEditor} />
)} ))
)}
</div>
</div> </div>
) )
......
import React from 'react' import React from 'react'
import UploadManuscript from './UploadManuscript'
import classes from './EmptySubmissions.local.scss' import classes from './EmptySubmissions.local.scss'
const EmptySubmissions = () => ( const EmptySubmissions = ({ text, conversion, uploadManuscript }) => (
<div className={classes.root}> <div className={classes.root}>
<div>You haven't submitted any manuscripts yet.</div> <div>{text}</div>
{uploadManuscript && (
<UploadManuscript
conversion={conversion}
uploadManuscript={uploadManuscript}
text={'Click here to create a submission.'}
/>
)}
</div> </div>
) )
......
A message that is displayed when the current user has no submissions. A message that is displayed when the current user has no submissions.
```js ```js
<EmptySubmissions/> <EmptySubmissions text={'Text to be shown.'} conversion={'optional'} uploadManuscript={'optional'}/>
``` ```
...@@ -6,36 +6,41 @@ import classes from './UploadManuscript.local.scss' ...@@ -6,36 +6,41 @@ import classes from './UploadManuscript.local.scss'
const isIdle = conversion => !(conversion.converting || conversion.complete || conversion.error) const isIdle = conversion => !(conversion.converting || conversion.complete || conversion.error)
const UploadManuscript = ({ uploadManuscript, conversion }) => ( const UploadManuscript = ({ uploadManuscript, conversion, text }) => (
<Dropzone <Dropzone
onDrop={uploadManuscript} onDrop={uploadManuscript}
accept="application/vnd.openxmlformats-officedocument.wordprocessingml.document" accept="application/vnd.openxmlformats-officedocument.wordprocessingml.document"
className={classes.dropzone}> className={classes.dropzone}
>
<div className={classes.root}> <div className={classes.root}>
<div className={classnames({ {text ? (
[classes.idle]: isIdle(conversion), <span className={classes['upload-text']}>{text}</span>
[classes.converting]: conversion.converting, ) : (
[classes.error]: conversion.error, [
[classes.complete]: conversion.complete <div
})}> key="submitIcon"
<span className={classes.icon}> className={classnames({
<Icon color="var(--color-primary)"> [classes.idle]: isIdle(conversion),
{conversion.complete ? 'check_circle' : 'plus_circle'} [classes.converting]: conversion.converting,
</Icon> [classes.error]: conversion.error,
</span> [classes.complete]: conversion.complete
</div> })}
>
<div className={classes.main}> <span className={classes.icon}>
{conversion.error ? ( <Icon color="var(--color-primary)">{conversion.complete ? 'check_circle' : 'plus_circle'}</Icon>
<div className={classes.error}> </span>
{conversion.error.message} </div>,
</div> <div className={classes.main} key="submitText">
) : ( {conversion.error ? (
<div className={classes.info}> <div className={classes.error}>{conversion.error.message}</div>
{conversion.complete ? 'Submission created' : 'Create submission'} ) : (
<div className={classes.info}>
{conversion.complete ? 'Submission created' : 'Create submission'}
</div>
)}
</div> </div>
)} ]
</div> )}
</div> </div>
</Dropzone> </Dropzone>
) )
......
...@@ -125,3 +125,8 @@ ...@@ -125,3 +125,8 @@
stroke-dashoffset: 0; stroke-dashoffset: 0;
} }
} }
.upload-text {
color: var(--color-primary);
line-height: 0.5;
}
...@@ -2,7 +2,7 @@ module.exports = { ...@@ -2,7 +2,7 @@ module.exports = {
'pubsweet-client': { 'pubsweet-client': {
'API_ENDPOINT': 'http://localhost:3000/api', 'API_ENDPOINT': 'http://localhost:3000/api',
'login-redirect': '/', 'login-redirect': '/',
'redux-log': false, 'redux-log': true,
theme: process.env.PUBSWEET_THEME theme: process.env.PUBSWEET_THEME
}, },
} }
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