import React, { useState } from 'react'; import { University1415Dimension } from '../types/futures'; import { SpiderChart } from '../components/visual/SpiderChart'; import { PageHeader } from '../components/common/PageHeader'; import { StatCard } from '../components/common/StatCard'; import { toPersianDigits } from '../utils/persianNumbers'; import { HORIZON_END } from '../utils/horizon'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Tabs, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Progress } from '@/components/ui/progress'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { Target, AlertTriangle, Award } from 'lucide-react'; interface GapAnalysisPageProps { dimensions: University1415Dimension[]; onSelectDimension: (dim: University1415Dimension) => void; } export const GapAnalysisPage: React.FC = ({ dimensions, onSelectDimension }) => { const [tab, setTab] = useState<'spider' | 'table'>('spider'); if (!dimensions.length) return null; const byGap = [...dimensions].sort((a, b) => b.gap - a.gap); const byScore = [...dimensions].sort((a, b) => b.currentScore - a.currentScore); const avgReadiness = Math.round( dimensions.reduce((acc, d) => acc + d.readinessPercentage, 0) / dimensions.length ); const widestGap = byGap[0]; const strongest = byScore[0]; return (
setTab(v as typeof tab)}> نمودار عنکبوتی جدول } />
onSelectDimension(widestGap)} /> onSelectDimension(byGap[1])} /> onSelectDimension(strongest)} />
{tab === 'spider' && (
رتبه‌بندی شکاف‌ها

از بیشترین فاصله تا کمترین.

    {byGap.map((dim, idx) => (
  • ))}
)} {tab === 'table' && (
ویژگی موجود هدف شکاف آمادگی اقدام پیشنهادی {dimensions.map((dim) => ( onSelectDimension(dim)} className="cursor-pointer" > {dim.title} {toPersianDigits(dim.currentScore)} {toPersianDigits(dim.targetScore)} {toPersianDigits(dim.gap)} {toPersianDigits(dim.readinessPercentage)}٪ {dim.strategicRecommendations[0]} ))}
)}
); };