feat(MED-131): show other (non analysis-package) orders

This commit is contained in:
2025-08-04 17:32:54 +03:00
parent 74ccbfd4d7
commit 0ba23b6c8e
6 changed files with 20 additions and 9 deletions

View File

@@ -10,6 +10,7 @@ import { Trans } from '@kit/ui/trans';
import { HomeLayoutPageHeader } from '../../_components/home-page-header';
import OrdersTable from '../../_components/orders/orders-table';
import { withI18n } from '~/lib/i18n/with-i18n';
import type { IOrderLineItem } from '../../_components/orders/types';
export async function generateMetadata() {
const { t } = await createI18nServerInstance();
@@ -29,11 +30,17 @@ async function OrdersPage() {
}
const analysisPackagesType = productTypes.find(({ metadata }) => metadata?.handle === 'analysis-packages');
const analysisPackageOrders = orders.flatMap(({ id, items, payment_status, fulfillment_status }) => items
const analysisPackageOrders: IOrderLineItem[] = orders.flatMap(({ id, items, payment_status, fulfillment_status }) => items
?.filter((item) => item.product_type_id === analysisPackagesType?.id)
.map((item) => ({ item, orderId: id, orderStatus: `${payment_status}/${fulfillment_status}` }))
|| []);
const otherOrders: IOrderLineItem[] = orders
.filter(({ items }) => items?.some((item) => item.product_type_id !== analysisPackagesType?.id))
.flatMap(({ id, items, payment_status, fulfillment_status }) => items
?.map((item) => ({ item, orderId: id, orderStatus: `${payment_status}/${fulfillment_status}` }))
|| []);
return (
<>
<HomeLayoutPageHeader
@@ -41,7 +48,8 @@ async function OrdersPage() {
description={<Trans i18nKey={'orders:description'} />}
/>
<PageBody>
<OrdersTable orderItems={analysisPackageOrders} />
<OrdersTable orderItems={analysisPackageOrders} title="orders:table.analysisPackage" />
<OrdersTable orderItems={otherOrders} title="orders:table.otherOrders" />
</PageBody>
</>
);

View File

@@ -5,10 +5,10 @@ import {
import { Eye } from "lucide-react";
import Link from "next/link";
import { formatDate } from "date-fns";
import { IAnalysisPackageOrder } from "./types";
import { IOrderLineItem } from "./types";
export default function OrdersItem({ orderItem }: {
orderItem: IAnalysisPackageOrder,
orderItem: IOrderLineItem,
}) {
return (
<TableRow className="w-full">

View File

@@ -7,12 +7,13 @@ import {
TableHeader,
} from '@kit/ui/table';
import OrdersItem from "./orders-item";
import { IAnalysisPackageOrder } from "./types";
import { IOrderLineItem } from "./types";
const IS_SHOWN_ORDER_STATUS = true as boolean;
export default function OrdersTable({ orderItems }: {
orderItems: IAnalysisPackageOrder[];
export default function OrdersTable({ orderItems, title }: {
orderItems: IOrderLineItem[];
title: string;
}) {
if (!orderItems || orderItems.length === 0) {
return null;
@@ -23,7 +24,7 @@ export default function OrdersTable({ orderItems }: {
<TableHeader className="text-ui-fg-subtle txt-medium-plus">
<TableRow>
<TableHead className="px-6">
<Trans i18nKey="orders:table.analysisPackage" />
<Trans i18nKey={title} />
</TableHead>
<TableHead className="px-6">
<Trans i18nKey="orders:table.createdAt" />

View File

@@ -1,6 +1,6 @@
import { StoreOrderLineItem } from "@medusajs/types";
export interface IAnalysisPackageOrder {
export interface IOrderLineItem {
item: StoreOrderLineItem;
orderId: string;
orderStatus: string;

View File

@@ -3,6 +3,7 @@
"description": "View your orders",
"table": {
"analysisPackage": "Analysis package",
"otherOrders": "Order",
"createdAt": "Ordered at"
}
}

View File

@@ -3,6 +3,7 @@
"description": "Vaata oma tellimusi",
"table": {
"analysisPackage": "Analüüsi pakett",
"otherOrders": "Tellimus",
"createdAt": "Tellitud"
}
}