import { changeRequestTarget, changeTypeLabel, formatInstant, preferenceStatusLabel } from './teacher-service.js'; import { formatIsoDate, trimTime } from '../shared/dates.js'; export function RequestsTab({ items, onCancel, onRefresh, stateKind }) { return ( <>
Журнал решений

Заявки на изменение занятий

Откройте занятие в расписании, чтобы запросить перенос, другую аудиторию или отмену. Здесь сохраняются статус, комментарий и вся история решения.

{stateKind === 'error' ? (
Не удалось загрузить заявки
) : stateKind === 'loading' ? (
Загрузка заявок...
) : items.length === 0 ? (
Заявок на изменение пока нет. Откройте занятие во вкладке «Расписание».
) : items.map(item => ( ))}
); } function RequestLedgerItem({ item, onCancel }) { const history = item.history || []; const statusClass = String(item.status || '').toLowerCase(); return (
{formatIsoDate(item.lessonDate)} · {trimTime(item.sourceStartTime)}–{trimTime(item.sourceEndTime)}

{item.subjectName}

{(item.groupNames || []).join(', ')} · {item.sourceClassroomName}

{changeTypeLabel(item.requestType)} → {changeRequestTarget(item)}

{item.reason}

{item.reviewComment &&

Решение: {item.reviewComment}

}
История решения · {history.length}
    {history.map((entry, index) => (
  1. {preferenceStatusLabel(entry.status)} {entry.comment || 'Без комментария'}
  2. ))}
{preferenceStatusLabel(item.status)} {item.status === 'PENDING' && ( )}
); }