import React, { useState, useEffect, useCallback, useMemo, useRef } from 'react'
import {
Table, Thead, Th, Tbody, Tr, Td,
Heading,
Text,
Stack,
Skeleton,
Box,
Tag,
VisuallyHidden
} from '@chakra-ui/react'
import { Link } from 'react-router-dom'
import moment from 'moment'
import { Order } from 'Order';
import { useOrders } from 'hooks';
import { OrderDatePicker, OrderSearchBar, OrderStatusMenu, tagColorMap } from './index'
const OrderRow = ({
order: {
id,
orderTrackingCode,
orderStatus,
orderCreatedAt, orderUpdatedAt,
customerEmailAddress,
orderItems
}
}: { order: Order }) => {
return (
{id} |
{orderStatus} |
{orderItems.length} item{orderItems.length > 1 && "s"} |
{customerEmailAddress} |
{moment(orderUpdatedAt).calendar()} |
{moment(orderCreatedAt).calendar()} |
{orderTrackingCode} |
)
}
const OrdersPage = () => {
const {
status,
orders,
error,
ResStatus,
pagFilters, setPagFilters,
dateFilters, setDateFilters,
searchFilters, setSearchFilters,
statusFilters, setStatusFilters
} = useOrders()
const tableHeaders = ['Order #', 'Status', 'Item Count', 'Customer email', 'Updated at', 'Created at', 'Tracking #']
const isLoading = useMemo(() => status === ResStatus.FETCHING, [status])
const $loader = useRef();
// const handleObserver = (entities: any) => {
// const target = entities[0];
// if (target.isIntersecting && !isLoading) {
// setPagFilters((prev: any) => ({...prev, page: prev.page + 1}))
// }
// }
// useEffect(() => {
// var options = {
// root: null,
// rootMargin: "20px",
// threshold: 1.0
// };
// // initialize IntersectionObserver
// // and attaching to Load More div
// const observer = new IntersectionObserver(handleObserver, options);
// if ($loader.current) {
// observer.observe($loader.current)
// }
// }, []);
return (
Orders
{tableHeaders.map((headerText, idx) => (
{headerText}
|
))}
{orders.map(order => )}
)
}
export default OrdersPage