3 Задача
This commit is contained in:
@@ -3,14 +3,14 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Расписание преподавателя</title>
|
||||
<title>Кабинет преподавателя</title>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<main class="shell">
|
||||
<header class="topbar">
|
||||
<div class="title">
|
||||
<h1>Расписание преподавателя</h1>
|
||||
<h1>Кабинет преподавателя</h1>
|
||||
<span id="week-label">Загрузка периода...</span>
|
||||
</div>
|
||||
<div class="actions">
|
||||
@@ -23,6 +23,15 @@
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<nav class="workspace-nav" aria-label="Разделы кабинета">
|
||||
<button class="workspace-tab active" type="button" data-workspace-tab="schedule">Расписание</button>
|
||||
<button class="workspace-tab" type="button" data-workspace-tab="preferences">Мои пожелания</button>
|
||||
<button class="workspace-tab" type="button" data-workspace-tab="requests">
|
||||
Заявки на изменение <span id="change-request-count">0</span>
|
||||
</button>
|
||||
</nav>
|
||||
|
||||
<section class="workspace-view active" data-workspace-view="schedule">
|
||||
<section class="toolbar">
|
||||
<div class="week-nav">
|
||||
<button class="btn btn-icon-md btn-secondary" id="prev-week" type="button" aria-label="Предыдущая неделя">
|
||||
@@ -71,8 +80,133 @@
|
||||
<div class="teacher-absence-list" id="teacher-absence-list" aria-live="polite"></div>
|
||||
</section>
|
||||
<section class="schedule" id="schedule-grid" aria-live="polite"></section>
|
||||
</section>
|
||||
|
||||
<section class="workspace-view" data-workspace-view="preferences" hidden>
|
||||
<section class="preference-hero">
|
||||
<div>
|
||||
<span class="preference-kicker">Контур доступности</span>
|
||||
<h2>Соберите ритм семестра до составления расписания</h2>
|
||||
<p>Строгая недоступность блокирует назначение. Мягкие отметки и пожелания к компактности помогают учебному отделу выбрать удобный вариант.</p>
|
||||
</div>
|
||||
<label class="preference-semester-field">
|
||||
<span>Семестр</span>
|
||||
<select id="preference-semester"></select>
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<section class="preference-board">
|
||||
<header class="preference-board-head">
|
||||
<div>
|
||||
<span>Недельный шаблон</span>
|
||||
<h3>Отмечайте интервалы одним касанием</h3>
|
||||
</div>
|
||||
<label>
|
||||
<span>Режим отметки</span>
|
||||
<select id="preference-brush">
|
||||
<option value="SOFT_PREFERRED">Предпочтительно</option>
|
||||
<option value="SOFT_UNWANTED">Нежелательно</option>
|
||||
<option value="HARD_UNAVAILABLE">Строго недоступен</option>
|
||||
</select>
|
||||
</label>
|
||||
</header>
|
||||
<div class="preference-legend" aria-label="Легенда">
|
||||
<span class="is-preferred">Предпочтительно</span>
|
||||
<span class="is-unwanted">Нежелательно</span>
|
||||
<span class="is-hard">Строгий запрет</span>
|
||||
<span class="is-pending">Ожидает согласования</span>
|
||||
</div>
|
||||
<div class="preference-grid-wrap">
|
||||
<div class="preference-grid" id="preference-grid" aria-live="polite"></div>
|
||||
</div>
|
||||
<div class="preference-message" id="preference-message" role="status"></div>
|
||||
</section>
|
||||
|
||||
<div class="preference-lower-grid">
|
||||
<section class="preference-card">
|
||||
<span class="preference-card-number">01</span>
|
||||
<h3>Полная недоступность</h3>
|
||||
<p>Добавьте отдельную дату внутри семестра — все пары этого дня будут считаться строгим ограничением.</p>
|
||||
<form id="preference-date-form" class="preference-date-form">
|
||||
<input type="date" id="preference-date" required>
|
||||
<input type="text" id="preference-date-comment" maxlength="2000" placeholder="Комментарий (необязательно)">
|
||||
<button class="btn btn-md btn-primary" type="submit">Добавить дату</button>
|
||||
</form>
|
||||
<div class="preference-date-list" id="preference-date-list"></div>
|
||||
</section>
|
||||
<section class="preference-card">
|
||||
<span class="preference-card-number">02</span>
|
||||
<h3>Компактность недели</h3>
|
||||
<p>Эти мягкие пожелания не отменяют занятия автоматически, но видны при составлении правил.</p>
|
||||
<label class="preference-toggle-card">
|
||||
<input type="checkbox" id="preference-consecutive">
|
||||
<span><strong>Пары подряд</strong><small>Собирать занятия последовательными блоками</small></span>
|
||||
</label>
|
||||
<label class="preference-toggle-card">
|
||||
<input type="checkbox" id="preference-no-gaps">
|
||||
<span><strong>Без окон</strong><small>Не оставлять пустые интервалы между занятиями</small></span>
|
||||
</label>
|
||||
</section>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="workspace-view" data-workspace-view="requests" hidden>
|
||||
<section class="request-ledger-head">
|
||||
<div>
|
||||
<span>Журнал решений</span>
|
||||
<h2>Заявки на изменение занятий</h2>
|
||||
<p>Откройте занятие в расписании, чтобы запросить перенос, другую аудиторию или отмену. Здесь сохраняются статус, комментарий и вся история решения.</p>
|
||||
</div>
|
||||
<button class="btn btn-md btn-secondary" id="change-request-refresh" type="button">Обновить</button>
|
||||
</section>
|
||||
<div class="request-ledger" id="change-request-list" aria-live="polite"></div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<div class="request-dialog-overlay" id="request-dialog-overlay" hidden>
|
||||
<section class="request-dialog" role="dialog" aria-modal="true" aria-labelledby="request-dialog-title">
|
||||
<header>
|
||||
<div>
|
||||
<span>Предварительная проверка</span>
|
||||
<h2 id="request-dialog-title">Заявка на изменение</h2>
|
||||
<p id="request-dialog-lesson">Загрузка занятия...</p>
|
||||
</div>
|
||||
<button class="btn btn-icon-md btn-secondary" id="request-dialog-close" type="button" aria-label="Закрыть">×</button>
|
||||
</header>
|
||||
<form id="change-request-form">
|
||||
<label>
|
||||
<span>Что изменить</span>
|
||||
<select id="change-request-type">
|
||||
<option value="MOVE">Перенести дату или время</option>
|
||||
<option value="CHANGE_CLASSROOM">Сменить аудиторию</option>
|
||||
<option value="CANCEL">Отменить занятие</option>
|
||||
</select>
|
||||
</label>
|
||||
<label data-request-field="date">
|
||||
<span>Новая дата</span>
|
||||
<select id="change-request-date"></select>
|
||||
</label>
|
||||
<label data-request-field="time">
|
||||
<span>Новая пара</span>
|
||||
<select id="change-request-time"></select>
|
||||
</label>
|
||||
<label data-request-field="classroom" hidden>
|
||||
<span>Новая аудитория</span>
|
||||
<select id="change-request-classroom"></select>
|
||||
</label>
|
||||
<label class="request-reason-field">
|
||||
<span>Обоснование</span>
|
||||
<textarea id="change-request-reason" maxlength="2000" rows="4" placeholder="Почему требуется изменение" required></textarea>
|
||||
</label>
|
||||
<div class="request-dialog-message" id="request-dialog-message" role="alert"></div>
|
||||
<footer>
|
||||
<button class="btn btn-md btn-secondary" id="request-dialog-cancel" type="button">Закрыть</button>
|
||||
<button class="btn btn-md btn-primary" type="submit">Отправить в учебный отдел</button>
|
||||
</footer>
|
||||
</form>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<script type="module" src="app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user