diff options
| author | joonhoekim <26rote@gmail.com> | 2025-11-02 17:49:22 +0900 |
|---|---|---|
| committer | joonhoekim <26rote@gmail.com> | 2025-11-02 17:49:22 +0900 |
| commit | 503ff56f5471818472eeb44b74cb35c4f977e6d1 (patch) | |
| tree | 56be6b2773e6025cf0bfedef9319f44a6ec2ce58 /lib/vendor-document-list/ship | |
| parent | 9694acd0ec21b3f50a8bd65d3a328befd85cbbee (diff) | |
(김준회) dolce: GTT(B4) 건수 계산을 현재 페이지가 아닌 DB 기준으로 변경
Diffstat (limited to 'lib/vendor-document-list/ship')
| -rw-r--r-- | lib/vendor-document-list/ship/enhanced-doc-table-columns.tsx | 2 | ||||
| -rw-r--r-- | lib/vendor-document-list/ship/enhanced-documents-table.tsx | 41 |
2 files changed, 14 insertions, 29 deletions
diff --git a/lib/vendor-document-list/ship/enhanced-doc-table-columns.tsx b/lib/vendor-document-list/ship/enhanced-doc-table-columns.tsx index 096f9b24..882ef885 100644 --- a/lib/vendor-document-list/ship/enhanced-doc-table-columns.tsx +++ b/lib/vendor-document-list/ship/enhanced-doc-table-columns.tsx @@ -32,7 +32,7 @@ import { SimplifiedDocumentsView } from "@/db/schema" import { DocumentSelectionContext } from "@/components/ship-vendor-document/user-vendor-document-table-container" interface GetColumnsProps { - setRowAction: React.Dispatch<React.SetStateAction<DataTableRowAction<SimplifiedDocumentsView> | null>> + setRowAction?: React.Dispatch<React.SetStateAction<DataTableRowAction<SimplifiedDocumentsView> | null>> } // 날짜 표시 컴포넌트 (간단 버전) diff --git a/lib/vendor-document-list/ship/enhanced-documents-table.tsx b/lib/vendor-document-list/ship/enhanced-documents-table.tsx index cae0fe06..dabb05bb 100644 --- a/lib/vendor-document-list/ship/enhanced-documents-table.tsx +++ b/lib/vendor-document-list/ship/enhanced-documents-table.tsx @@ -4,17 +4,14 @@ import React from "react" import type { DataTableAdvancedFilterField, - DataTableFilterField, - DataTableRowAction, } from "@/types/table" import { useDataTable } from "@/hooks/use-data-table" import { getUserVendorDocuments, getUserVendorDocumentStats } from "@/lib/vendor-document-list/enhanced-document-service" import { DataTableAdvancedToolbar } from "@/components/data-table/data-table-advanced-toolbar" -import { toast } from "sonner" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" -import { FileText, FileInput, FileOutput, FolderOpen, Building2 } from "lucide-react" +import { FileText, FileInput, FileOutput, Building2 } from "lucide-react" import { Label } from "@/components/ui/label" import { DataTable } from "@/components/data-table/data-table" @@ -67,8 +64,11 @@ export function SimplifiedDocumentsTable({ const [documentResult, statsResult] = promiseResults // 🔥 데이터 구조분해를 메모이제이션 - const { data, pageCount, total, drawingKind, vendorInfo } = React.useMemo(() => documentResult, [documentResult]) - const { stats, totalDocuments, primaryDrawingKind } = React.useMemo(() => statsResult, [statsResult]) + const documentData = React.useMemo(() => documentResult as Awaited<ReturnType<typeof getUserVendorDocuments>>, [documentResult]) + const statsData = React.useMemo(() => statsResult as Awaited<ReturnType<typeof getUserVendorDocumentStats>>, [statsResult]) + + const { data, pageCount, drawingKind } = documentData + const { primaryDrawingKind, b4Stats: serverB4Stats } = statsData // 🔥 B4 필터 상태 추가 const [b4FilterType, setB4FilterType] = React.useState<'all' | 'gtt_deliverable' | 'shi_input'>('all') @@ -98,7 +98,7 @@ export function SimplifiedDocumentsTable({ // 🔥 B4 및 Project Code 필터링된 데이터 메모이제이션 const filteredData = React.useMemo(() => { - let result = data + let result: SimplifiedDocumentsView[] = data // B4 필터 적용 if (b4FilterType !== 'all') { @@ -126,15 +126,9 @@ export function SimplifiedDocumentsTable({ } }, [filteredData, handleDataLoaded]) - // 🔥 상태들을 안정적으로 관리 - const [rowAction, setRowAction] = React.useState<DataTableRowAction<SimplifiedDocumentsView> | null>(null) - const [expandedRows] = React.useState<Set<string>>(() => new Set()) - // 🔥 컬럼 메모이제이션 최적화 const columns = React.useMemo( - () => getSimplifiedDocumentColumns({ - setRowAction, - }), + () => getSimplifiedDocumentColumns({}), [] ) @@ -284,7 +278,7 @@ export function SimplifiedDocumentsTable({ // 🔥 테이블 초기 상태 메모이제이션 const tableInitialState = React.useMemo(() => ({ - sorting: [{ id: "createdAt", desc: true }], + sorting: [{ id: "createdAt" as const, desc: true }], columnPinning: { right: ["actions"] }, }), []) @@ -314,20 +308,11 @@ export function SimplifiedDocumentsTable({ return activeDrawingKind ? DRAWING_KIND_INFO[activeDrawingKind] : null }, [activeDrawingKind]) - // 🔥 B4 문서 통계 계산 + // 🔥 B4 문서 통계 - 서버에서 받아온 전체 통계 사용 const b4Stats = React.useMemo(() => { - if (!hasB4Documents) return null - - const gttDeliverableCount = data.filter(doc => - doc.drawingKind === 'B4' && doc.drawingMoveGbn === '도면입수' - ).length - - const shiInputCount = data.filter(doc => - doc.drawingKind === 'B4' && doc.drawingMoveGbn === '도면제출' - ).length - - return { gttDeliverableCount, shiInputCount } - }, [data, hasB4Documents]) + if (!hasB4Documents || !serverB4Stats) return null + return serverB4Stats + }, [hasB4Documents, serverB4Stats]) return ( <div className="w-full space-y-4"> |
