import { useDealPageContext } from "../../../contexts/DealPageContext.tsx"; import { Accordion, ActionIcon, Button, Center, Group, rem, Stack, Title, Tooltip } from "@mantine/core"; import { BoxSchema, PalletSchema, ShippingProductSchema } from "../../../../../client"; import ShippingProductsTable from "./ShippingProductsTable.tsx"; import BoxesTable from "./BoxesTable.tsx"; import { IconBox, IconPlus, IconSpace, IconTrash } from "@tabler/icons-react"; import useShipping from "../hooks/useShipping.tsx"; const ShippingTree = () => { const { selectedDeal: deal } = useDealPageContext(); const { onCreateBoxInPallet, onCreateShippingProduct, onDeletePalletClick, palletIds, } = useShipping(); const sortById = (data?: PalletSchema[] | BoxSchema[] | ShippingProductSchema[]) => { return data?.sort((a, b) => a.id - b.id); }; const getPallets = () => { const sortedPallets = sortById(deal?.pallets) as PalletSchema[]; const pallets = sortedPallets?.map((pallet => { palletIds.push(pallet.id.toString()); return (
}> Паллет - П{pallet.id} {removePalletButton(pallet.id)}
{getPalletContent(pallet)}
); })) ?? []; if (deal?.boxes && deal?.boxes.length > 0) { const boxes = deal?.boxes.sort((b1, b2) => (b1.id - b2.id)); const itemValue = "noPallets"; const boxesWithoutPallet = ( }> Короба без паллетов ); pallets.unshift(boxesWithoutPallet); palletIds.push(itemValue); } return pallets; }; const removePalletButton = (palletId: number) => { return ( onDeletePalletClick(palletId)} mx={"md"} > ); }; const createBoxOrShippingProductButton = (palletId: number, isBox: boolean) => { const createButtonLabel = isBox ? "Добавить короб" : "Добавить товар"; return ( ); }; const getPalletContent = (pallet: PalletSchema) => { const isEmpty = pallet.boxes.length === 0 && pallet.shippingProducts.length === 0; const isBox = pallet.boxes.length > 0; const title = isEmpty ? "Пустой" : isBox ? "Короба" : "Товары"; let palletButtons; if (isEmpty) { palletButtons = [ createBoxOrShippingProductButton(pallet.id, true), createBoxOrShippingProductButton(pallet.id, false), ]; } else { palletButtons = [ createBoxOrShippingProductButton(pallet.id, isBox), ]; } const boxes = sortById(pallet.boxes) as BoxSchema[]; const shippingProducts = sortById(pallet.shippingProducts) as ShippingProductSchema[]; let table; if (!isEmpty) { if (isBox) { table = (); } else { table = (); } } return ( {title} {...palletButtons} {table} ); }; return ( {getPallets()} ); }; export default ShippingTree;