"use client"; import { useState, useTransition } from "react"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Button } from "@/components/ui/button"; import { RefreshCw } from "lucide-react"; import { DashboardStatsCard } from "./dashboard-stats-card"; import { DashboardOverviewChart } from "./dashboard-overview-chart"; import { DashboardSummaryCards } from "./dashboard-summary-cards"; import { toast } from "sonner"; import { DashboardData, getDashboardData } from "./service"; interface DashboardClientProps { initialData: DashboardData; } export function DashboardClient({ initialData }: DashboardClientProps) { const [data, setData] = useState(initialData); const [isPending, startTransition] = useTransition(); console.log(data) const { domain, teamStats, userStats, summary } = data; const getDomainDisplayName = (domain: string) => { const domainNames: Record = { 'procurement': '구매 관리', 'sales': '영업 관리', "partners": 'Partners', 'engineering': '엔지니어링' }; return domainNames[domain] || domain; }; const handleRefresh = () => { startTransition(async () => { try { const refreshedData = await getDashboardData(domain); setData(refreshedData); toast.success("데이터가 새로고침되었습니다."); } catch (error) { console.error("Refresh failed:", error); toast.error("데이터 새로고침에 실패했습니다."); } }); }; // 데이터가 없으면 에러 상태 표시 if (!summary) { return (

데이터를 불러올 수 없습니다.

); } return (
{/* 헤더 */}

{getDomainDisplayName(domain)} Dashboard

{domain === "partners" ? "회사와 개인에게 할당된 일들을 보여줍니다." : "팀과 개인에게 할당된 일들을 보여줍니다." }

{/* 요약 카드 */} {/* 차트 */} {/* 탭 */} {domain === "partners" ? "회사 업무 현황" : "팀 업무 현황"} 내 업무 현황
{teamStats.map((stats) => ( ))}
{userStats.map((stats) => ( ))}
); }