✨ Add basic pagination in log view

This commit is contained in:
Nikolai R Kristiansen committed 2022-02-05 22:23:24 +01:00
1 parent e240eda1cb
commit aead00a893
3 files changed
+84 -322

No files matched your search

+66 -2
View File
@@ -1,17 +1,33 @@
import { useQuery } from "@apollo/client";
import clsx from "clsx";
import { parseISO, format } from "date-fns";
import React from "react";
import { useUrlSearchParams } from "use-url-search-params";
import { Order, OrderLine, OrderListDocument, Transaction, TransactionListDocument } from "../../types";
import styles from "./Log.module.css";
const formatTime = (isoDateTime: string): string => format(parseISO(isoDateTime), "yyyy-MM-dd HH:mm");
const PAGE_SIZE = 10;
export const Log = () => {
const { data: ordersData, loading: ordersLoading } = useQuery(OrderListDocument);
const { data: transactionsData, loading: transactionsLoading } = useQuery(TransactionListDocument);
const types = {
orderOffset: Number,
transactionOffset: Number,
};
const [params, setParams] = useUrlSearchParams({}, types);
const { data: ordersData, loading: ordersLoading } = useQuery(OrderListDocument, {
variables: { offset: params.orderOffset },
});
const { data: transactionsData, loading: transactionsLoading } = useQuery(TransactionListDocument, {
variables: { offset: params.transactionOffset },
});
const loading = ordersLoading || transactionsLoading;
const orderOffset = params.orderOffset || 0;
const transactionOffset = params.transactionOffset || 0;
if (loading) return <div>Loading...</div>;
const { orderList: orders } = ordersData;
@@ -47,6 +63,30 @@ export const Log = () => {
))}
</tbody>
</table>
<nav aria-label="Order pagination">
<ul className="pagination">
<li className={clsx("page-item", { disabled: orderOffset <= 0 })}>
<a
className="page-link"
onClick={() => {
setParams({ orderOffset: orderOffset - PAGE_SIZE });
}}
>
Previous
</a>
</li>
<li className="page-item">
<a
className="page-link"
onClick={() => {
setParams({ orderOffset: orderOffset + PAGE_SIZE });
}}
>
Next
</a>
</li>
</ul>
</nav>
</div>
<div>
<h2>Transaksjoner</h2>
@@ -70,6 +110,30 @@ export const Log = () => {
))}
</tbody>
</table>
<nav aria-label="Transaction pagination">
<ul className="pagination">
<li className={clsx("page-item", { disabled: transactionOffset <= 0 })}>
<a
className="page-link"
onClick={() => {
setParams({ transactionOffset: transactionOffset - PAGE_SIZE });
}}
>
Previous
</a>
</li>
<li className="page-item">
<a
className="page-link"
onClick={() => {
setParams({ transactionOffset: transactionOffset + PAGE_SIZE });
}}
>
Next
</a>
</li>
</ul>
</nav>
</div>
</div>
);