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,