"use client"; import React, { useEffect, useState } from "react"; import { Card, CardContent, CardHeader, CardTitle } from "~/components/ui/card"; import { Area, AreaChart, Bar, CartesianGrid, ResponsiveContainer, Tooltip, XAxis, YAxis, } from "recharts"; import { CustomBarChart } from "~/components/ui/custom-bar-chart"; import apiService from "~/lib/api"; export interface InfoPanelProps { selectedCompany: { id: string; label?: string } | null; } interface EcosystemCounts { knowledge_based_count: string; consultant_count: string; startup_count: string; innovation_center_count: string; accelerator_count: string; university_count: string; fund_count: string; company_count: string; actor_count: string; mou_count: string; } export function InfoPanel({ selectedCompany }: InfoPanelProps) { const [counts, setCounts] = useState(null); const [isLoading, setIsLoading] = useState(true); useEffect(() => { const fetchCounts = async () => { setIsLoading(true); try { const res = await apiService.callInnovationProcess({ ecosystem_counts_function: {}, }); setCounts(res.data); } catch (err) { console.error("Failed to fetch ecosystem counts:", err); } finally { setIsLoading(false); } }; fetchCounts(); }, []); const title = selectedCompany?.label || "نمای کلی"; const subTitle = selectedCompany ? `شناسه: ${selectedCompany.id}` : "انتخابی انجام نشده است"; // Transform counts into chart-friendly data const barData = counts && !selectedCompany ? [ { name: "دانش بنیان", value: +counts.knowledge_based_count }, { name: "مشاور", value: +counts.consultant_count }, { name: "استارتاپ", value: +counts.startup_count }, { name: "مرکز نوآوری", value: +counts.innovation_center_count }, { name: "شتابدهنده", value: +counts.accelerator_count }, { name: "دانشگاه", value: +counts.university_count }, { name: "صندوق", value: +counts.fund_count }, { name: "شرکت", value: +counts.company_count }, ] : []; const lineData = [ { month: "01", value: 3 }, { month: "02", value: 6 }, { month: "03", value: 4 }, { month: "04", value: 9 }, { month: "05", value: 7 }, { month: "06", value: 11 }, ]; return (
{title}
{subTitle}
{isLoading ? (
در حال بارگذاری...
) : selectedCompany ? (
این یک باکس اطلاعات نمونه است. پس از دریافت API، جزئیات شرکت نمایش داده می‌شود.
) : counts ? (
تعداد بازیگران اکوسیستم: {counts.actor_count}
تعداد تفاهم نامه ها: {counts.mou_count}
{/* Grid for categories */}
دانش بنیان: {counts.knowledge_based_count}
مشاور: {counts.consultant_count}
استارتاپ: {counts.startup_count}
مرکز نوآوری: {counts.innovation_center_count}
شتابدهنده: {counts.accelerator_count}
دانشگاه: {counts.university_count}
صندوق: {counts.fund_count}
شرکت: {counts.company_count}
) : (
خطا در بارگذاری داده‌ها.
)}
{/* Bar Chart Section */}
{selectedCompany ? "نمودار میله‌ای" : "نمودار تعداد بر اساس دسته‌بندی"} {barData.length > 0 && ( )}
{/* Line/Area Chart Section */}
روند نمونه
); } export default InfoPanel;