Skip to content

Commit 580bc9f

Browse files
committed
Implemented pagination in organizations's member.
1 parent 0ec1143 commit 580bc9f

File tree

5 files changed

+84
-27
lines changed

5 files changed

+84
-27
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: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -299,17 +299,4 @@ function OrgUsersPermission(props: UsersPermissionProp) {
299299
);
300300
}
301301

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);
302+
export default OrgUsersPermission;

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

Lines changed: 36 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,18 @@ 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+
const orgUsers = useSelector((state: AppState) => state.ui.org.orgUsers);
40+
3941
const groupIdMap = new Map(orgGroups.map((group) => [group.groupId, group]));
4042
const dispatch = useDispatch();
4143
const selectKey = useParams<{ groupId: string }>().groupId;
@@ -60,25 +62,52 @@ export default function PermissionSetting() { const user = useSelector(getUser)
6062
}
6163
else
6264
console.error("ERROR: fetchFolderElements", result.error)
63-
})
64-
}, [currentPage, pageSize]
65+
}
66+
)
67+
else
68+
fetchOrgUsrPagination(
69+
{
70+
orgId: orgId,
71+
pageNum: currentPage,
72+
pageSize: pageSize,
73+
}
74+
).then(result => {
75+
if (result.success){
76+
setOrgMemberElements({elements: result.data || [], total: result.total || 1})
77+
}
78+
else
79+
console.error("ERROR: fetchFolderElements", result.error)
80+
}
81+
)
82+
},
83+
[currentPage, pageSize]
6584
)
6685

6786
if (!orgId) {
6887
return null;
6988
}
89+
console.log(orgMemberElements.total, elements);
7090

7191
return (
7292
<PermissionContent key={selectKey}>
7393
{selectKey === All_Users ? (
74-
<UsersPermission orgId={orgId} />
94+
<>
95+
<UsersPermission
96+
orgId={orgId}
97+
orgUsersFetching={orgUsersFetching}
98+
// orgUsers={!orgMemberElements.elements.members ? [] : orgMemberElements.elements.members}
99+
orgUsers={orgMemberElements.elements}
100+
currentUser={currentUser}
101+
/>
102+
<PaginationComp setCurrentPage={setCurrentPage} setPageSize={setPageSize} currentPage={currentPage} pageSize={pageSize} total={orgMemberElements.total} />
103+
</>
75104
) : (
76105
groupIdMap.has(selectKey) && (
77106
<>
78107
<GroupPermission
79108
group={groupIdMap.get(selectKey)!}
80109
orgId={orgId}
81-
groupUsers={groupUsers}
110+
groupUsers={!elements.elements.members ? [] : elements.elements.members}
82111
groupUsersFetching={groupUsersFetching}
83112
currentUserGroupRole={currentUserGroupRole}
84113
currentUser={currentUser}

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

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
fetchAppRequestType,
55
fetchDBRequestType,
66
fetchFolderRequestType,
7-
fetchOrgUserRequestType,
7+
fetchGroupUserRequestType, fetchOrgUserRequestType,
88
orgGroupRequestType
99
} from "@lowcoder-ee/util/pagination/type";
1010
import OrgApi from "@lowcoder-ee/api/orgApi";
@@ -79,9 +79,10 @@ export const fetchDatasourcePagination = async (request: fetchDBRequestType)=> {
7979
}
8080
}
8181

82-
export const fetchGroupUsrPagination = async (request: fetchOrgUserRequestType)=> {
82+
export const fetchGroupUsrPagination = async (request: fetchGroupUserRequestType)=> {
8383
try {
8484
const response = await OrgApi.fetchGroupUsersPagination(request);
85+
console.log("response", response);
8586
return {
8687
success: true,
8788
data: response.data.data,
@@ -94,4 +95,21 @@ export const fetchGroupUsrPagination = async (request: fetchOrgUserRequestType)=
9495
error: error
9596
};
9697
}
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,
107+
}
108+
} catch (error: any) {
109+
console.error('Failed to fetch data:', error);
110+
return {
111+
success: false,
112+
error: error
113+
};
114+
}
115+
}

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import {GroupUser} from "@lowcoder-ee/constants/orgConstants";
1+
import {GroupUser, OrgUser} from "@lowcoder-ee/constants/orgConstants";
2+
import {ApiResponse} from "@lowcoder-ee/api/apiResponses";
23

34
type ApplicationType = {
45
[key: number]: string; // This allows numeric indexing
@@ -20,6 +21,16 @@ export interface GroupUsersPaginationResponse {
2021
};
2122
}
2223

24+
export interface OrgUsersPaginationResponse {
25+
total: number;
26+
success: boolean;
27+
data: {
28+
total: number;
29+
members: OrgUser[];
30+
visitorRole: string;
31+
};
32+
}
33+
2334
export const ApplicationPaginationType: ApplicationType = {
2435
0: "",
2536
1: "APPLICATION",
@@ -57,6 +68,12 @@ export interface orgGroupRequestType{
5768
pageSize?: number;
5869
}
5970
export interface fetchOrgUserRequestType {
71+
orgId: string;
72+
pageNum?: number;
73+
pageSize?: number;
74+
}
75+
76+
export interface fetchGroupUserRequestType {
6077
groupId: string;
6178
pageNum?: number;
6279
pageSize?: number;

0 commit comments

Comments
 (0)