diff --git a/frontend/src/components/paginator.js b/frontend/src/components/paginator.js index a7f0d3449f..954a0926fa 100644 --- a/frontend/src/components/paginator.js +++ b/frontend/src/components/paginator.js @@ -39,15 +39,18 @@ class Paginator extends Component { {this.props.hasNextPage && {gettext('Next')} } - - {this.props.canResetPerPage && -
- {gettext('Per page:')}{' '} - {return this.resetPerPage(25);}}>25 + {(this.props.currentPage != 1 || this.props.hasNextPage) && + | + } + {this.props.canResetPerPage && + + {gettext('Per page:')} + {return this.resetPerPage(25);}}>25 {return this.resetPerPage(50);}}>50 - {return this.resetPerPage(100);}}>100 -
- } + {return this.resetPerPage(100);}}>100 + + } + ); } diff --git a/frontend/src/pages/sys-admin/orgs/orgs-content.js b/frontend/src/pages/sys-admin/orgs/orgs-content.js index 4a563c1610..791e3cb84e 100644 --- a/frontend/src/pages/sys-admin/orgs/orgs-content.js +++ b/frontend/src/pages/sys-admin/orgs/orgs-content.js @@ -5,6 +5,7 @@ import { Utils } from '../../../utils/utils'; import { siteRoot, gettext } from '../../../utils/constants'; import EmptyTip from '../../../components/empty-tip'; import Loading from '../../../components/loading'; +import Paginator from '../../../components/paginator'; import SysAdminUserRoleEditor from '../../../components/select-editor/sysadmin-user-role-editor'; import CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog'; import UserLink from '../user-link'; @@ -17,6 +18,14 @@ class Content extends Component { super(props); } + getPreviousPage = () => { + this.props.getListByPage(this.props.currentPage - 1); + } + + getNextPage = () => { + this.props.getListByPage(this.props.currentPage + 1); + } + render() { const { loading, errorMsg, items } = this.props; if (loading) { @@ -53,6 +62,17 @@ class Content extends Component { })} + {this.props.currentPage && + + } ); return items.length ? table : emptyTip; diff --git a/frontend/src/pages/sys-admin/orgs/orgs.js b/frontend/src/pages/sys-admin/orgs/orgs.js index d1eb5b9c07..a4a1cb674b 100644 --- a/frontend/src/pages/sys-admin/orgs/orgs.js +++ b/frontend/src/pages/sys-admin/orgs/orgs.js @@ -19,15 +19,25 @@ class Orgs extends Component { loading: true, errorMsg: '', orgList: [], + currentPage: 1, + perPage: 25, + hasNextPage: false, isAddOrgDialogOpen: false }; } - componentDidMount () { - seafileAPI.sysAdminListOrgs().then((res) => { + componentDidMount() { + this.getItemsByPage(1); + } + + getItemsByPage = (page) => { + const { perPage } = this.state; + seafileAPI.sysAdminListOrgs(page, perPage).then((res) => { this.setState({ loading: false, - orgList: res.data.organizations + orgList: res.data.organizations, + currentPage: page, + hasNextPage: Utils.hasNextPage(page, perPage, res.data.total_count) }); }).catch((error) => { if (error.response) { @@ -52,6 +62,14 @@ class Orgs extends Component { }); } + resetPerPage = (perPage) => { + this.setState({ + perPage: perPage + }, () => { + this.getItemsByPage(1); + }); + } + toggleAddOrgDialog = () => { this.setState({isAddOrgDialogOpen: !this.state.isAddOrgDialogOpen}); } @@ -127,6 +145,11 @@ class Orgs extends Component { loading={this.state.loading} errorMsg={this.state.errorMsg} items={this.state.orgList} + currentPage={this.state.currentPage} + hasNextPage={this.state.hasNextPage} + curPerPage={this.state.perPage} + resetPerPage={this.resetPerPage} + getListByPage={this.getItemsByPage} updateRole={this.updateRole} deleteOrg={this.deleteOrg} /> diff --git a/frontend/src/pages/sys-admin/users/users.js b/frontend/src/pages/sys-admin/users/users.js index 63f1d8e0b0..2be7c5e08d 100644 --- a/frontend/src/pages/sys-admin/users/users.js +++ b/frontend/src/pages/sys-admin/users/users.js @@ -27,7 +27,6 @@ class Users extends Component { loading: true, errorMsg: '', userList: [], - totalItemCount: 0, hasNextPage: false, currentPage: 1, perPage: 25,