From b8d0d47108fc8fc5772fff2b3161d9ded812a3fb Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Sat, 18 Jul 2026 00:07:44 +0330 Subject: [PATCH] stat --- src/pages/home/components/StatCard.tsx | 15 ++++++++++----- src/pages/home/components/Stats.tsx | 9 ++++++++- src/pages/invoice/ProformaInvoice.tsx | 14 ++++++++++++-- src/pages/order/MyOrders.tsx | 12 ++++++++++-- 4 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/pages/home/components/StatCard.tsx b/src/pages/home/components/StatCard.tsx index 50a4e7c..af2909c 100644 --- a/src/pages/home/components/StatCard.tsx +++ b/src/pages/home/components/StatCard.tsx @@ -1,17 +1,22 @@ import { COLORS } from '@/constants/colors' import { ArrowLeft } from 'iconsax-react' import { type FC, type ReactNode } from 'react' +import { Link } from 'react-router-dom' type Props = { icon: ReactNode, count: number | undefined, - description: string + description: string, + to: string, } const StatCard: FC = (props) => { - const { icon, count, description } = props + const { icon, count, description, to } = props return ( -
+
{icon} @@ -27,8 +32,8 @@ const StatCard: FC = (props) => {
{description}
-
+ ) } -export default StatCard \ No newline at end of file +export default StatCard diff --git a/src/pages/home/components/Stats.tsx b/src/pages/home/components/Stats.tsx index 12953a2..4b71c18 100644 --- a/src/pages/home/components/Stats.tsx +++ b/src/pages/home/components/Stats.tsx @@ -1,10 +1,13 @@ import GridWrapper from '@/components/GridWrapper' +import { Paths } from '@/config/Paths' import { COLORS } from '@/constants/colors' import { t } from '@/locale' +import { ProformaInvoiceStatusEnum } from '@/pages/invoice/enum/InvoiceEnum' +import { TabMyOrdersEnum } from '@/pages/order/enum/OrderEnum' +import { useGetOrderStats } from '@/pages/order/hooks/useOrderData' import { BoxTick, BoxTime, ReceiptText, TruckTick } from 'iconsax-react' import { type FC } from 'react' import StatCard from './StatCard' -import { useGetOrderStats } from '@/pages/order/hooks/useOrderData' const Stats: FC = () => { @@ -21,6 +24,7 @@ const Stats: FC = () => { { { { + value === ProformaInvoiceStatusEnum.ALL || + value === ProformaInvoiceStatusEnum.NOT_CONFIRMED || + value === ProformaInvoiceStatusEnum.PARTIALLY_CONFIRMED || + value === ProformaInvoiceStatusEnum.CONFIRMED + const getServiceNames = (invoice: Invoice): string => { const names = [...new Set(invoice.items.map((item) => item.product.title))] return names.join('، ') || '-' @@ -21,7 +27,11 @@ const getServiceNames = (invoice: Invoice): string => { const ProformaInvoice: FC = () => { const navigate = useNavigate() - const [activeTab, setActiveTab] = useState(ProformaInvoiceStatusEnum.ALL) + const [searchParams] = useSearchParams() + const tabFromQuery = searchParams.get('tab') + const [activeTab, setActiveTab] = useState( + isInvoiceTab(tabFromQuery) ? tabFromQuery : ProformaInvoiceStatusEnum.ALL, + ) const [filters, setFilters] = useState({}) const { data, isPending } = useGetInvoices() diff --git a/src/pages/order/MyOrders.tsx b/src/pages/order/MyOrders.tsx index 90f64df..c710292 100644 --- a/src/pages/order/MyOrders.tsx +++ b/src/pages/order/MyOrders.tsx @@ -6,14 +6,22 @@ import { Eye } from 'iconsax-react' import Table from '@/components/Table' import { useGetMyOrders } from './hooks/useOrderData' import moment from 'moment-jalaali' -import { Link } from 'react-router-dom' +import { Link, useSearchParams } from 'react-router-dom' import { Paths } from '@/config/Paths' import StatusBadge from '@/components/StatusBadge' +const isOrderTab = (value: string | null): value is TabMyOrdersEnum => + value === TabMyOrdersEnum.ALL || + value === TabMyOrdersEnum.IN_PROGRESS || + value === TabMyOrdersEnum.DELIVERED || + value === TabMyOrdersEnum.CANCELLED + const MyOrders: FC = () => { + const [searchParams] = useSearchParams() + const tabFromQuery = searchParams.get('tab') const [page, setPage] = useState(1) const [activeTab, setActiveTab] = useState( - TabMyOrdersEnum.ALL, + isOrderTab(tabFromQuery) ? tabFromQuery : TabMyOrdersEnum.ALL, ) const { data } = useGetMyOrders(page, activeTab)