@if (eventState$ | async; as state) {
@switch (state.status) {
@case ('loading') {
}
@case ('error') {
Не удалось загрузить мероприятие.
}
@case ('ok') {
{{ state.event.name }}
@switch (activeTabIndex()) {
@case (0) {
}
@case (1) {
Работы мероприятия
@if (worksState$ | async; as ws) {
@switch (ws.status) {
@case ('loading') { }
@case ('error') {}
@case ('ok') {
@if (ws.works.length === 0) {
Работ нет.
} @else {
@if (studentNamesMap$ | async; as names) {
@for (w of ws.works; track w.id) {
-
Работа #{{ w.id }}
{{ names[w.student_id] ?? '#' + 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 }}
Доля заимствований{{ m.plagiarism_rate ?? '—' }}
Уровень риска{{ m.risk_level | riskLevel }}
} @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 | riskLevel }}
{{ c.student_name ?? '—' }}, индекс доверия: {{ c.trust_score ?? '—' }}
}
}
}
}
}
}
}
@case (3) {
@if (summaryState$ | async; as ss) {
@if (ss.status === 'ok') {
} @else if (ss.status === 'loading') {
}
}
}
@case (4) {
Редактирование
}
}
}
}
}