Skip to content
Snippets Groups Projects
Commit eff9f711 authored by Yannis Barlas's avatar Yannis Barlas
Browse files

lint lint lint

parent b417a881
No related branches found
No related tags found
No related merge requests found
Showing
with 97 additions and 81 deletions
......@@ -5,5 +5,31 @@
},
"extends": [
"pubsweet"
]
],
"parser": "babel-eslint",
"parserOptions": {
"allowImportExportEverywhere": true
},
"rules": {
"camelcase": 0,
"consistent-return": 0,
"global-require": 0,
"jsx-a11y/anchor-is-valid": 0,
"jsx-a11y/click-events-have-key-events": 0,
"jsx-a11y/label-has-for": 0,
"jsx-a11y/no-static-element-interactions": 0,
"import/extensions": 0,
"import/no-dynamic-require": 0,
"import/no-extraneous-dependencies": 0,
"import/no-named-as-default": 0,
"import/no-named-as-default-member": 0,
"import/prefer-default-export": 0,
"no-console": ["error", { "allow": ["warn", "error"] }],
"no-param-reassign": 0,
"no-shadow": 0,
"no-underscore-dangle": 0,
"react/no-did-mount-set-state": 0,
"react/prop-types": 0,
"sort-keys": 0
}
}
import React from 'react'
import { compose } from 'recompose'
import { connect } from 'react-redux'
import PropTypes from 'prop-types'
// import PropTypes from 'prop-types'
import { AppBar } from 'xpub-ui'
import { withJournal } from 'xpub-journal'
......
......@@ -24,7 +24,7 @@ const Login = ({ errorMessage, handleSubmit }) => (
</form>
<div className={classes.alternate}>
<span className={classes.message}>You don't have an account?</span>
<span className={classes.message}>You don&apos;t have an account?</span>
<Link className={classes.link} to="/signup">
Sign up
</Link>
......
......@@ -27,9 +27,7 @@ export const getCurrentUserFailure = error => ({
export const getCurrentUser = () => dispatch => {
dispatch(getCurrentUserRequest())
return api.get('/users/authenticate').then(
user => {
return dispatch(getCurrentUserSuccess(user))
},
user => dispatch(getCurrentUserSuccess(user)),
error => {
dispatch(getCurrentUserFailure(error))
throw error
......
......@@ -3,7 +3,7 @@ import classes from './EmptySubmissions.local.scss'
const EmptySubmissions = () => (
<div className={classes.root}>
<div>You haven't submitted any manuscripts yet.</div>
<div>You haven&apos;t submitted any manuscripts yet.</div>
</div>
)
......
......@@ -3,7 +3,7 @@ import React from 'react'
const MetadataOwners = ({ owners }) => (
<span>
{owners.map((owner, index) => [
index === 0 ? null : <span>{', '}</span>,
index === 0 ? null : <span>, </span>,
<span>{owner.name || 'Anonymous'}</span>,
])}
</span>
......
......@@ -4,7 +4,7 @@ import { withJournal } from 'xpub-journal'
const MetadataSections = ({ journal, sections }) => (
<span>
{sections.map((section, index) => [
index === 0 ? null : <span>{', '}</span>,
index === 0 ? null : <span>, </span>,
<span>
{journal.articleSections.find(item => item.value === section).label}
</span>,
......
......@@ -2,5 +2,5 @@ import React from 'react'
import classes from './Divider.local.scss'
export default ({ separator }) => (
<span className={classes.root}>{' ' + separator + ' '}</span>
<span className={classes.root}>{` ${separator} `}</span>
)
......@@ -30,13 +30,13 @@ const EditorItem = ({ AssignEditor, project, version, addUserToTeam }) => (
</div>
<div className={classes.main}>
<VersionTitle version={version} className={classes.versionTitle} />
<VersionTitle className={classes.versionTitle} version={version} />
<div className={classes.links}>
<div className={classes.link}>
{(!version.decision || version.decision.status !== 'submitted') && (
<span>
<ProjectLink project={project} version={version} page="reviewers">
<ProjectLink page="reviewers" project={project} version={version}>
Assign Reviewers
</ProjectLink>
......@@ -45,10 +45,10 @@ const EditorItem = ({ AssignEditor, project, version, addUserToTeam }) => (
)}
<ProjectLink
id={project.id}
page="decisions"
project={project}
version={version}
page="decisions"
id={project.id}
>
{version.decision && version.decision.status === 'submitted'
? `Decision: ${version.decision.recommendation}`
......@@ -63,17 +63,17 @@ const EditorItem = ({ AssignEditor, project, version, addUserToTeam }) => (
<div className={classes.roles}>
<div className={classes.role}>
<AssignEditor
addUserToTeam={addUserToTeam}
project={project}
teamTypeName="seniorEditor"
addUserToTeam={addUserToTeam}
/>
</div>
<div className={classes.role}>
<AssignEditor
addUserToTeam={addUserToTeam}
project={project}
teamTypeName="handlingEditor"
addUserToTeam={addUserToTeam}
/>
</div>
</div>
......
......@@ -12,11 +12,11 @@ const OwnerItem = ({ project, version, deleteProject }) => (
</div>
<div className={classes.main}>
<VersionTitle version={version} className={classes.versionTitle} />
<VersionTitle className={classes.versionTitle} version={version} />
<div className={classes.links}>
<div className={classes.link}>
<ProjectLink project={project} version={version} page="submit">
<ProjectLink page="submit" project={project} version={version}>
Submission
</ProjectLink>
</div>
......@@ -24,7 +24,7 @@ const OwnerItem = ({ project, version, deleteProject }) => (
<Divider separator="|" />
<div className={classes.link}>
<ProjectLink project={project} version={version} page="manuscript">
<ProjectLink page="manuscript" project={project} version={version}>
Manuscript
</ProjectLink>
</div>
......
......@@ -16,7 +16,7 @@ const ReviewerItem = ({ project, version, currentUser, reviewerResponse }) => {
return (
<div className={classes.root}>
<div className={classes.main}>
<VersionTitle version={version} className={classes.versionTitle} />
<VersionTitle className={classes.versionTitle} version={version} />
{reviewer && (
<div>
......@@ -24,10 +24,10 @@ const ReviewerItem = ({ project, version, currentUser, reviewerResponse }) => {
<div className={classes.links}>
<div className={classes.link}>
<ProjectLink
id={reviewer.id}
page="reviews"
project={project}
version={version}
page="reviews"
id={reviewer.id}
>
{reviewer.submitted ? 'Reviewed' : 'Do Review'}
</ProjectLink>
......
export const generateTitle = name => {
return name
export const generateTitle = name =>
name
.replace(/[_-]+/g, ' ') // convert hyphens/underscores to space
.replace(/\.[^.]+$/, '') // remove file extension
}
// TODO: preserve italics (use parse5?)
export const extractTitle = source => {
......
......@@ -33,12 +33,11 @@ export default compose(
},
),
withHandlers({
updateManuscript: ({ updateVersion, project, version }) => data => {
return updateVersion(project, {
updateManuscript: ({ updateVersion, project, version }) => data =>
updateVersion(project, {
id: version.id,
rev: version.rev,
...data,
})
},
}),
}),
)(Manuscript)
......@@ -15,14 +15,23 @@ import uploadFile from 'xpub-upload'
import DecisionLayout from './decision/DecisionLayout'
// TODO: this should happen on the server
const handleDecision = (project, version) => dispatch => {
return dispatch(
const handleDecision = (project, version) => dispatch =>
dispatch(
actions.updateFragment(project, {
decision: version.decision,
id: version.id,
rev: version.rev,
}),
).then(() => {
const cloned = pick(version, [
'source',
'metadata',
'declarations',
'suggestions',
'files',
'notes',
])
switch (version.decision.recommendation) {
case 'accept':
return dispatch(
......@@ -43,15 +52,6 @@ const handleDecision = (project, version) => dispatch => {
)
case 'revise':
const cloned = pick(version, [
'source',
'metadata',
'declarations',
'suggestions',
'files',
'notes',
])
return dispatch(
actions.updateCollection({
id: project.id,
......@@ -73,7 +73,6 @@ const handleDecision = (project, version) => dispatch => {
throw new Error('Unknown decision type')
}
})
}
const onSubmit = (values, dispatch, { project, version, history }) => {
version.decision = {
......@@ -131,11 +130,9 @@ export default compose(
},
),
withRouter,
withProps(({ decision }) => {
return {
initialValues: decision,
}
}),
withProps(({ decision }) => ({
initialValues: decision,
})),
reduxForm({
form: 'decision',
onChange: debounce(onChange, 1000, { maxWait: 5000 }),
......
......@@ -103,11 +103,9 @@ export default compose(
},
),
withRouter,
withProps(({ reviewer }) => {
return {
initialValues: reviewer,
}
}),
withProps(({ reviewer }) => ({
initialValues: reviewer,
})),
reduxForm({
form: 'review',
onChange: debounce(onChange, 1000, { maxWait: 5000 }),
......
......@@ -5,9 +5,8 @@ import { Avatar, Button } from 'xpub-ui'
import classes from './Reviewer.local.scss'
const ordinalLetter = ordinal => {
return ordinal ? String.fromCharCode(96 + ordinal) : null
}
const ordinalLetter = ordinal =>
ordinal ? String.fromCharCode(96 + ordinal) : null
const Reviewer = ({ reviewer, removeReviewer }) => (
<div className={classes.root}>
......
......@@ -46,10 +46,10 @@ const addReviewer = (props, projectReviewer) => {
.then(() => reviewer)
}
const handleSubmit = props => reset => values => {
const handleSubmit = props => reset => values =>
// TODO: create a user account if values.user.id is null
return getProjectReviewer(props, values.user)
getProjectReviewer(props, values.user)
.then(projectReviewer => {
if (some(props.version.reviewers, { reviewer: projectReviewer.id })) {
throw new SubmissionError('This reviewer has already been added')
......@@ -58,7 +58,6 @@ const handleSubmit = props => reset => values => {
return addReviewer(props, projectReviewer)
})
.then(() => reset())
}
const loadOptions = props => input => {
const options = props.reviewerUsers
......
import classnames from 'classnames'
import React from 'react'
import classes from './Tab.local.scss'
import classnames from 'classnames'
const Tab = ({ active, children }) => (
<div
......
......@@ -27,7 +27,9 @@ class Tabs extends React.Component {
}
}
setActiveKey = activeKey => this.setState({ activeKey })
setActiveKey(activeKey) {
this.setState({ activeKey })
}
render() {
const { sections, title } = this.props
......@@ -40,8 +42,8 @@ class Tabs extends React.Component {
{sections.map(({ key, label }) => (
<span
key={key}
className={classes.tab}
key={key}
onClick={() => this.setActiveKey(key)}
>
<Tab active={activeKey === key}>{label || key}</Tab>
......
......@@ -8,27 +8,25 @@ import classes from './Declarations.local.scss'
const DeclarationInput = input => <YesOrNo inline {...input} />
const Declarations = ({ journal }) => {
return (
<FormSection name="declarations">
{journal.declarations.questions.map(question => (
<div
className={classnames(classes.section, classes.spread)}
id={`declarations.${question.id}`}
key={question.id}
>
<div className={classes.legend}>{question.legend}</div>
const Declarations = ({ journal }) => (
<FormSection name="declarations">
{journal.declarations.questions.map(question => (
<div
className={classnames(classes.section, classes.spread)}
id={`declarations.${question.id}`}
key={question.id}
>
<div className={classes.legend}>{question.legend}</div>
<ValidatedField
component={DeclarationInput}
name={question.id}
required
validate={[required]}
/>
</div>
))}
</FormSection>
)
}
<ValidatedField
component={DeclarationInput}
name={question.id}
required
validate={[required]}
/>
</div>
))}
</FormSection>
)
export default withJournal(Declarations)
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