feat: implementa busca de produtos com API externa e corrige URL base
- Adiciona integração com API de produtos em http://10.1.1.212:8805/api/v1/data-consult/products/{id} - Corrige mapeamento de resposta da API para formato Product interface - Atualiza ProductSearchInput para usar description como nome do produto - Corrige API_BASE_URL adicionando protocolo http:// para evitar URLs relativas - Resolve erro 404 causado por URLs malformadas em requisições de API
This commit is contained in:
@@ -7,6 +7,16 @@ import {
|
||||
import { OrderRowExpandable } from "./tabela-pedidos/components/OrderRowExpandable";
|
||||
import { Order } from "@/src/components/types";
|
||||
|
||||
/**
|
||||
* Propriedades para o componente OrdersTableBody
|
||||
* @typedef {Object} OrdersTableBodyProps
|
||||
* @property {Order[]} orders - Lista completa de pedidos
|
||||
* @property {Order[]} currentOrders - Lista de pedidos filtrados/paginados
|
||||
* @property {string|null} selectedOrderId - ID do pedido selecionado
|
||||
* @property {string[]} visibleColumns - Colunas visíveis na tabela
|
||||
* @property {(storeId?: string) => string} getStoreName - Função para obter o nome da loja
|
||||
* @property {(orderId: string) => void} handleRowClick - Função chamada ao clicar em uma linha
|
||||
*/
|
||||
interface OrdersTableBodyProps {
|
||||
orders: Order[];
|
||||
currentOrders: Order[];
|
||||
@@ -16,7 +26,11 @@ interface OrdersTableBodyProps {
|
||||
handleRowClick: (orderId: string) => void;
|
||||
}
|
||||
|
||||
// Componente de linha vazia memoizado
|
||||
/**
|
||||
* Linha vazia exibida quando não há pedidos
|
||||
* @param {{ colSpan: number }} props
|
||||
* @returns {JSX.Element}
|
||||
*/
|
||||
const EmptyRow = memo(({ colSpan }: { colSpan: number }) => (
|
||||
<TableRow>
|
||||
<TableCell colSpan={colSpan} className="h-24 text-center text-xs">
|
||||
@@ -25,7 +39,11 @@ const EmptyRow = memo(({ colSpan }: { colSpan: number }) => (
|
||||
</TableRow>
|
||||
));
|
||||
|
||||
// Componente de linha de pedido memoizado
|
||||
/**
|
||||
* Linha de pedido individual, expansível
|
||||
* @param {{ order: Order, isSelected: boolean, visibleColumns: string[], onSelect: (orderId: string) => void, getStoreName: (storeId?: string) => string }} props
|
||||
* @returns {JSX.Element}
|
||||
*/
|
||||
const OrderRow = memo(({
|
||||
order,
|
||||
isSelected,
|
||||
@@ -39,11 +57,11 @@ const OrderRow = memo(({
|
||||
onSelect: (orderId: string) => void;
|
||||
getStoreName: (storeId?: string) => string;
|
||||
}) => {
|
||||
// Create a new order object with the store name only (without ID prefix)
|
||||
// Cria um novo objeto de pedido com o nome da loja
|
||||
const orderWithStore = {
|
||||
...order,
|
||||
store: getStoreName(order.storeId),
|
||||
storeId: order.storeId, // Preserve original storeId
|
||||
storeId: order.storeId, // Mantém o storeId original
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -60,7 +78,11 @@ const OrderRow = memo(({
|
||||
);
|
||||
});
|
||||
|
||||
// Componente principal memoizado
|
||||
/**
|
||||
* Corpo da tabela de pedidos, renderiza linhas de pedidos ou linha vazia
|
||||
* @param {OrdersTableBodyProps} props
|
||||
* @returns {JSX.Element}
|
||||
*/
|
||||
function OrdersTableBodyComponent({
|
||||
orders,
|
||||
currentOrders,
|
||||
@@ -69,7 +91,7 @@ function OrdersTableBodyComponent({
|
||||
getStoreName,
|
||||
handleRowClick,
|
||||
}: OrdersTableBodyProps) {
|
||||
// Renderização condicional baseada na presença de orders, memoizada
|
||||
// Renderização condicional baseada na presença de pedidos
|
||||
const content = useMemo(() => {
|
||||
if (orders.length === 0) {
|
||||
return <EmptyRow colSpan={visibleColumns.length} />;
|
||||
@@ -90,4 +112,8 @@ function OrdersTableBodyComponent({
|
||||
return <TableBody>{content}</TableBody>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Exporta o componente memoizado do corpo da tabela de pedidos
|
||||
* @type {React.NamedExoticComponent<OrdersTableBodyProps>}
|
||||
*/
|
||||
export const OrdersTableBody = memo(OrdersTableBodyComponent);
|
||||
Reference in New Issue
Block a user