Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ea6d088

Browse files
Implemented pagination in organizations's member.
1 parent fde73e9 commit ea6d088

File tree

5 files changed

+83
-32
lines changed

5 files changed

+83
-32
lines changed

‎client/packages/lowcoder/src/api/orgApi.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@ import {
1111
} from "redux/reduxActions/orgActions";
1212
import { ApiResponse, GenericApiResponse } from "./apiResponses";
1313
import {
14+
fetchGroupUserRequestType,
1415
fetchOrgUserRequestType,
1516
GenericApiPaginationResponse,
1617
GroupUsersPaginationResponse,
17-
orgGroupRequestType
18+
orgGroupRequestType,OrgUsersPaginationResponse
1819
} from "@lowcoder-ee/util/pagination/type";
1920

2021
export interface GroupUsersResponse extends ApiResponse {
@@ -98,11 +99,16 @@ export class OrgApi extends Api {
9899
return Api.get(OrgApi.fetchOrgUsersURL(orgId));
99100
}
100101

102+
static fetchOrgUsersPagination(request:fetchOrgUserRequestType): AxiosPromise<OrgUsersPaginationResponse> {
103+
const {orgId, ...res} = request;
104+
return Api.get(OrgApi.fetchOrgUsersURL(orgId), {...res});
105+
}
106+
101107
static fetchGroupUsers(groupId: string): AxiosPromise<GroupUsersResponse> {
102108
return Api.get(OrgApi.fetchGroupUsersURL(groupId));
103109
}
104110

105-
static fetchGroupUsersPagination(request: fetchOrgUserRequestType): AxiosPromise<GroupUsersPaginationResponse> {
111+
static fetchGroupUsersPagination(request: fetchGroupUserRequestType): AxiosPromise<GroupUsersPaginationResponse> {
106112
const {groupId, ...res} = request;
107113
return Api.get(OrgApi.fetchGroupUsersURL(groupId), {...res});
108114
}

‎client/packages/lowcoder/src/pages/setting/permission/orgUsersPermission.tsx

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,13 @@ import { trans, transToNode } from "i18n";
1515
import InviteDialog from "pages/common/inviteDialog";
1616
import ProfileImage from "pages/common/profileImage";
1717
import React, { useEffect, useMemo } from "react";
18-
import { connect, useDispatch, useSelector } from "react-redux";
19-
import { AppState } from "redux/reducers";
18+
import { useDispatch, useSelector } from "react-redux";
2019
import {
2120
deleteOrgUserAction,
2221
fetchOrgUsersAction,
2322
quitOrgAction,
2423
updateUserOrgRoleAction,
2524
} from "redux/reduxActions/orgActions";
26-
import { getUser } from "redux/selectors/usersSelectors";
2725
import styled from "styled-components";
2826
import { formatTimestamp } from "util/dateTimeUtils";
2927
import { currentOrgAdmin } from "util/permissionUtils";
@@ -299,17 +297,4 @@ function OrgUsersPermission(props: UsersPermissionProp) {
299297
);
300298
}
301299

302-
const mapStateToProps = (state: AppState) => {
303-
console.log({
304-
orgUsersFetching: state.ui.org.orgUsersFetching,
305-
orgUsers: state.ui.org.orgUsers,
306-
currentUser: getUser(state),
307-
})
308-
return {
309-
orgUsersFetching: state.ui.org.orgUsersFetching,
310-
orgUsers: state.ui.org.orgUsers,
311-
currentUser: getUser(state),
312-
};
313-
};
314-
315-
export default connect(mapStateToProps)(OrgUsersPermission);
300+
export default OrgUsersPermission;

‎client/packages/lowcoder/src/pages/setting/permission/permissionDetail.tsx

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ import UsersPermission from "./orgUsersPermission";
88
import { getOrgGroups } from "redux/selectors/orgSelectors";
99
import { useParams } from "react-router-dom";
1010
import { AppState } from "redux/reducers";
11-
import {fetchGroupUsrPagination} from "@lowcoder-ee/util/pagination/axios";
12-
import {OrgGroup} from "@lowcoder-ee/constants/orgConstants";
11+
import {fetchGroupUsrPagination, fetchOrgUsrPagination} from "@lowcoder-ee/util/pagination/axios";
1312
import PaginationComp from "@lowcoder-ee/util/pagination/Pagination";
1413

1514
const PermissionContent = styled.div`
@@ -27,15 +26,17 @@ const All_Users = "users";
2726
export default function PermissionSetting() { const user = useSelector(getUser);
2827

2928
const [elements, setElements] = useState<any>({ elements: [], total: 0 });
29+
const [orgMemberElements, setOrgMemberElements] = useState<any>({ elements: [], total: 0 })
3030
const [currentPage, setCurrentPage] = useState(1);
3131
const [pageSize, setPageSize] = useState(10);
3232

3333
const orgId = user.currentOrgId;
3434
const orgGroups = useSelector(getOrgGroups);
35-
const groupUsers = useSelector((state: AppState) => state.ui.org.groupUsers);
3635
const groupUsersFetching = useSelector((state: AppState) => state.ui.org.groupUsersFetching);
3736
const currentUserGroupRole = useSelector((state: AppState) => state.ui.org.currentUserGroupRole);
3837
const currentUser = useSelector(getUser);
38+
const orgUsersFetching = useSelector((state: AppState) => state.ui.org.orgUsersFetching);
39+
3940
const groupIdMap = new Map(orgGroups.map((group) => [group.groupId, group]));
4041
const dispatch = useDispatch();
4142
const selectKey = useParams<{ groupId: string }>().groupId;
@@ -60,8 +61,25 @@ export default function PermissionSetting() { const user = useSelector(getUser)
6061
}
6162
else
6263
console.error("ERROR: fetchFolderElements", result.error)
63-
})
64-
}, [currentPage, pageSize]
64+
}
65+
)
66+
else
67+
fetchOrgUsrPagination(
68+
{
69+
orgId: orgId,
70+
pageNum: currentPage,
71+
pageSize: pageSize,
72+
}
73+
).then(result => {
74+
if (result.success){
75+
setOrgMemberElements({elements: result.data || [], total: result.total || 1})
76+
}
77+
else
78+
console.error("ERROR: fetchFolderElements", result.error)
79+
}
80+
)
81+
},
82+
[currentPage, pageSize]
6583
)
6684

6785
if (!orgId) {
@@ -71,14 +89,23 @@ export default function PermissionSetting() { const user = useSelector(getUser)
7189
return (
7290
<PermissionContent key={selectKey}>
7391
{selectKey === All_Users ? (
74-
<UsersPermission orgId={orgId} />
92+
<>
93+
<UsersPermission
94+
orgId={orgId}
95+
orgUsersFetching={orgUsersFetching}
96+
// orgUsers={!orgMemberElements.elements.members ? [] : orgMemberElements.elements.members}
97+
orgUsers={orgMemberElements.elements}
98+
currentUser={currentUser}
99+
/>
100+
<PaginationComp setCurrentPage={setCurrentPage} setPageSize={setPageSize} currentPage={currentPage} pageSize={pageSize} total={orgMemberElements.total} />
101+
</>
75102
) : (
76103
groupIdMap.has(selectKey) && (
77104
<>
78105
<GroupPermission
79106
group={groupIdMap.get(selectKey)!}
80107
orgId={orgId}
81-
groupUsers={groupUsers}
108+
groupUsers={elements.elements}
82109
groupUsersFetching={groupUsersFetching}
83110
currentUserGroupRole={currentUserGroupRole}
84111
currentUser={currentUser}

‎client/packages/lowcoder/src/util/pagination/axios.ts

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
fetchAppRequestType,
55
fetchDBRequestType,
66
fetchFolderRequestType,
7+
fetchGroupUserRequestType,
78
fetchOrgUserRequestType,
89
orgGroupRequestType
910
} from "@lowcoder-ee/util/pagination/type";
@@ -79,13 +80,30 @@ export const fetchDatasourcePagination = async (request: fetchDBRequestType)=> {
7980
}
8081
}
8182

82-
export const fetchGroupUsrPagination = async (request: fetchOrgUserRequestType)=> {
83+
export const fetchGroupUsrPagination = async (request: fetchGroupUserRequestType)=> {
8384
try {
8485
const response = await OrgApi.fetchGroupUsersPagination(request);
8586
return {
8687
success: true,
87-
data: response.data.data,
88-
total: response.data.total
88+
data: response.data.data.members,
89+
total: response.data.data.total
90+
}
91+
} catch (error: any) {
92+
console.error('Failed to fetch data:', error);
93+
return {
94+
success: false,
95+
error: error
96+
};
97+
}
98+
}
99+
100+
export const fetchOrgUsrPagination = async (request: fetchOrgUserRequestType)=> {
101+
try {
102+
const response = await OrgApi.fetchOrgUsersPagination(request);
103+
return {
104+
success: true,
105+
data: response.data.data.members,
106+
total: response.data.data.total,
89107
}
90108
} catch (error: any) {
91109
console.error('Failed to fetch data:', error);
@@ -94,4 +112,4 @@ export const fetchGroupUsrPagination = async (request: fetchOrgUserRequestType)=
94112
error: error
95113
};
96114
}
97-
}
115+
}

‎client/packages/lowcoder/src/util/pagination/type.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {GroupUser} from "@lowcoder-ee/constants/orgConstants";
1+
import {GroupUser,OrgUser} from "@lowcoder-ee/constants/orgConstants";
22

33
type ApplicationType = {
44
[key: number]: string; // This allows numeric indexing
@@ -12,11 +12,20 @@ export interface GenericApiPaginationResponse<T> {
1212
data: T;
1313
}
1414
export interface GroupUsersPaginationResponse {
15-
total: number;
1615
success: boolean;
1716
data: {
1817
members: GroupUser[];
1918
visitorRole: string;
19+
total: number;
20+
};
21+
}
22+
23+
export interface OrgUsersPaginationResponse {
24+
success: boolean;
25+
data: {
26+
total: number;
27+
members: OrgUser[];
28+
visitorRole: string;
2029
};
2130
}
2231

@@ -57,6 +66,12 @@ export interface orgGroupRequestType{
5766
pageSize?: number;
5867
}
5968
export interface fetchOrgUserRequestType {
69+
orgId: string;
70+
pageNum?: number;
71+
pageSize?: number;
72+
}
73+
74+
export interface fetchGroupUserRequestType {
6075
groupId: string;
6176
pageNum?: number;
6277
pageSize?: number;

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /