diff --git a/jsx/src/App.jsx b/jsx/src/App.jsx index d69c53bf..3dd99642 100644 --- a/jsx/src/App.jsx +++ b/jsx/src/App.jsx @@ -26,11 +26,10 @@ const App = () => { .updateUsers(user_page * limit, limit) .then((data) => { console.log(data); - let { _pagination, items } = data, - { offset, limit } = _pagination; + let { _pagination, items } = data; store.dispatch({ type: "USER_PAGE", - value: { data: items, page: Math.floor(offset / limit) }, + value: { data: items, page: _pagination }, }); }) .catch((err) => console.log(err)); @@ -39,11 +38,10 @@ const App = () => { .updateGroups(groups_page * limit, limit) .then((data) => { console.log(data); - let { _pagination, items } = data, - { offset, limit } = _pagination; + let { _pagination, items } = data; store.dispatch({ type: "GROUPS_PAGE", - value: { data: items, page: Math.floor(offset / limit) }, + value: { data: items, page: _pagination }, }); }) .catch((err) => console.log(err)); diff --git a/jsx/src/components/Groups/Groups.jsx b/jsx/src/components/Groups/Groups.jsx index aa1a93ff..934e27a1 100644 --- a/jsx/src/components/Groups/Groups.jsx +++ b/jsx/src/components/Groups/Groups.jsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useEffect, useState } from "react"; import { useSelector, useDispatch } from "react-redux"; import PropTypes from "prop-types"; @@ -9,20 +9,27 @@ const Groups = (props) => { var user_data = useSelector((state) => state.user_data), groups_data = useSelector((state) => state.groups_data), groups_page = useSelector((state) => state.groups_page), - limit = useSelector((state) => state.limit), - dispatch = useDispatch(), - page = parseInt(new URLSearchParams(props.location.search).get("page")); + dispatch = useDispatch(); - page = isNaN(page) ? 0 : page; - var slice = [page * limit, limit]; + var [offset, setOffset] = useState(groups_page ? groups_page.offset : 0); + var limit = groups_page ? groups_page.limit : window.api_page_limit; + var total = groups_page ? groups_page.total : undefined; var { updateGroups, history } = props; - if (!groups_data || !user_data) { + console.log(groups_data, groups_page); + + useEffect(() => { + updateGroups(offset, limit).then((data) => + dispatchPageUpdate(data.items, data._pagination) + ); + }, [offset, limit]); + + if (!groups_data || !user_data || !groups_page) { return
; } - const dispatchPageChange = (data, page) => { + const dispatchPageUpdate = (data, page) => { dispatch({ type: "GROUPS_PAGE", value: { @@ -32,12 +39,6 @@ const Groups = (props) => { }); }; - if (groups_page != page) { - updateGroups(...slice).then((data) => { - dispatchPageChange(data, page); - }); - } - return (
@@ -74,11 +75,12 @@ const Groups = (props) => { )} setOffset(offset + limit)} + prev={() => setOffset(offset - limit)} />
diff --git a/jsx/src/components/PaginationFooter/PaginationFooter.jsx b/jsx/src/components/PaginationFooter/PaginationFooter.jsx index 7225ff26..34ebecd0 100644 --- a/jsx/src/components/PaginationFooter/PaginationFooter.jsx +++ b/jsx/src/components/PaginationFooter/PaginationFooter.jsx @@ -1,33 +1,32 @@ import React from "react"; -import { Link } from "react-router-dom"; import PropTypes from "prop-types"; import "./pagination-footer.css"; const PaginationFooter = (props) => { - let { endpoint, page, limit, numOffset, numElements } = props; + let { offset, limit, visible, total, next, prev } = props; return (

- Displaying {numOffset}-{numOffset + numElements} + Displaying {offset}-{offset + visible}



- {page >= 1 ? ( + {offset >= limit ? ( ) : ( )} - {numElements >= limit ? ( + {offset + visible < total ? ( ) : (