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

refactor(admin): refactor admin components

parent e5987057
No related branches found
No related tags found
No related merge requests found
import React from 'react' import React from 'react'
import { Icon } from '@pubsweet/ui' import { Icon } from '@pubsweet/ui'
import styled from 'styled-components' import styled from 'styled-components'
import { withRouter } from 'react-router-dom'
const AdminDashboard = ({ history }) => ( const AdminDashboard = ({ history }) => (
<Root> <Root>
...@@ -29,6 +28,9 @@ const AdminDashboard = ({ history }) => ( ...@@ -29,6 +28,9 @@ const AdminDashboard = ({ history }) => (
</Root> </Root>
) )
export default AdminDashboard
// #region Styled components
const Root = styled.div` const Root = styled.div`
display: flex; display: flex;
flex-direction: column; flex-direction: column;
...@@ -72,5 +74,4 @@ const Card = styled.div` ...@@ -72,5 +74,4 @@ const Card = styled.div`
text-align: center; text-align: center;
} }
` `
// #endregion
export default withRouter(AdminDashboard)
import { get } from 'lodash'
import { connect } from 'react-redux'
import { actions } from 'pubsweet-client'
import { ConnectPage } from 'xpub-connect'
import { withRouter } from 'react-router-dom'
import { compose, withState, withHandlers } from 'recompose'
import Admin from './Admin'
export default compose(
ConnectPage(() => [actions.getUsers()]),
withRouter,
connect(state => ({ currentUsers: get(state, 'users.users') })),
withState('users', 'setUsers', props =>
props.currentUsers.map(u => ({ ...u, selected: false })),
),
withState('itemsPerPage', 'setItemsPerPage', 50),
withState('page', 'setPage', 0),
withHandlers({
incrementPage: ({ setPage }) => () => {
setPage(p => p + 1)
},
decrementPage: ({ setPage }) => () => {
setPage(p => (p > 0 ? p - 1 : p))
},
toggleUser: ({ setUsers }) => user => () => {
setUsers(prev =>
prev.map(u => (u.id === user.id ? { ...u, selected: !u.selected } : u)),
)
},
toggleAllUsers: ({ setUsers }) => () => {
setUsers(users => users.map(u => ({ ...u, selected: !u.selected })))
},
}),
)(Admin)
import React from 'react' import React from 'react'
import { get } from 'lodash'
import { connect } from 'react-redux'
import styled from 'styled-components' import styled from 'styled-components'
import { Icon, Menu } from '@pubsweet/ui' import { Icon, Menu } from '@pubsweet/ui'
import { actions } from 'pubsweet-client'
import { ConnectPage } from 'xpub-connect'
import { withRouter } from 'react-router-dom'
import { compose, withState, withHandlers } from 'recompose'
import { Pagination } from './' import { Pagination } from './'
...@@ -20,7 +26,7 @@ const TableRow = ({ toggleUser, selected, email, username, type }) => ( ...@@ -20,7 +26,7 @@ const TableRow = ({ toggleUser, selected, email, username, type }) => (
</Row> </Row>
) )
const Admin = ({ const Users = ({
users, users,
toggleUser, toggleUser,
toggleAllUsers, toggleAllUsers,
...@@ -98,8 +104,34 @@ const Admin = ({ ...@@ -98,8 +104,34 @@ const Admin = ({
</div> </div>
) )
export default Admin export default compose(
ConnectPage(() => [actions.getUsers()]),
withRouter,
connect(state => ({ currentUsers: get(state, 'users.users') })),
withState('users', 'setUsers', props =>
props.currentUsers.map(u => ({ ...u, selected: false })),
),
withState('itemsPerPage', 'setItemsPerPage', 50),
withState('page', 'setPage', 0),
withHandlers({
incrementPage: ({ setPage }) => () => {
setPage(p => p + 1)
},
decrementPage: ({ setPage }) => () => {
setPage(p => (p > 0 ? p - 1 : p))
},
toggleUser: ({ setUsers }) => user => () => {
setUsers(prev =>
prev.map(u => (u.id === user.id ? { ...u, selected: !u.selected } : u)),
)
},
toggleAllUsers: ({ setUsers }) => () => {
setUsers(users => users.map(u => ({ ...u, selected: !u.selected })))
},
}),
)(Users)
// #region styled-components
const AddButton = styled.button` const AddButton = styled.button`
align-items: center; align-items: center;
border: none; border: none;
...@@ -195,3 +227,4 @@ const Input = styled.input` ...@@ -195,3 +227,4 @@ const Input = styled.input`
height: 20px; height: 20px;
width: 20px; width: 20px;
` `
// #endregion
export { default as AdminUsers } from './AdminPage' export { default as AdminUsers } from './AdminUsers'
export { default as Pagination } from './Pagination' export { default as Pagination } from './Pagination'
export { default as AdminDashboard } from './AdminDashboard' export { default as AdminDashboard } from './AdminDashboard'
...@@ -23,20 +23,12 @@ const Dashboard = ({ ...@@ -23,20 +23,12 @@ const Dashboard = ({
filterItems, filterItems,
abstractModal, abstractModal,
setModal, setModal,
history,
...rest ...rest
}) => ( }) => (
<div className={classes.root}> <div className={classes.root}>
<div className={classes.header}> <div className={classes.header}>
<div className={classes.heading}>Manuscripts</div> <div className={classes.heading}>Manuscripts</div>
<div className={classes.headerButtons}> <div className={classes.headerButtons}>
<Button
className={classes['admin-button']}
onClick={() => history.push('admin')}
primary
>
Admin dashboard
</Button>
<Button onClick={createDraftSubmission} primary> <Button onClick={createDraftSubmission} primary>
New New
</Button> </Button>
......
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