#2 - тест, #5 - готово. Разовое редактирование занятия без изменений правила

This commit is contained in:
Zuev
2026-07-22 00:15:35 +03:00
parent ee876f1acd
commit 92ff87a917
33 changed files with 3324 additions and 251 deletions

View File

@@ -47,12 +47,18 @@
</select>
</div>
<input type="date" id="schedule-view-date" style="display: none;">
<input type="date" id="schedule-view-date" hidden>
</div>
<details class="schedule-view-extra-filters">
<summary>Дополнительные фильтры</summary>
<div class="schedule-view-extra-grid">
<div class="form-group">
<label for="schedule-view-semester">Семестр</label>
<select id="schedule-view-semester">
<option value="">По текущей дате</option>
</select>
</div>
<div class="form-group">
<label for="schedule-view-subject">Дисциплина</label>
<select id="schedule-view-subject">
@@ -87,6 +93,10 @@
<span class="muted" id="schedule-view-count">0 занятий</span>
</div>
<div class="schedule-view-result-actions">
<button type="button" class="btn btn-md btn-secondary" id="schedule-view-overrides-open" hidden>
Изменения за период
<span class="schedule-override-count" id="schedule-view-overrides-count">0</span>
</button>
<button type="button" class="btn btn-icon-md btn-secondary" id="schedule-view-result-prev" aria-label="Предыдущее расписание">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<polyline points="15 18 9 12 15 6"></polyline>
@@ -116,3 +126,102 @@
</div>
</div>
</section>
<div class="schedule-override-drawer" id="schedule-override-drawer" hidden aria-hidden="true">
<button type="button" class="schedule-override-backdrop" data-override-close aria-label="Закрыть панель"></button>
<aside class="schedule-override-panel" role="dialog" aria-modal="true" aria-labelledby="schedule-override-title">
<header class="schedule-override-header">
<div>
<span class="schedule-override-eyebrow">Точечное изменение</span>
<h2 id="schedule-override-title">Конкретное занятие</h2>
</div>
<button type="button" class="btn btn-icon-md btn-secondary" data-override-close aria-label="Закрыть">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true">
<path d="M6 6l12 12M18 6L6 18"></path>
</svg>
</button>
</header>
<nav class="schedule-override-tabs" aria-label="Разовые изменения">
<button type="button" class="schedule-override-tab active" data-override-tab="edit">Редактирование</button>
<button type="button" class="schedule-override-tab" data-override-tab="registry">Изменения за период</button>
</nav>
<div class="schedule-override-body">
<section data-override-section="edit">
<div class="schedule-override-empty" id="schedule-override-empty">
Выберите занятие в расписании или откройте его из реестра изменений.
</div>
<form id="schedule-override-form" hidden>
<div class="schedule-override-comparison">
<article>
<span>Было по правилу</span>
<strong id="schedule-override-before-title"></strong>
<p id="schedule-override-before-meta"></p>
</article>
<article class="schedule-override-after">
<span>Станет</span>
<strong id="schedule-override-after-title"></strong>
<p id="schedule-override-after-meta"></p>
</article>
</div>
<fieldset class="schedule-override-fieldset">
<legend>Дата занятия</legend>
<div class="schedule-override-week" id="schedule-override-week"></div>
<button type="button" class="btn btn-md btn-secondary schedule-override-calendar-toggle" id="schedule-override-calendar-toggle">
Выбрать другую дату
</button>
<div class="schedule-override-calendar" id="schedule-override-calendar" hidden></div>
</fieldset>
<div class="schedule-override-fields">
<div class="form-group">
<label for="schedule-override-time">Время</label>
<select id="schedule-override-time" data-native-select="true" required></select>
</div>
<div class="form-group">
<label for="schedule-override-teacher">Преподаватель</label>
<select id="schedule-override-teacher" data-native-select="true"></select>
</div>
<div class="form-group">
<label for="schedule-override-classroom">Аудитория</label>
<select id="schedule-override-classroom" data-native-select="true"></select>
</div>
<div class="form-group">
<label for="schedule-override-format">Формат</label>
<select id="schedule-override-format" data-native-select="true">
<option value="Очно">Очно</option>
<option value="Онлайн">Онлайн</option>
</select>
</div>
</div>
<div class="form-group">
<label for="schedule-override-comment">Комментарий</label>
<textarea id="schedule-override-comment" rows="3" maxlength="1000" placeholder="Например, замена аудитории из-за мероприятия"></textarea>
</div>
<div class="form-alert" id="schedule-override-alert" role="alert"></div>
<footer class="schedule-override-actions">
<button type="submit" class="btn btn-md btn-primary" id="schedule-override-save">Сохранить</button>
<button type="button" class="btn btn-md btn-danger-subtle" id="schedule-override-cancel">Отменить занятие</button>
<button type="button" class="btn btn-md btn-secondary" id="schedule-override-restore" hidden>Вернуть по правилу</button>
</footer>
</form>
</section>
<section data-override-section="registry" hidden>
<div class="schedule-override-registry-heading">
<div>
<h3>Изменения за выбранный период</h3>
<span class="muted" id="schedule-override-registry-period"></span>
</div>
</div>
<div class="schedule-override-registry" id="schedule-override-registry"></div>
</section>
</div>
</aside>
</div>