import React from 'react'; import { useParams, useNavigate, Link } from 'react-router-dom'; import { Card, Descriptions, Spin, Button, Tag } from 'antd'; import { useCalendar } from '../../hooks/useCalendars'; import dayjs from 'dayjs'; const CalendarDetailPage: React.FC = () => { const { id } = useParams<{ id: string }>(); const navigate = useNavigate(); const { data: calendar, isLoading } = useCalendar(id || ''); const isBadValue = (val: unknown) => val === '-' || val === 'undefined' || val === '' || val === null || val === undefined; const displayValue = (val: unknown) => (isBadValue(val) ? '-' : String(val)); const formatDate = (dateStr: string) => { if (isBadValue(dateStr)) return '-'; const d = dayjs(dateStr); return d.isValid() ? d.format('DD.MM.YYYY HH:mm') : dateStr; }; if (isLoading) return ; if (!calendar) return

Календарь не найден

; const tagsStr = Array.isArray(calendar.tags) && calendar.tags.length > 0 ? calendar.tags.join(', ') : '-'; return ( {calendar.id} {calendar.title} {displayValue(calendar.short_name)} {displayValue(calendar.description)} {calendar.type} {calendar.status} {displayValue(calendar.reason)} {displayValue(calendar.category)} {!isBadValue(calendar.owner_id) ? ( {calendar.owner_id} ) : '-'} {displayValue(calendar.color)} {displayValue(calendar.image_url)} {displayValue(calendar.confirmation)} {tagsStr} {calendar.rating_avg} ({calendar.rating_count}) {calendar.settings ? JSON.stringify(calendar.settings) : '-'} {formatDate(calendar.created_at)} {formatDate(calendar.updated_at)} ); }; export default CalendarDetailPage;