);
}
export const JALALI_MONTHS = ['فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'];
const MONTH_OPTIONS: SelectorOption[] = JALALI_MONTHS.map((label, i) => ({ value: i + 1, label }));
/** سال جاری و ۳ سال گذشتهی شمسی */
function yearOptions(currentYear: number): SelectorOption[] {
return [0, 1, 2, 3].map((back) => ({
value: currentYear - back,
label: `سال ${new Intl.NumberFormat('fa-IR', { useGrouping: false }).format(currentYear - back)}`,
}));
}
export interface TauriDashboardViewProps {
stats: DashboardStats;
/** «نمودار تعداد بیماران» series (appointments_by_day) */
patientBars: ChartPoint[];
/** «میزان درآمد» series (revenue_by_day) */
incomeLine: ChartPoint[];
appointments: ApptRow[];
/** جایگزین جدول ساده — برای نمایش نسخهٔ فیلتردار/قابلویرایش. */
appointmentsSlot?: React.ReactNode;
loading: boolean;
formatNumber: (n: number) => string;
formatRial: (rial: number) => string;
/** ماه شمسی نمودار بیماران (۱..۱۲) */
patientsMonth: number;
onPatientsMonthChange: (m: number) => void;
/** سال شمسی نمودار درآمد */
revenueYear: number;
onRevenueYearChange: (y: number) => void;
/** سال شمسی جاری — مبنای گزینههای سلکتور سال */
currentJalaliYear: number;
/** ماه شمسی جاری (۱..۱۲) — مرز دادهٔ واقعی و پیشبینی در نمودار درآمد */
currentJalaliMonth: number;
}
export function TauriDashboardView({
stats,
patientBars,
incomeLine,
appointments,
appointmentsSlot,
loading,
formatNumber,
formatRial,
patientsMonth,
onPatientsMonthChange,
revenueYear,
onRevenueYearChange,
currentJalaliYear,
currentJalaliMonth,
}: TauriDashboardViewProps) {
const yearOpts = React.useMemo(() => yearOptions(currentJalaliYear), [currentJalaliYear]);
// در سالِ جاری فقط تا ماه جاری دادهی واقعی وجود دارد؛ بقیه پیشبینی میشود.
// سالهای گذشته کاملاند و پیشبینی ندارند.
const incomeActualCount = revenueYear === currentJalaliYear ? currentJalaliMonth : undefined;
return (
{/* Cards */}
{/* Charts — grid-2 (1fr 1fr, collapses to 1fr on narrow) for reliable
full-width equal columns, matching the rest of the admin dashboard */}
{/* New appointments list */}
لیست نوبتهای جدید
نوبتها
{/* والد میتواند نسخهٔ فیلتردار را جای جدول ساده بنشاند. */}
{appointmentsSlot ?? }