add previous button for pagination

This commit is contained in:
Barry Gitarts 2019-09-19 07:02:44 -04:00 committed by Barry G
parent f36bb0a272
commit c741b64d46
2 changed files with 27 additions and 8 deletions

View File

@ -118,15 +118,16 @@ function TableCards({ profiles, classes }) {
) )
} }
const OFFSET = 5
function ListProjects() { function ListProjects() {
const classes = useStyles() const classes = useStyles()
const [offset, setOffset] = useState(2) const [offset, setOffset] = useState(0)
const windowSize = useWindowSize() const windowSize = useWindowSize()
const { loading, error, data, fetchMore } = useQuery( const { loading, error, data, fetchMore } = useQuery(
getProjects, getProjects,
{ {
variables: { variables: {
offset: 0, offset,
limit: 5 limit: 5
} }
} }
@ -138,7 +139,6 @@ function ListProjects() {
const isSmall = innerWidth < 800 const isSmall = innerWidth < 800
const fabStyle = isSmall ? classnames(classes.fabLink, classes.fabSmall) : classes.fabLink const fabStyle = isSmall ? classnames(classes.fabLink, classes.fabSmall) : classes.fabLink
const titleStyle = isSmall ? classes.tableTitleSmall : classes.tableTitle const titleStyle = isSmall ? classes.tableTitleSmall : classes.tableTitle
console.log({data})
return ( return (
<div className={classes.main}> <div className={classes.main}>
<Typography className={classnames(classes.title, classes.fullWidth)}> <Typography className={classnames(classes.title, classes.fullWidth)}>
@ -153,21 +153,34 @@ function ListProjects() {
{!isSmall && <TableHeader classes={classes} />} {!isSmall && <TableHeader classes={classes} />}
{!isSmall ? <TableRows profiles={profiles} classes={classes} /> : <TableCards profiles={profiles} classes={classes} />} {!isSmall ? <TableRows profiles={profiles} classes={classes} /> : <TableCards profiles={profiles} classes={classes} />}
<Divider className={classes.divider} /> <Divider className={classes.divider} />
<Button onClick={() => { {!!offset && <Button onClick={() => {
fetchMore({ fetchMore({
variables: { variables: {
offset offset: offset - OFFSET
}, },
updateQuery: (prev, { fetchMoreResult }) => { updateQuery: (prev, { fetchMoreResult }) => {
console.log({prev, fetchMoreResult})
if (!fetchMoreResult) return prev; if (!fetchMoreResult) return prev;
return Object.assign({}, prev, { return Object.assign({}, prev, {
profiles: [...fetchMoreResult.profiles] profiles: [...fetchMoreResult.profiles]
}); });
} }
}) })
setOffset(offset+offset) setOffset(offset-offset)
}}>Next</Button> }} className={classnames(classes.previousButton, classes.blue)}>{'< Previous'}</Button>}
{profiles.length === OFFSET && <Button onClick={() => {
fetchMore({
variables: {
offset: offset + OFFSET
},
updateQuery: (prev, { fetchMoreResult }) => {
if (!fetchMoreResult) return prev;
return Object.assign({}, prev, {
profiles: [...fetchMoreResult.profiles]
});
}
})
setOffset(offset+OFFSET)
}} className={classnames(classes.nextButton, classes.blue)}>{'Next >'}</Button>}
<Link to={`/create-project`} className={fabStyle}> <Link to={`/create-project`} className={fabStyle}>
<Fab className={classes.fab}> <Fab className={classes.fab}>
<AddIcon className={classes.addIcon}/> <AddIcon className={classes.addIcon}/>

View File

@ -147,6 +147,12 @@ const useStyles = makeStyles(theme => ({
dateCreated: { dateCreated: {
gridColumn: '40 / 44' gridColumn: '40 / 44'
}, },
previousButton: {
gridColumn: '3 / 9'
},
nextButton: {
gridColumn: '42 / 48'
},
readMore: { readMore: {
gridColumn: '44 / 48', gridColumn: '44 / 48',
fontSize: '0.94rem', fontSize: '0.94rem',