From fd9f805c4426b9643aa86f912abd6667120e21bd Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 11 Mar 2026 13:25:04 +0100 Subject: [PATCH] name mapping on OrderInfo Adminpage, only one item fetch for whole adminpage --- .../src/helper/adminpanel/ItemsInfo.tsx | 18 ++++------------ .../src/helper/adminpanel/OrdersInfo.tsx | 17 +++++++++++---- 01-frontend/src/pages/AdminPanel.tsx | 21 +++++++++++++++---- 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/01-frontend/src/helper/adminpanel/ItemsInfo.tsx b/01-frontend/src/helper/adminpanel/ItemsInfo.tsx index a712b57..4d70438 100644 --- a/01-frontend/src/helper/adminpanel/ItemsInfo.tsx +++ b/01-frontend/src/helper/adminpanel/ItemsInfo.tsx @@ -14,7 +14,6 @@ import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import Item from "../../components/Item"; import { mapValueToColor } from "../../util/ColorUtil.tsx"; -import { useAccount } from "../AccountProvider.tsx"; import { deleteItemQuery, fetchItemList, @@ -23,7 +22,7 @@ import { import ItemImageDialog from "./ItemImageDialog.tsx"; import NewItemDialog from "./NewItemDialog.tsx"; -export default function ItemsInfo() { +export default function ItemsInfo({ itemList }: { itemList: Item[] }) { const theme = useTheme(); const { t } = useTranslation(); @@ -53,20 +52,11 @@ export default function ItemsInfo() { setNewItemDialog(true); } - const { user: loginData } = useAccount(); - - const { data } = useQuery({ - queryKey: ["fetchItemList", loginData], - queryFn: () => fetchItemList(), - retry: 3, - retryDelay: 1000, - }); - useEffect(() => { - if (data) { - setRows(data); + if (itemList) { + setRows(itemList); } - }, [data]); + }, [itemList]); const handleSelectionChange = (newSelection: GridRowSelectionModel) => { setSelectedRows(newSelection.ids); diff --git a/01-frontend/src/helper/adminpanel/OrdersInfo.tsx b/01-frontend/src/helper/adminpanel/OrdersInfo.tsx index a66cf1e..a56c55b 100644 --- a/01-frontend/src/helper/adminpanel/OrdersInfo.tsx +++ b/01-frontend/src/helper/adminpanel/OrdersInfo.tsx @@ -22,6 +22,7 @@ import { useTranslation } from "react-i18next"; import OrderType, { OrderPatch, OrderStatusEnum } from "../../components/Order"; import { useAccount } from "../AccountProvider"; import { fetchOrdersAdmin, orderPatch } from "../query/Queries"; +import Item from "../../components/Item"; // The order in which the statuses are displayed const statusOrder: OrderStatusEnum[] = [ @@ -130,8 +131,9 @@ const Column: React.FC< const EditOrder: React.FC<{ open: boolean; order: OrderType | null; + articleNameMapping: (uuid: string) => string; onClose: () => void; -}> = ({ open, order, onClose }) => { +}> = ({ open, order, articleNameMapping, onClose }) => { const { t } = useTranslation(); if (order === null) return ""; return ( @@ -147,7 +149,7 @@ const EditOrder: React.FC<{ {order.orderItems.map((item, idx) => ( ))} @@ -163,13 +165,13 @@ const EditOrder: React.FC<{ ); }; -export default function OrdersInfo() { +export default function OrdersInfo({ itemList }: { itemList: Item[] }) { const [editOrder, setEditOrder] = useState(null); const [openSnackbar, setOpenSnackbar] = useState(false); const { user: loginData } = useAccount(); - const { data, refetch, isLoading } = useQuery({ + const { data, refetch, isLoading } = useQuery({ queryKey: ["fetchOrdersAdmin", loginData], queryFn: () => fetchOrdersAdmin( @@ -213,6 +215,10 @@ export default function OrdersInfo() { return
Lade Bestellungen...
; } + if (!itemList) { + return
itemlist empty
; + } + return (
@@ -229,6 +235,9 @@ export default function OrdersInfo() { { + return itemList.find((item) => item.uuid == uuid)?.name || uuid; + }} onClose={() => setEditOrder(null)} /> { + const { user: loginData } = useAccount(); + + const { data: itemList, isLoading } = useQuery({ + queryKey: ["fetchItemList", loginData], + queryFn: () => fetchItemList(), + retry: 3, + retryDelay: 1000, + }); + + const renderContent = (itemList: Item[]) => { switch (infoStatus) { case "statistics": return ; case "orders": - return ; + return ; case "accounts": return ; case "items": - return ; + return ; default: return ; } @@ -91,7 +104,7 @@ export default function AdminPanel() { {/* Content */} - {renderContent()} + {renderContent(itemList)}
);