mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-02 09:43:12 +00:00
refactor(dashboard): extract dispatcher tables into a section component
Move the two paged dispatcher cards and their paging view-model derivation out of DashboardPage into DispatcherTablesSection (a fragment, so both cards remain direct children of the dashboard grid). This keeps DashboardPage under the project complexity threshold after the pager additions, with no change to the rendered layout or behaviour.
This commit is contained in:
parent
0279cfac64
commit
7679c28682
2 changed files with 68 additions and 21 deletions
|
|
@ -0,0 +1,60 @@
|
|||
import type { UseQueryResult } from "@tanstack/react-query";
|
||||
import {
|
||||
DISPATCHER_PAGE_SIZE,
|
||||
type DispatcherPage,
|
||||
} from "@/domain/dashboard/types/dashboard-dispatcher-page";
|
||||
import type { DashboardRangeKey } from "@/domain/dashboard/types/dashboard-range";
|
||||
import type { DispatcherPerformanceRow } from "@/domain/dashboard/types/dashboard-performance";
|
||||
import type { DispatcherWorkloadRow } from "@/domain/dashboard/types/dashboard-workload";
|
||||
import { DispatcherPerformanceCard } from "./dispatcher-performance-card";
|
||||
import { DispatcherWorkloadCard } from "./dispatcher-workload-card";
|
||||
|
||||
interface DispatcherTablesSectionProps {
|
||||
range: DashboardRangeKey;
|
||||
workload: UseQueryResult<DispatcherPage<DispatcherWorkloadRow>, Error>;
|
||||
performance: UseQueryResult<DispatcherPage<DispatcherPerformanceRow>, Error>;
|
||||
workloadPage: number;
|
||||
performancePage: number;
|
||||
onWorkloadPageChange: (page: number) => void;
|
||||
onPerformancePageChange: (page: number) => void;
|
||||
}
|
||||
|
||||
/**
|
||||
* The two paged dispatcher tables. Kept as a fragment so both cards stay direct
|
||||
* children of the dashboard grid, and so the paging view-model derivation lives
|
||||
* here rather than inflating the page component.
|
||||
*/
|
||||
export function DispatcherTablesSection({
|
||||
range,
|
||||
workload,
|
||||
performance,
|
||||
workloadPage,
|
||||
performancePage,
|
||||
onWorkloadPageChange,
|
||||
onPerformancePageChange,
|
||||
}: DispatcherTablesSectionProps) {
|
||||
return (
|
||||
<>
|
||||
<DispatcherWorkloadCard
|
||||
rows={workload.data?.items ?? []}
|
||||
range={range}
|
||||
page={workloadPage}
|
||||
pageSize={workload.data?.pageSize ?? DISPATCHER_PAGE_SIZE}
|
||||
totalDispatchers={workload.data?.totalDispatchers ?? 0}
|
||||
onPageChange={onWorkloadPageChange}
|
||||
isLoading={workload.isLoading}
|
||||
error={workload.error}
|
||||
/>
|
||||
<DispatcherPerformanceCard
|
||||
rows={performance.data?.items ?? []}
|
||||
range={range}
|
||||
page={performancePage}
|
||||
pageSize={performance.data?.pageSize ?? DISPATCHER_PAGE_SIZE}
|
||||
totalDispatchers={performance.data?.totalDispatchers ?? 0}
|
||||
onPageChange={onPerformancePageChange}
|
||||
isLoading={performance.isLoading}
|
||||
error={performance.error}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
|
@ -8,12 +8,10 @@ import { PageHeader } from "@/components/ui/page-header";
|
|||
import { DashboardKpiCard } from "@/app/(protected)/dashboard/_components/dashboard-kpi-card";
|
||||
import { DashboardRangeToggle } from "@/app/(protected)/dashboard/_components/dashboard-range-toggle";
|
||||
import { DashboardTrendCard } from "@/app/(protected)/dashboard/_components/dashboard-trend-card";
|
||||
import { DispatcherPerformanceCard } from "@/app/(protected)/dashboard/_components/dispatcher-performance-card";
|
||||
import { DispatcherWorkloadCard } from "@/app/(protected)/dashboard/_components/dispatcher-workload-card";
|
||||
import { DispatcherTablesSection } from "@/app/(protected)/dashboard/_components/dispatcher-tables-section";
|
||||
import { VendorInsightsCard } from "@/app/(protected)/dashboard/_components/vendor-insights-card";
|
||||
import { WorkOrderBreakdownCard } from "@/app/(protected)/dashboard/_components/work-order-breakdown-card";
|
||||
import { WorkOrdersByRegionCard } from "@/app/(protected)/dashboard/_components/work-orders-by-region-card";
|
||||
import { DISPATCHER_PAGE_SIZE } from "@/domain/dashboard/types/dashboard-dispatcher-page";
|
||||
import {
|
||||
DEFAULT_DASHBOARD_RANGE,
|
||||
type DashboardRangeKey,
|
||||
|
|
@ -113,25 +111,14 @@ export default function DashboardPage() {
|
|||
isLoading={regions.isLoading}
|
||||
error={regions.error}
|
||||
/>
|
||||
<DispatcherWorkloadCard
|
||||
rows={workload.data?.items ?? []}
|
||||
<DispatcherTablesSection
|
||||
range={range}
|
||||
page={workloadPage}
|
||||
pageSize={workload.data?.pageSize ?? DISPATCHER_PAGE_SIZE}
|
||||
totalDispatchers={workload.data?.totalDispatchers ?? 0}
|
||||
onPageChange={setWorkloadPage}
|
||||
isLoading={workload.isLoading}
|
||||
error={workload.error}
|
||||
/>
|
||||
<DispatcherPerformanceCard
|
||||
rows={performance.data?.items ?? []}
|
||||
range={range}
|
||||
page={performancePage}
|
||||
pageSize={performance.data?.pageSize ?? DISPATCHER_PAGE_SIZE}
|
||||
totalDispatchers={performance.data?.totalDispatchers ?? 0}
|
||||
onPageChange={setPerformancePage}
|
||||
isLoading={performance.isLoading}
|
||||
error={performance.error}
|
||||
workload={workload}
|
||||
performance={performance}
|
||||
workloadPage={workloadPage}
|
||||
performancePage={performancePage}
|
||||
onWorkloadPageChange={setWorkloadPage}
|
||||
onPerformancePageChange={setPerformancePage}
|
||||
/>
|
||||
</Box>
|
||||
<DashboardTrendCard range={range} />
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue