diff options
Diffstat (limited to 'lib/basic-contract/status-detail/basic-contracts-detail-table.tsx')
| -rw-r--r-- | lib/basic-contract/status-detail/basic-contracts-detail-table.tsx | 66 |
1 files changed, 52 insertions, 14 deletions
diff --git a/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx b/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx index 2698842e..f18359de 100644 --- a/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx +++ b/lib/basic-contract/status-detail/basic-contracts-detail-table.tsx @@ -9,9 +9,11 @@ import type { DataTableRowAction, } from "@/types/table" import { getDetailColumns } from "./basic-contracts-detail-columns" -import { getBasicContractsByTemplateId } from "@/lib/basic-contract/service" +import { getBasicContractsByTemplateId, checkGTCCommentsForContracts } from "@/lib/basic-contract/service" import { BasicContractView } from "@/db/schema" import { BasicContractDetailTableToolbarActions } from "./basic-contract-detail-table-toolbar-actions" +import { toast } from "sonner" +import { useRouter } from "next/navigation" interface BasicContractsDetailTableProps { templateId: number @@ -25,14 +27,52 @@ interface BasicContractsDetailTableProps { export function BasicContractsDetailTable({ templateId, promises }: BasicContractsDetailTableProps) { const [rowAction, setRowAction] = React.useState<DataTableRowAction<BasicContractView> | null>(null) + + // GTC data 상태 관리 + const [gtcData, setGtcData] = React.useState<Record<number, { gtcDocumentId: number | null; hasComments: boolean }>>({}) + const [isLoadingGtcData, setIsLoadingGtcData] = React.useState(false) const [{ data, pageCount }] = React.use(promises) + const router = useRouter() - console.log(data,"data") + console.log(gtcData, "gtcData") + console.log(data, "data") + + // GTC data 로딩 + React.useEffect(() => { + const loadGtcData = async () => { + if (!data || data.length === 0) return; + + // GTC가 포함된 template이 있는지 확인 + const hasGtcTemplates = data.some(contract => + contract.templateName?.includes('GTC') + ); + + if (!hasGtcTemplates) return; + + setIsLoadingGtcData(true); + try { + const gtcResults = await checkGTCCommentsForContracts(data); + setGtcData(gtcResults); + } catch (error) { + console.error('Error checking GTC data:', error); + toast.error("GTC 데이터를 불러오는데 실패했습니다."); + } finally { + setIsLoadingGtcData(false); + } + }; + + loadGtcData(); + }, [data]); const columns = React.useMemo( - () => getDetailColumns({ setRowAction }), - [setRowAction] + () => getDetailColumns({ + setRowAction, + gtcData, + isLoadingGtcData , + router + }), + [setRowAction, gtcData, isLoadingGtcData, router] ) const advancedFilterFields: DataTableAdvancedFilterField<BasicContractView>[] = [ @@ -76,15 +116,13 @@ export function BasicContractsDetailTable({ templateId, promises }: BasicContrac }) return ( - <> - <DataTable table={table}> - <DataTableAdvancedToolbar - table={table} - filterFields={advancedFilterFields} - > - <BasicContractDetailTableToolbarActions table={table} /> - </DataTableAdvancedToolbar> - </DataTable> - </> + <DataTable table={table}> + <DataTableAdvancedToolbar + table={table} + filterFields={advancedFilterFields} + > + <BasicContractDetailTableToolbarActions table={table} /> + </DataTableAdvancedToolbar> + </DataTable> ) }
\ No newline at end of file |
