diff --git a/src/frontend/src/pages/MainPage/components/saved-components/index.tsx b/src/frontend/src/pages/MainPage/components/saved-components/index.tsx index 08efd4fa2..5f1bf4882 100644 --- a/src/frontend/src/pages/MainPage/components/saved-components/index.tsx +++ b/src/frontend/src/pages/MainPage/components/saved-components/index.tsx @@ -1,5 +1,7 @@ import { useContext, useEffect, useState } from "react"; +import PaginatorComponent from "../../../../components/PaginatorComponent"; +import { SkeletonCardComponent } from "../../../../components/skeletonCardComponent"; import { alertContext } from "../../../../contexts/alertContext"; import { AuthContext } from "../../../../contexts/authContext"; import { TabsContext } from "../../../../contexts/tabsContext"; @@ -20,6 +22,9 @@ export default function SavedComponents(): JSX.Element { const [loading, setLoading] = useState(false); const [filteredCategories, setFilteredCategories] = useState(new Set()); const { setErrorData } = useContext(alertContext); + const [totalRowsCount, setTotalRowsCount] = useState(0); + const [size, setPageSize] = useState(10); + const [index, setPageIndex] = useState(1); useEffect(() => { handleGetComponents(); @@ -27,10 +32,11 @@ export default function SavedComponents(): JSX.Element { const handleGetComponents = () => { setLoading(true); - getStoreComponents(1, 10) + getStoreComponents(index - 1, 10000) .then((res) => { - setLoading(false); + setTotalRowsCount(res.length); setData(res); + setLoading(false); }) .catch((err) => { setLoading(false); @@ -41,12 +47,37 @@ export default function SavedComponents(): JSX.Element { }); }; - const loadingWithApiKey = loading; - const renderComponents = !loading; + function handleChangePagination(pageIndex: number, pageSize: number) { + setLoading(true); + getStoreComponents(pageIndex, pageSize) + .then((res) => { + setData(res); + setPageIndex(pageIndex); + setPageSize(pageSize); + setLoading(false); + }) + .catch((err) => { + setLoading(false); + setErrorData({ + title: "Error to get components.", + list: [err["response"]["data"]["detail"]], + }); + }); + } + + const renderPagination = data.length > 0 && !loading; return ( <> - {renderComponents && ( + {loading ? ( + <> +
+ + + +
+ + ) : (
{data @@ -62,8 +93,18 @@ export default function SavedComponents(): JSX.Element {
)} - {loadingWithApiKey && ( -
Loading...
+ {renderPagination && ( +
+ { + handleChangePagination(pageIndex, pageSize); + }} + > +
)} ); diff --git a/src/frontend/src/pages/StorePage/index.tsx b/src/frontend/src/pages/StorePage/index.tsx index e5dece444..639beb37b 100644 --- a/src/frontend/src/pages/StorePage/index.tsx +++ b/src/frontend/src/pages/StorePage/index.tsx @@ -118,8 +118,6 @@ export default function StorePage(): JSX.Element { }); } - const loadingWithApiKey = loading; - const renderComponents = !loading; const renderPagination = searchData.length > 0 && !loading && !search; return ( @@ -198,7 +196,7 @@ export default function StorePage(): JSX.Element {
- {renderComponents && + {!loading && Array.from(new Set(searchData.map((i) => i.is_component))).map( (i, idx) => (
- {loadingWithApiKey ? ( + {loading ? ( <> @@ -252,7 +250,7 @@ export default function StorePage(): JSX.Element {
{renderPagination && ( -
+