@if (eventState$ | async; as state) { @switch (state.status) { @case ('loading') {
} @case ('error') {

Не удалось загрузить мероприятие.

} @case ('ok') {

{{ state.event.name }}

@switch (activeTabIndex()) { @case (0) {

Сведения о мероприятии

ID
{{ state.event.id }}
Название
{{ state.event.name }}
Описание
{{ state.event.description ?? '—' }}
Группа
{{ state.event.group_id }}
Дата загрузки
{{ formatDate(state.event.date) }}
} @case (1) {

Работы мероприятия

@if (worksState$ | async; as ws) { @switch (ws.status) { @case ('loading') { } @case ('error') {

Ошибка загрузки.

} @case ('ok') { @if (ws.works.length === 0) {

Работ нет.

} @else {
    @for (w of ws.works; track w.id) {
  • Работа {{ w.id }} student={{ w.student_id }}, {{ formatDate(w.time) }}
  • }
} } } }
} @case (2) {

Дашборд мероприятия

@if (summaryState$ | async; as ss) { @switch (ss.status) { @case ('loading') { } @case ('error') {

Ошибка загрузки дашборда.

} @case ('ok') { @if (ss.dashboard.presentation_summary; as m) {
Всего работ{{ m.works_total ?? 0 }}
Проверено{{ m.works_checked ?? 0 }}
Plagiarism rate{{ m.plagiarism_rate ?? '—' }}
Risk{{ m.risk_level ?? '—' }}
} @else {

Метрики недоступны.

} @if (ss.dashboard.works; as cards) { @if (cards.length > 0) {

Карточки работ

    @for (c of cards; track c.work_id) {
  • Работа {{ c.work_id }} {{ c.risk_level ?? '—' }} {{ c.student_name ?? '—' }}, score={{ c.trust_score ?? '—' }}
  • }
} } } } }
} @case (3) {

Редактирование

} } } } }