@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 ?? '—' }}
Группа
{{ (groupName$ | async) ?? '#' + 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 {
    @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) {

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

} } } } }