Files
lcbp3/frontend/components/drawings/list.tsx
T
admin 56def2d323
Build and Deploy / deploy (push) Failing after 9m41s
260318:0931 Fix UUID and UTF
2026-03-18 09:31:49 +07:00

57 lines
1.7 KiB
TypeScript

'use client';
import { useDrawings } from '@/hooks/use-drawing';
import { useState } from 'react';
import { PaginationState, SortingState } from '@tanstack/react-table';
import { ServerDataTable } from '@/components/documents/common/server-data-table';
import { columns } from './columns';
import { SearchContractDrawingDto } from '@/types/dto/drawing/contract-drawing.dto';
import { SearchShopDrawingDto } from '@/types/dto/drawing/shop-drawing.dto';
import { SearchAsBuiltDrawingDto } from '@/types/dto/drawing/asbuilt-drawing.dto';
type DrawingSearchParams = SearchContractDrawingDto | SearchShopDrawingDto | SearchAsBuiltDrawingDto;
interface DrawingListProps {
type: 'CONTRACT' | 'SHOP' | 'AS_BUILT';
projectUuid: string;
filters?: Partial<DrawingSearchParams>;
}
export function DrawingList({ type, projectUuid, filters }: DrawingListProps) {
const [pagination, setPagination] = useState<PaginationState>({
pageIndex: 0,
pageSize: 20,
});
const [sorting, setSorting] = useState<SortingState>([]);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const {
data: response,
isLoading,
} = useDrawings(type, {
projectUuid,
...filters,
page: pagination.pageIndex + 1, // API is 1-based
limit: pagination.pageSize,
} as any);
const drawings = response?.data || [];
const meta = response?.meta || { total: 0, page: 1, limit: 20, totalPages: 0 };
return (
<div>
<ServerDataTable
columns={columns}
data={drawings}
pageCount={meta.totalPages}
pagination={pagination}
onPaginationChange={setPagination}
sorting={sorting}
onSortingChange={setSorting}
isLoading={isLoading}
/>
</div>
);
}