From 4614210aa9878922cfa1e424ce677ef893a1b6b2 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Mon, 29 Sep 2025 13:31:40 +0000 Subject: (대표님) 구매 권한설정, data room 등 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table/template-detail-dialog.tsx | 121 +++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 lib/project-doc-templates/table/template-detail-dialog.tsx (limited to 'lib/project-doc-templates/table/template-detail-dialog.tsx') diff --git a/lib/project-doc-templates/table/template-detail-dialog.tsx b/lib/project-doc-templates/table/template-detail-dialog.tsx new file mode 100644 index 00000000..0810a58a --- /dev/null +++ b/lib/project-doc-templates/table/template-detail-dialog.tsx @@ -0,0 +1,121 @@ +// lib/project-doc-template/template-detail-dialog.tsx +"use client"; + +import * as React from "react"; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { Badge } from "@/components/ui/badge"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { ProjectDocTemplateEditor } from "./project-doc-template-editor"; +import { getProjectDocTemplateById } from "@/lib/project-doc-templates/service"; +import type { ProjectDocTemplate } from "@/db/schema/project-doc-templates"; +import { formatDateTime } from "@/lib/utils"; +import { FileText, Clock, User, GitBranch, Variable } from "lucide-react"; + +interface TemplateDetailDialogProps { + template: ProjectDocTemplate; + open: boolean; + onOpenChange: (open: boolean) => void; +} + +export function TemplateDetailDialog({ + template, + open, + onOpenChange, +}: TemplateDetailDialogProps) { + const [templateDetail, setTemplateDetail] = React.useState(null); + const [isLoading, setIsLoading] = React.useState(true); + + // 템플릿 상세 정보 로드 + React.useEffect(() => { + if (open && template.id) { + setIsLoading(true); + getProjectDocTemplateById(template.id) + .then(setTemplateDetail) + .catch(console.error) + .finally(() => setIsLoading(false)); + } + }, [open, template.id]); + + return ( + + + + +
+ + {template.templateName} +
+
+ v{template.version} + {template.isLatest && 최신} + {template.status} +
+
+
+ + + + 문서 보기 + 버전 히스토리 + + + +
+ +
+
+ + + +
+ {templateDetail?.versionHistory && templateDetail.versionHistory.length > 0 ? ( + templateDetail.versionHistory.map((version: any) => ( + + + +
+ + 버전 {version.version} +
+
+ {version.isLatest && 최신} + {version.id === template.id && 현재} +
+
+
+ +
+

+ 생성일: {formatDateTime(version.createdAt, "KR")} +

+

+ 생성자: {version.createdByName || '-'} +

+

+ 파일: {version.fileName} +

+
+
+
+ )) + ) : ( +

버전 히스토리가 없습니다.

+ )} +
+
+
+
+
+ ); +} \ No newline at end of file -- cgit v1.2.3