Files
magistr/frontend/admin/views/teacher-absences.html
2026-08-06 01:10:33 +03:00

103 lines
5.6 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<section class="absence-command-card">
<div class="absence-command-copy">
<span class="absence-kicker">Оперативный контур расписания</span>
<h2>От регистрации инцидента до готовой замены</h2>
<p>Зафиксируйте период отсутствия, проверьте затронутые пары и примените только выбранные решения.</p>
</div>
<div class="absence-command-stats" aria-label="Сводка отсутствий">
<article><strong id="absence-stat-active">0</strong><span>требуют внимания</span></article>
<article><strong id="absence-stat-pending">0</strong><span>ждут подтверждения</span></article>
<article><strong id="absence-stat-resolved">0</strong><span>разрешены</span></article>
</div>
</section>
<section class="card absence-create-card">
<div class="card-header-row">
<div>
<span class="absence-section-number">01</span>
<h2>Зарегистрировать отсутствие</h2>
</div>
<span class="muted">Ответственный сотрудник создаёт согласованную запись сразу</span>
</div>
<form id="teacher-absence-form" novalidate>
<div class="absence-form-grid">
<div class="form-group absence-teacher-field">
<label for="teacher-absence-teacher">Преподаватель</label>
<select id="teacher-absence-teacher" required>
<option value="">Загрузка...</option>
</select>
</div>
<div class="form-group">
<label for="teacher-absence-start">Начало</label>
<input type="date" id="teacher-absence-start" required>
</div>
<div class="form-group">
<label for="teacher-absence-end">Окончание</label>
<input type="date" id="teacher-absence-end" required>
</div>
<div class="form-group absence-reason-field">
<label for="teacher-absence-reason">Причина</label>
<input type="text" id="teacher-absence-reason" maxlength="2000"
placeholder="Болезнь, командировка или другая причина" required>
</div>
<button type="submit" class="btn btn-md btn-primary absence-create-submit">Зарегистрировать</button>
</div>
<div class="form-alert" id="teacher-absence-form-alert" role="alert"></div>
</form>
</section>
<section class="card absence-registry-card">
<div class="card-header-row absence-registry-head">
<div>
<span class="absence-section-number">02</span>
<h2>Реестр инцидентов</h2>
</div>
<div class="absence-registry-actions">
<select id="teacher-absence-status-filter" aria-label="Фильтр по статусу">
<option value="">Все статусы</option>
<option value="PENDING">На подтверждении</option>
<option value="APPROVED">Согласованы</option>
<option value="RESOLVED">Разрешены</option>
<option value="REJECTED">Отклонены</option>
<option value="CANCELLED">Отменены</option>
</select>
<button type="button" class="btn btn-md btn-secondary" id="teacher-absence-refresh">Обновить</button>
</div>
</div>
<div class="absence-registry" id="teacher-absence-registry" aria-live="polite">
<div class="loading-row">Загрузка...</div>
</div>
</section>
<div class="absence-wizard-overlay" id="absence-wizard-overlay" hidden>
<section class="absence-wizard" role="dialog" aria-modal="true" aria-labelledby="absence-wizard-title">
<header class="absence-wizard-header">
<div>
<span class="absence-kicker">Мастер замены</span>
<h2 id="absence-wizard-title">Затронутые занятия</h2>
<p id="absence-wizard-summary">Загрузка...</p>
</div>
<button type="button" class="btn btn-icon-md btn-ghost" id="absence-wizard-close" aria-label="Закрыть">×</button>
</header>
<div class="absence-wizard-progress" aria-hidden="true">
<span class="done">Инцидент</span><i></i><span class="done">Занятия</span><i></i><span>Решения</span>
</div>
<div class="form-alert" id="absence-wizard-alert" role="alert"></div>
<div class="absence-wizard-lessons" id="absence-wizard-lessons"></div>
<section class="absence-journal">
<div class="card-header-row">
<h3>Журнал решений</h3>
<span class="muted" id="absence-journal-count">0 записей</span>
</div>
<div id="absence-journal-list" class="absence-journal-list"></div>
</section>
<footer class="absence-wizard-footer">
<span class="muted">Пустые строки останутся без изменений</span>
<div>
<button type="button" class="btn btn-md btn-ghost" id="absence-wizard-cancel">Закрыть</button>
<button type="button" class="btn btn-md btn-primary" id="absence-wizard-apply">Применить выбранные</button>
</div>
</footer>
</section>
</div>