feat(MED-131): show other (non analysis-package) orders
This commit is contained in:
@@ -10,6 +10,7 @@ import { Trans } from '@kit/ui/trans';
|
|||||||
import { HomeLayoutPageHeader } from '../../_components/home-page-header';
|
import { HomeLayoutPageHeader } from '../../_components/home-page-header';
|
||||||
import OrdersTable from '../../_components/orders/orders-table';
|
import OrdersTable from '../../_components/orders/orders-table';
|
||||||
import { withI18n } from '~/lib/i18n/with-i18n';
|
import { withI18n } from '~/lib/i18n/with-i18n';
|
||||||
|
import type { IOrderLineItem } from '../../_components/orders/types';
|
||||||
|
|
||||||
export async function generateMetadata() {
|
export async function generateMetadata() {
|
||||||
const { t } = await createI18nServerInstance();
|
const { t } = await createI18nServerInstance();
|
||||||
@@ -29,11 +30,17 @@ async function OrdersPage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const analysisPackagesType = productTypes.find(({ metadata }) => metadata?.handle === 'analysis-packages');
|
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)
|
?.filter((item) => item.product_type_id === analysisPackagesType?.id)
|
||||||
.map((item) => ({ item, orderId: id, orderStatus: `${payment_status}/${fulfillment_status}` }))
|
.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 (
|
return (
|
||||||
<>
|
<>
|
||||||
<HomeLayoutPageHeader
|
<HomeLayoutPageHeader
|
||||||
@@ -41,7 +48,8 @@ async function OrdersPage() {
|
|||||||
description={<Trans i18nKey={'orders:description'} />}
|
description={<Trans i18nKey={'orders:description'} />}
|
||||||
/>
|
/>
|
||||||
<PageBody>
|
<PageBody>
|
||||||
<OrdersTable orderItems={analysisPackageOrders} />
|
<OrdersTable orderItems={analysisPackageOrders} title="orders:table.analysisPackage" />
|
||||||
|
<OrdersTable orderItems={otherOrders} title="orders:table.otherOrders" />
|
||||||
</PageBody>
|
</PageBody>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ import {
|
|||||||
import { Eye } from "lucide-react";
|
import { Eye } from "lucide-react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { formatDate } from "date-fns";
|
import { formatDate } from "date-fns";
|
||||||
import { IAnalysisPackageOrder } from "./types";
|
import { IOrderLineItem } from "./types";
|
||||||
|
|
||||||
export default function OrdersItem({ orderItem }: {
|
export default function OrdersItem({ orderItem }: {
|
||||||
orderItem: IAnalysisPackageOrder,
|
orderItem: IOrderLineItem,
|
||||||
}) {
|
}) {
|
||||||
return (
|
return (
|
||||||
<TableRow className="w-full">
|
<TableRow className="w-full">
|
||||||
|
|||||||
@@ -7,12 +7,13 @@ import {
|
|||||||
TableHeader,
|
TableHeader,
|
||||||
} from '@kit/ui/table';
|
} from '@kit/ui/table';
|
||||||
import OrdersItem from "./orders-item";
|
import OrdersItem from "./orders-item";
|
||||||
import { IAnalysisPackageOrder } from "./types";
|
import { IOrderLineItem } from "./types";
|
||||||
|
|
||||||
const IS_SHOWN_ORDER_STATUS = true as boolean;
|
const IS_SHOWN_ORDER_STATUS = true as boolean;
|
||||||
|
|
||||||
export default function OrdersTable({ orderItems }: {
|
export default function OrdersTable({ orderItems, title }: {
|
||||||
orderItems: IAnalysisPackageOrder[];
|
orderItems: IOrderLineItem[];
|
||||||
|
title: string;
|
||||||
}) {
|
}) {
|
||||||
if (!orderItems || orderItems.length === 0) {
|
if (!orderItems || orderItems.length === 0) {
|
||||||
return null;
|
return null;
|
||||||
@@ -23,7 +24,7 @@ export default function OrdersTable({ orderItems }: {
|
|||||||
<TableHeader className="text-ui-fg-subtle txt-medium-plus">
|
<TableHeader className="text-ui-fg-subtle txt-medium-plus">
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableHead className="px-6">
|
<TableHead className="px-6">
|
||||||
<Trans i18nKey="orders:table.analysisPackage" />
|
<Trans i18nKey={title} />
|
||||||
</TableHead>
|
</TableHead>
|
||||||
<TableHead className="px-6">
|
<TableHead className="px-6">
|
||||||
<Trans i18nKey="orders:table.createdAt" />
|
<Trans i18nKey="orders:table.createdAt" />
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { StoreOrderLineItem } from "@medusajs/types";
|
import { StoreOrderLineItem } from "@medusajs/types";
|
||||||
|
|
||||||
export interface IAnalysisPackageOrder {
|
export interface IOrderLineItem {
|
||||||
item: StoreOrderLineItem;
|
item: StoreOrderLineItem;
|
||||||
orderId: string;
|
orderId: string;
|
||||||
orderStatus: string;
|
orderStatus: string;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
"description": "View your orders",
|
"description": "View your orders",
|
||||||
"table": {
|
"table": {
|
||||||
"analysisPackage": "Analysis package",
|
"analysisPackage": "Analysis package",
|
||||||
|
"otherOrders": "Order",
|
||||||
"createdAt": "Ordered at"
|
"createdAt": "Ordered at"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
"description": "Vaata oma tellimusi",
|
"description": "Vaata oma tellimusi",
|
||||||
"table": {
|
"table": {
|
||||||
"analysisPackage": "Analüüsi pakett",
|
"analysisPackage": "Analüüsi pakett",
|
||||||
|
"otherOrders": "Tellimus",
|
||||||
"createdAt": "Tellitud"
|
"createdAt": "Tellitud"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user