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 fde73e9

Browse files
Implemented pagination in groupUsersPermission.
1 parent cd7494b commit fde73e9

File tree

5 files changed

+102
-28
lines changed

5 files changed

+102
-28
lines changed

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@ import {
1010
UpdateUserOrgRolePayload,
1111
} from "redux/reduxActions/orgActions";
1212
import { ApiResponse, GenericApiResponse } from "./apiResponses";
13-
import {GenericApiPaginationResponse, orgGroupRequestType} from "@lowcoder-ee/util/pagination/type";
13+
import {
14+
fetchOrgUserRequestType,
15+
GenericApiPaginationResponse,
16+
GroupUsersPaginationResponse,
17+
orgGroupRequestType
18+
} from "@lowcoder-ee/util/pagination/type";
1419

1520
export interface GroupUsersResponse extends ApiResponse {
1621
data: {
@@ -97,6 +102,11 @@ export class OrgApi extends Api {
97102
return Api.get(OrgApi.fetchGroupUsersURL(groupId));
98103
}
99104

105+
static fetchGroupUsersPagination(request: fetchOrgUserRequestType): AxiosPromise<GroupUsersPaginationResponse> {
106+
const {groupId, ...res} = request;
107+
return Api.get(OrgApi.fetchGroupUsersURL(groupId), {...res});
108+
}
109+
100110
static deleteGroupUser(request: RemoveGroupUserPayload): AxiosPromise<ApiResponse> {
101111
return Api.delete(OrgApi.deleteGroupUserURL(request.groupId), {
102112
userId: request.userId,

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

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@ import { AddIcon, ArrowIcon, CustomSelect, PackUpIcon, SuperUserIcon } from "low
44
import { trans } from "i18n";
55
import ProfileImage from "pages/common/profileImage";
66
import React, { useEffect, useMemo } from "react";
7-
import { connect, useDispatch } from "react-redux";
8-
import { AppState } from "redux/reducers";
7+
import { useDispatch } from "react-redux";
98
import {
109
deleteGroupUserAction,
1110
fetchGroupUsersAction,
1211
quitGroupAction,
1312
updateUserGroupRoleAction,
1413
} from "redux/reduxActions/orgActions";
15-
import { getUser } from "redux/selectors/usersSelectors";
1614
import styled from "styled-components";
1715
import { formatTimestamp } from "util/dateTimeUtils";
1816
import { currentOrgAdmin, isGroupAdmin } from "util/permissionUtils";
@@ -208,13 +206,4 @@ function GroupUsersPermission(props: GroupPermissionProp) {
208206
);
209207
}
210208

211-
const mapStateToProps = (state: AppState) => {
212-
return {
213-
groupUsers: state.ui.org.groupUsers,
214-
groupUsersFetching: state.ui.org.groupUsersFetching,
215-
currentUser: getUser(state),
216-
currentUserGroupRole: state.ui.org.currentUserGroupRole,
217-
};
218-
};
219-
220-
export default connect(mapStateToProps)(GroupUsersPermission);
209+
export default GroupUsersPermission;
Lines changed: 56 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1-
import {useEffect} from "react";
1+
import React,{useEffect,useState} from "react";
22
import { useDispatch, useSelector } from "react-redux";
33
import { fetchGroupsAction } from "redux/reduxActions/orgActions";
44
import { getUser } from "redux/selectors/usersSelectors";
55
import styled from "styled-components";
66
import GroupPermission from "./groupUsersPermission";
77
import UsersPermission from "./orgUsersPermission";
88
import { getOrgGroups } from "redux/selectors/orgSelectors";
9-
import { useParams } from "react-router";
9+
import { useParams } from "react-router-dom";
10+
import { AppState } from "redux/reducers";
11+
import {fetchGroupUsrPagination} from "@lowcoder-ee/util/pagination/axios";
12+
import {OrgGroup} from "@lowcoder-ee/constants/orgConstants";
13+
import PaginationComp from "@lowcoder-ee/util/pagination/Pagination";
1014

1115
const PermissionContent = styled.div`
1216
display: flex;
@@ -20,10 +24,18 @@ const PermissionContent = styled.div`
2024

2125
const All_Users = "users";
2226

23-
export default function PermissionSetting() {
24-
const user = useSelector(getUser);
27+
export default function PermissionSetting() { const user = useSelector(getUser);
28+
29+
const [elements, setElements] = useState<any>({ elements: [], total: 0 });
30+
const [currentPage, setCurrentPage] = useState(1);
31+
const [pageSize, setPageSize] = useState(10);
32+
2533
const orgId = user.currentOrgId;
2634
const orgGroups = useSelector(getOrgGroups);
35+
const groupUsers = useSelector((state: AppState) => state.ui.org.groupUsers);
36+
const groupUsersFetching = useSelector((state: AppState) => state.ui.org.groupUsersFetching);
37+
const currentUserGroupRole = useSelector((state: AppState) => state.ui.org.currentUserGroupRole);
38+
const currentUser = useSelector(getUser);
2739
const groupIdMap = new Map(orgGroups.map((group) => [group.groupId, group]));
2840
const dispatch = useDispatch();
2941
const selectKey = useParams<{ groupId: string }>().groupId;
@@ -33,19 +45,49 @@ export default function PermissionSetting() {
3345
}
3446
dispatch(fetchGroupsAction(orgId));
3547
}, [orgId]);
48+
49+
useEffect( () => {
50+
if (selectKey !== "users")
51+
fetchGroupUsrPagination(
52+
{
53+
groupId: groupIdMap.get(selectKey)!.groupId,
54+
pageNum: currentPage,
55+
pageSize: pageSize,
56+
}
57+
).then(result => {
58+
if (result.success){
59+
setElements({elements: result.data || [], total: result.total || 1})
60+
}
61+
else
62+
console.error("ERROR: fetchFolderElements", result.error)
63+
})
64+
}, [currentPage, pageSize]
65+
)
66+
3667
if (!orgId) {
3768
return null;
3869
}
3970

4071
return (
41-
<PermissionContent key={selectKey}>
42-
{selectKey === All_Users ? (
43-
<UsersPermission orgId={orgId} />
44-
) : (
45-
groupIdMap.has(selectKey) && (
46-
<GroupPermission group={groupIdMap.get(selectKey)!} orgId={orgId} />
47-
)
48-
)}
49-
</PermissionContent>
72+
<PermissionContent key={selectKey}>
73+
{selectKey === All_Users ? (
74+
<UsersPermission orgId={orgId} />
75+
) : (
76+
groupIdMap.has(selectKey) && (
77+
<>
78+
<GroupPermission
79+
group={groupIdMap.get(selectKey)!}
80+
orgId={orgId}
81+
groupUsers={groupUsers}
82+
groupUsersFetching={groupUsersFetching}
83+
currentUserGroupRole={currentUserGroupRole}
84+
currentUser={currentUser}
85+
/>
86+
<PaginationComp setCurrentPage={setCurrentPage} setPageSize={setPageSize} currentPage={currentPage} pageSize={pageSize} total={elements.total} />
87+
</>
88+
89+
)
90+
)}
91+
</PermissionContent>
5092
);
51-
}
93+
}

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
fetchAppRequestType,
55
fetchDBRequestType,
66
fetchFolderRequestType,
7+
fetchOrgUserRequestType,
78
orgGroupRequestType
89
} from "@lowcoder-ee/util/pagination/type";
910
import OrgApi from "@lowcoder-ee/api/orgApi";
@@ -76,4 +77,21 @@ export const fetchDatasourcePagination = async (request: fetchDBRequestType)=> {
7677
error: error
7778
};
7879
}
80+
}
81+
82+
export const fetchGroupUsrPagination = async (request: fetchOrgUserRequestType)=> {
83+
try {
84+
const response = await OrgApi.fetchGroupUsersPagination(request);
85+
return {
86+
success: true,
87+
data: response.data.data,
88+
total: response.data.total
89+
}
90+
} catch (error: any) {
91+
console.error('Failed to fetch data:', error);
92+
return {
93+
success: false,
94+
error: error
95+
};
96+
}
7997
}

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import {GroupUser} from "@lowcoder-ee/constants/orgConstants";
2+
13
type ApplicationType = {
24
[key: number]: string; // This allows numeric indexing
35
};
@@ -9,6 +11,14 @@ export interface GenericApiPaginationResponse<T> {
911
message: string;
1012
data: T;
1113
}
14+
export interface GroupUsersPaginationResponse {
15+
total: number;
16+
success: boolean;
17+
data: {
18+
members: GroupUser[];
19+
visitorRole: string;
20+
};
21+
}
1222

1323
export const ApplicationPaginationType: ApplicationType = {
1424
0: "",
@@ -46,3 +56,8 @@ export interface orgGroupRequestType{
4656
pageNum?: number;
4757
pageSize?: number;
4858
}
59+
export interface fetchOrgUserRequestType {
60+
groupId: string;
61+
pageNum?: number;
62+
pageSize?: number;
63+
}

0 commit comments

Comments
(0)

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