Skip to content

Commit 34ce989

Browse files
committed
Fixed pagination of folders and UI.
1 parent b332980 commit 34ce989

File tree

5 files changed

+73
-14
lines changed

5 files changed

+73
-14
lines changed

client/packages/lowcoder/src/api/folderApi.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ export class FolderApi extends Api {
4848
static fetchFolderElementsPagination(
4949
request: fetchFolderRequestType
5050
): AxiosPromise<GenericApiPaginationResponse<(ApplicationMeta | FolderMeta)[]>> {
51-
return Api.get(FolderApi.url + `/elements`, { ...request });
51+
const {id, ...res} = request
52+
return request.id ? Api.get(FolderApi.url + `/elements`,{id: id, ...res}) : Api.get(FolderApi.url + `/elements`, { ...request });
5253
}
5354
}

client/packages/lowcoder/src/pages/ApplicationV2/FolderView.tsx

Lines changed: 67 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ import { useDispatch, useSelector } from "react-redux";
22
import { useParams } from "react-router-dom";
33
import { HomeBreadcrumbType, HomeLayout } from "./HomeLayout";
44
import {useEffect, useState} from "react";
5-
import { fetchFolderElements } from "../../redux/reduxActions/folderActions";
6-
import { FolderMeta } from "../../constants/applicationConstants";
5+
import {ApplicationMeta, FolderMeta} from "../../constants/applicationConstants";
76
import { buildFolderUrl } from "../../constants/routesURL";
87
import { folderElementsSelector, foldersSelector } from "../../redux/selectors/folderSelector";
98
import { Helmet } from "react-helmet";
109
import { trans } from "i18n";
10+
import {ApplicationPaginationType} from "@lowcoder-ee/util/pagination/type";
11+
import {fetchFolderElements} from "@lowcoder-ee/util/pagination/axios";
1112

1213
function getBreadcrumbs(
1314
folder: FolderMeta,
@@ -30,13 +31,25 @@ function getBreadcrumbs(
3031
return breadcrumb;
3132
}
3233

34+
interface ElementsState {
35+
elements: ApplicationMeta[];
36+
total: number;
37+
}
38+
3339
export function FolderView() {
3440
const { folderId } = useParams<{ folderId: string }>();
3541

42+
const [elements, setElements] = useState<ElementsState>({ elements: [], total: 0 });
43+
const [currentPage, setCurrentPage] = useState(1);
44+
const [pageSize, setPageSize] = useState(10);
45+
const [searchValues, setSearchValues] = useState("");
46+
const [typeFilter, setTypeFilter] = useState<number>(0);
47+
const [modify, setModify] = useState(true);
48+
const [searchValue, setSearchValue] = useState("");
49+
3650
const dispatch = useDispatch();
37-
const [searchValue, setSearchValue] = useState("")
3851

39-
const elements = useSelector(folderElementsSelector);
52+
const element = useSelector(folderElementsSelector);
4053
const allFolders = useSelector(foldersSelector);
4154

4255
const folder = allFolders.filter((f) => f.folderId === folderId)[0] || {};
@@ -47,16 +60,60 @@ export function FolderView() {
4760
},
4861
]);
4962

50-
useEffect(() => {
51-
setTimeout(() => {
52-
dispatch(fetchFolderElements({ folderId: folderId }));
53-
}, 100);
54-
}, [folderId]);
63+
useEffect( () => {
64+
try{
65+
fetchFolderElements({
66+
id: folderId,
67+
pageNum:currentPage,
68+
pageSize:pageSize,
69+
applicationType: ApplicationPaginationType[typeFilter],
70+
name: searchValues,
71+
}).then(
72+
(data: any) => {
73+
if (data.success) {
74+
setElements({elements: data.data || [], total: data.total || 1})
75+
}
76+
else
77+
console.error("ERROR: fetchFolderElements", data.error)
78+
}
79+
);
80+
} catch (error) {
81+
console.error('Failed to fetch data:', error);
82+
}
83+
}, [currentPage, pageSize, searchValues, typeFilter, modify]);
84+
85+
useEffect( () => {
86+
if (searchValues !== "")
87+
setCurrentPage(1);
88+
}, [searchValues]
89+
);
90+
91+
useEffect(()=> {
92+
const timer = setTimeout(() => {
93+
if (searchValue.length > 2 || searchValue === "")
94+
setSearchValues(searchValue)
95+
}, 500);
96+
return () => clearTimeout(timer);
97+
}, [searchValue])
5598

5699
return (
57100
<>
58101
<Helmet>{<title>{trans("home.yourFolders")}</title>}</Helmet>
59-
<HomeLayout elements={elements[folderId]} mode={"folder"} breadcrumb={breadcrumbs} setSearchValue={setSearchValue} searchValue={searchValue} />
102+
<HomeLayout
103+
elements={elements.elements}
104+
mode={"folder"}
105+
breadcrumb={breadcrumbs}
106+
currentPage ={currentPage}
107+
setCurrentPage={setCurrentPage}
108+
pageSize={pageSize}
109+
setPageSize={setPageSize}
110+
total={elements.total}
111+
setSearchValue={setSearchValue}
112+
searchValue={searchValue}
113+
setTypeFilterPagination={setTypeFilter}
114+
setModify={setModify}
115+
modify={modify}
116+
/>
60117
</>
61118
);
62119
}

client/packages/lowcoder/src/pages/ApplicationV2/HomeLayout.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ const EmptyView = styled.div`
203203
const PaginationLayout = styled.div`
204204
display: flex;
205205
justify-content: center;
206-
margin-top: -20px;
206+
margin-top: 20px;
207207
margin-bottom: 20px;
208208
`
209209

@@ -363,7 +363,7 @@ export function HomeLayout(props: HomeLayoutProps) {
363363
const isSelfHost = window.location.host !== 'app.lowcoder.cloud';
364364
const [typeFilter, setTypeFilter] = useState<HomeResKey>("All");
365365
const [categoryFilter, setCategoryFilter] = useState<ApplicationCategoriesEnum | "All">("All");
366-
const [visibility, setVisibility] = useState(mode === "view" || mode === "trash");
366+
const [visibility, setVisibility] = useState(mode === "view" || mode === "trash" || mode === "folder");
367367
const [layout, setLayout] = useState<HomeLayoutType>(
368368
checkIsMobile(window.innerWidth) ? "card" : getHomeLayout()
369369
);

client/packages/lowcoder/src/pages/ApplicationV2/HomeTableView.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export const HomeTableView = (props: { resources: HomeRes[], setModify?: any, mo
7979
return (
8080
<>
8181
<Table
82-
style={{ padding: "0 24px 80px", color: "#8B8FA3" }}
82+
style={{ padding: "0 24px 60px", color: "#8B8FA3" }}
8383
tableLayout={"auto"}
8484
scroll={{ x: "100%" }}
8585
pagination={false}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export interface fetchAppRequestType {
5656
}
5757

5858
export interface fetchFolderRequestType {
59+
id?: string;
5960
pageNum?: number;
6061
pageSize?: number;
6162
name?: string;

0 commit comments

Comments
 (0)