From cb7e8730c011154d0425e88657356ee2c3041128 Mon Sep 17 00:00:00 2001 From: Johnny Gear Date: Fri, 30 Jan 2026 10:18:49 -0600 Subject: [PATCH] Order Sets - Nicer UI --- flask/api.py | 7 +++ flask/vite/src/SubOrderSets.tsx | 92 +++++++++++++++++++++++++++------ 2 files changed, 83 insertions(+), 16 deletions(-) diff --git a/flask/api.py b/flask/api.py index 9fb11a2..de1853d 100644 --- a/flask/api.py +++ b/flask/api.py @@ -31,6 +31,13 @@ def sub_order_sets(username): { 'id': op.id, 'name': op.name, + 'scheduled': op.scheduled, + 'time': op.time, + 'weekends': op.weekends, + 'weekdays': op.weekdays, + 'orders': [{ + 'id': order.id, + } for order in op.orders] } for op in orders_pool_list(sub.id) diff --git a/flask/vite/src/SubOrderSets.tsx b/flask/vite/src/SubOrderSets.tsx index 8f18e55..55c7769 100644 --- a/flask/vite/src/SubOrderSets.tsx +++ b/flask/vite/src/SubOrderSets.tsx @@ -1,6 +1,16 @@ -import { Container, Title } from "@mantine/core"; +import { + Container, + Title, + Card, + Text, + Button, + Flex, + Badge, +} from "@mantine/core"; +import { TimeValue } from "@mantine/dates"; +import { IconPencil } from "@tabler/icons-react"; import React from "react"; -import { Link, Params, useLoaderData, useParams } from "react-router"; +import { Params, useLoaderData, useParams, useNavigate } from "react-router"; export const subOrderSetsLoader = async ({ params: { username }, @@ -8,28 +18,78 @@ export const subOrderSetsLoader = async ({ params: Params; }) => fetch(`/api/subs/${username}/sets`).then((response) => response.json()); +const NavigateButton: React.FC<{ + children: React.ReactNode; + to: string; +}> = ({ children, to }) => { + const navigate = useNavigate(); + + const handleClick = React.useCallback(() => { + navigate(to); + }, [to]); + + return ( + + ); +}; + export const SubOrderSets: React.FC = () => { const { username: sub_username } = useParams(); - const orders = useLoaderData< - { - id: number; - name: string; - orders: Pick[]; - }[] + const orderSets = useLoaderData< + (Pick< + OrderSet, + "id" | "name" | "scheduled" | "time" | "weekends" | "weekdays" | "orders" + > & { + orders: Pick[]; + })[] >(); return ( - Orders for {sub_username} + Order Sets for {sub_username} - {orders - ? orders.map(({ id, name }) => ( - - {name} - - )) - : null} + + {orderSets + ? orderSets.map( + ({ id, name, scheduled, orders, time, weekdays, weekends }) => ( + + + {name} + {scheduled ? ( + + + Scheduled: + + {weekdays ? Weekdays : null} + {weekends ? Weekends : null} + + ) : null} + Orders: {orders.length} + + + + + Edit + + + + ), + ) + : null} + ); };