-
+
diff --git a/frontend/src/pages/sys-admin/repos/all-repos.js b/frontend/src/pages/sys-admin/repos/all-repos.js
index 386fe6089c..d59e8ed111 100644
--- a/frontend/src/pages/sys-admin/repos/all-repos.js
+++ b/frontend/src/pages/sys-admin/repos/all-repos.js
@@ -155,14 +155,16 @@ class AllRepos extends Component {
-
+
-
+
{
+ const [sortBy,] = item.value.split('-');
+ this.props.sortItems(sortBy);
+ };
+
render() {
- const { currentItem } = this.props;
+ const { currentItem, sortBy, sortOrder = 'desc' } = this.props;
+ const showSortIcon = currentItem == 'all' || currentItem == 'wikis';
return (
@@ -32,6 +45,14 @@ class Nav extends React.Component {
);
})}
+ {showSortIcon &&
+
+ }
);
}
diff --git a/frontend/src/pages/sys-admin/repos/repos.js b/frontend/src/pages/sys-admin/repos/repos.js
index d48ab880cd..40a0141d42 100644
--- a/frontend/src/pages/sys-admin/repos/repos.js
+++ b/frontend/src/pages/sys-admin/repos/repos.js
@@ -43,19 +43,8 @@ class Content extends Component {
this.props.getListByPage(this.props.pageInfo.current_page + 1);
};
- sortByFileCount = (e) => {
- e.preventDefault();
- this.props.sortItems('file_count');
- };
-
- sortBySize = (e) => {
- e.preventDefault();
- this.props.sortItems('size');
- };
-
render() {
- // offer 'sort' only for 'all repos'
- const { loading, errorMsg, items, pageInfo, curPerPage, sortBy } = this.props;
+ const { loading, errorMsg, items, pageInfo, curPerPage } = this.props;
if (loading) {
return ;
} else if (errorMsg) {
@@ -65,8 +54,6 @@ class Content extends Component {
);
- const initialSortIcon = ;
- const sortIcon = ;
const table = (
@@ -74,20 +61,10 @@ class Content extends Component {
{/* icon*/} |
{gettext('Name')} |
-
- {sortBy != undefined ?
-
- {gettext('Files')} {sortBy == 'file_count' ? sortIcon : initialSortIcon}{' / '}
- {gettext('Size')} {sortBy == 'size' ? sortIcon : initialSortIcon}
- :
- <>{gettext('Files')}{' / '}{gettext('Size')}>
- }
- |
-
- ID |
- {gettext('Owner')} |
- {/* Operations*/} |
-
+ {gettext('Files')} / {gettext('Size')} |
+ ID |
+ {gettext('Owner')} |
+ {/* Operations*/} |
@@ -134,8 +111,6 @@ Content.propTypes = {
resetPerPage: PropTypes.func,
pageInfo: PropTypes.object,
curPerPage: PropTypes.number,
- sortItems: PropTypes.func,
- sortBy: PropTypes.string,
onTransferRepo: PropTypes.func.isRequired,
};
diff --git a/frontend/src/pages/sys-admin/users/users-content.js b/frontend/src/pages/sys-admin/users/users-content.js
index 669b77325d..af4bacfed7 100644
--- a/frontend/src/pages/sys-admin/users/users-content.js
+++ b/frontend/src/pages/sys-admin/users/users-content.js
@@ -57,8 +57,7 @@ class Content extends Component {
render() {
const {
isAdmin, loading, errorMsg, items, isAllUsersSelected,
- curPerPage, hasNextPage, currentPage,
- sortBy, sortOrder
+ curPerPage, hasNextPage, currentPage
} = this.props;
if (loading) {
@@ -68,20 +67,7 @@ class Content extends Component {
} else {
let columns = [];
- let sortIcon;
- if (sortBy == '') {
- // initial sort icon
- sortIcon = ;
- } else {
- sortIcon = ;
- }
- const spaceText = gettext('Space Used');
- const spaceEl =
- sortBy != undefined ? // only offer 'sort' for 'DB' & 'LDAPImported' users
- {spaceText} {sortIcon} :
- spaceText;
- const colSpaceText = {spaceEl}{` / ${gettext('Quota')}`};
-
+ const colSpaceText = `${gettext('Space Used')} / ${gettext('Quota')}`;
const colNameText = `${gettext('Name')} / ${gettext('Contact Email')}`;
const colCreatedText = `${gettext('Created At')} / ${gettext('Last Login')} / ${gettext('Last Access')}`;
if (isPro) {
diff --git a/frontend/src/pages/sys-admin/users/users-nav.js b/frontend/src/pages/sys-admin/users/users-nav.js
index 130925a5b6..d827f2d991 100644
--- a/frontend/src/pages/sys-admin/users/users-nav.js
+++ b/frontend/src/pages/sys-admin/users/users-nav.js
@@ -2,9 +2,13 @@ import React from 'react';
import PropTypes from 'prop-types';
import { Link } from '@gatsbyjs/reach-router';
import { siteRoot, gettext, haveLDAP, isDefaultAdmin } from '../../../utils/constants';
+import SortMenu from '../../../components/sort-menu';
const propTypes = {
- currentItem: PropTypes.string.isRequired
+ currentItem: PropTypes.string.isRequired,
+ sortBy: PropTypes.string,
+ sortOrder: PropTypes.string,
+ sortItems: PropTypes.func
};
class Nav extends React.Component {
@@ -25,10 +29,21 @@ class Nav extends React.Component {
{ name: 'admin', urlPart: 'users/admins', text: gettext('Admin') }
);
}
+
+ this.sortOptions = [
+ { value: 'quota_usage-asc', text: gettext('Ascending by space used') },
+ { value: 'quota_usage-desc', text: gettext('Descending by space used') }
+ ];
}
+ onSelectSortOption = (item) => {
+ const [sortBy, sortOrder] = item.value.split('-');
+ this.props.sortItems(sortBy, sortOrder);
+ };
+
render() {
- const { currentItem } = this.props;
+ const { currentItem, sortBy, sortOrder } = this.props;
+ const showSortIcon = currentItem == 'database' || currentItem == 'ldap-imported';
return (
@@ -40,6 +55,14 @@ class Nav extends React.Component {
);
})}
+ {showSortIcon &&
+
+ }
);
}
diff --git a/frontend/src/pages/sys-admin/users/users.js b/frontend/src/pages/sys-admin/users/users.js
index 2d74ecd774..91e7a722aa 100644
--- a/frontend/src/pages/sys-admin/users/users.js
+++ b/frontend/src/pages/sys-admin/users/users.js
@@ -227,10 +227,10 @@ class Users extends Component {
});
};
- sortByQuotaUsage = () => {
+ sortByQuotaUsage = (sortBy, sortOrder) => {
this.setState({
- sortBy: 'quota_usage',
- sortOrder: this.state.sortOrder == 'asc' ? 'desc' : 'asc',
+ sortBy: sortBy,
+ sortOrder: sortOrder,
currentPage: 1
}, () => {
const { currentPage, perPage, sortBy, sortOrder } = this.state;
@@ -504,7 +504,12 @@ class Users extends Component {
-
+
{curTab == 'database' &&