/
erioxis
/
web-nodejs
Обзор
Документация
Войти
/
erioxis
/
web-nodejs
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
public/lab10/task2/index.html
551 строка
22 KB
erioxis
lab11fix
15 дек 2025, 23:21
15 дек 2025, 23:21
70dc7ba
Код
Авторство
О чём код?
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Задание 2: Расписание</title> <style> body { font-family: 'Tahoma', 'Arial', sans-serif; margin: 0; padding: 0; background: #008080 url('../../back.png') center/cover no-repeat fixed; color: #000; height: 100vh; overflow: hidden; } .desktop { padding: 20px; height: calc(100vh - 40px); position: relative; } .window { background-color: #ece9d8; border: 2px solid; border-top-color: #fff; border-left-color: #fff; border-right-color: #808080; border-bottom-color: #808080; padding: 3px; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 90%; max-width: 1200px; height: 85vh; box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.3); overflow: hidden; } .title-bar { background: linear-gradient(to right, #000080, #1084d0); color: white; padding: 3px 6px; font-weight: bold; font-size: 13px; display: flex; justify-content: space-between; align-items: center; } .window-content { padding: 15px; background: #ece9d8; height: calc(100% - 60px); overflow-y: auto; } h1 { color: #000080; text-align: center; margin: 0 0 20px 0; font-size: 18px; font-weight: bold; text-transform: uppercase; } .nav { display: flex; gap: 10px; margin-bottom: 20px; flex-wrap: wrap; } .button, .btn { background: linear-gradient(to bottom, #d4d0c8, #ece9d8); border: 2px solid; border-top-color: #fff; border-left-color: #fff; border-right-color: #808080; border-bottom-color: #808080; padding: 5px 10px; cursor: pointer; font-family: 'Tahoma'; font-size: 11px; color: #000; min-width: 100px; text-align: center; } .button:hover, .btn:hover { background: linear-gradient(to bottom, #316ac5, #245edb); color: white; border: 2px dotted #316ac5; } .content { display: none; padding: 15px; background: #fff; border: 1px solid #808080; margin-bottom: 15px; min-height: 400px; } .active { display: block; } .filter-form { padding: 15px; background: #d4d0c8; border: 1px solid #808080; margin-bottom: 20px; display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; align-items: center; } .filter-form label { font-weight: bold; font-size: 11px; color: #000080; display: block; margin-bottom: 3px; } .filter-form input, .filter-form select { padding: 4px 6px; border: 1px solid #808080; background: white; font-family: 'Tahoma'; font-size: 11px; width: 100%; } .schedule-table { width: 100%; border-collapse: collapse; font-size: 11px; margin-top: 10px; } .schedule-table th { background: linear-gradient(to bottom, #000080, #1084d0); color: white; padding: 6px 8px; text-align: left; border: 1px solid #808080; font-weight: bold; } .schedule-table td { padding: 5px 8px; border: 1px solid #808080; background: white; } .schedule-table tr:nth-child(even) td { background: #f0f0f0; } .tabs { display: flex; border-bottom: 1px solid #808080; margin-bottom: 15px; background: #d4d0c8; } .tab { padding: 6px 12px; cursor: pointer; border: 1px solid #808080; border-bottom: none; margin-right: 2px; background: linear-gradient(to bottom, #d4d0c8, #ece9d8); font-size: 11px; } .tab.active { background: #ece9d8; border-bottom: 1px solid #ece9d8; margin-bottom: -1px; } .tab-content { display: none; padding: 15px; background: #fff; border: 1px solid #808080; border-top: none; } .tab-content.active { display: block; } .form-group { margin-bottom: 12px; } .form-group label { display: block; margin-bottom: 3px; font-weight: bold; font-size: 11px; color: #000080; } .form-group input, .form-group select { width: 100%; padding: 4px 6px; border: 1px solid #808080; background: white; font-family: 'Tahoma'; font-size: 11px; } #schedule-result, #groups-list, #teachers-list, #disciplines-list, #rooms-list, #schedule-records-list { max-height: 400px; overflow-y: auto; border: 1px solid #808080; padding: 10px; background: #fff; font-size: 11px; } .error { color: #c00000; background: #ffe0e0; border: 1px solid #c00000; padding: 8px; margin: 10px 0; font-size: 11px; } .loading { text-align: center; padding: 30px; color: #808080; font-style: italic; font-size: 12px; } .taskbar { position: fixed; bottom: 0; left: 0; right: 0; background: linear-gradient(to bottom, #245edb, #1d52c1); height: 30px; display: flex; align-items: center; padding: 0 5px; border-top: 1px solid #fff; } .start-button { background: linear-gradient(to bottom, #6ca035, #3d751b); color: white; padding: 4px 10px; border: 1px solid; border-top-color: #fff; border-left-color: #fff; border-right-color: #2d4f0f; border-bottom-color: #2d4f0f; font-weight: bold; margin-right: 10px; font-size: 11px; } footer { display: none; } h2.title { color: #000080; font-size: 14px; margin-bottom: 15px; border-bottom: 1px solid #808080; padding-bottom: 5px; } h3 { font-size: 12px; margin-bottom: 15px; color: #000080; } ul { padding-left: 20px; margin: 10px 0; } li { margin-bottom: 5px; padding: 5px; border-bottom: 1px dotted #d4d0c8; } </style> </head> <body> <div class="desktop"> <div class="window"> <div class="title-bar"> <span>Задание 2: Расписание</span> <span style="font-family: 'Arial'; font-size: 16px;">_ □ X</span> </div> <div class="window-content"> <div style="margin-bottom: 20px;"> <button class="button" onclick="location.href='../'">← Назад к заданиям</button> </div> <h1>РАСПИСАНИЕ ЗАНЯТИЙ</h1> <div class="nav"> <button class="button" onclick="showContent('schedule-view')">Просмотр расписания</button> <button class="button" onclick="showContent('data-management')">Управление данными</button> </div> <!-- Просмотр расписания --> <div id="schedule-view" class="content active"> <h2 class="title">Фильтры расписания</h2> <div class="filter-form"> <div> <label>Группа:</label> <select id="group-filter"> <option value="">Все группы</option> </select> </div> <div> <label>Преподаватель:</label> <select id="teacher-filter"> <option value="">Все преподаватели</option> </select> </div> <div> <label>Дисциплина:</label> <select id="discipline-filter"> <option value="">Все дисциплины</option> </select> </div> <div> <label>Аудитория:</label> <select id="room-filter"> <option value="">Все аудитории</option> </select> </div> <div> <label>День недели:</label> <select id="day-filter"> <option value="">Все дни</option> <option value="Понедельник">Понедельник</option> <option value="Вторник">Вторник</option> <option value="Среда">Среда</option> <option value="Четверг">Четверг</option> <option value="Пятница">Пятница</option> <option value="Суббота">Суббота</option> </select> </div> <div> <label>Номер недели:</label> <input type="number" id="week-filter" min="1" max="52" placeholder="1-52"> </div> <div style="grid-column: 1 / -1; text-align: center;"> <button class="btn" onclick="loadSchedule()" style="min-width: 150px;">Показать расписание</button> </div> </div> <div id="schedule-result"></div> </div> <!-- Управление данными --> <div id="data-management" class="content"> <h2 class="title">Управление данными расписания</h2> <div class="tabs"> <div class="tab active" onclick="switchTab('groups-tab')">Группы</div> <div class="tab" onclick="switchTab('teachers-tab')">Преподаватели</div> <div class="tab" onclick="switchTab('disciplines-tab')">Дисциплины</div> <div class="tab" onclick="switchTab('rooms-tab')">Аудитории</div> <div class="tab" onclick="switchTab('schedule-tab')">Расписание</div> </div> <!-- Таблица групп --> <div id="groups-tab" class="tab-content active"> <h3>Добавить новую группу</h3> <div class="form-group"> <label>Название группы:</label> <input type="text" id="group-name" placeholder="Например: Группа 1"> </div> <button class="btn" onclick="addGroup()">Добавить группу</button> <h3 style="margin-top: 20px;">Список групп</h3> <div id="groups-list"></div> </div> <!-- Таблица преподавателей --> <div id="teachers-tab" class="tab-content"> <h3>Добавить нового преподавателя</h3> <div class="form-group"> <label>ФИО:</label> <input type="text" id="teacher-full-name" placeholder="Иванов И.И."> </div> <div class="form-group"> <label>Должность:</label> <input type="text" id="teacher-position" placeholder="Доцент"> </div> <div class="form-group"> <label>Кафедра:</label> <input type="text" id="teacher-department" placeholder="Кафедра математики"> </div> <button class="btn" onclick="addTeacher()">Добавить преподавателя</button> <h3 style="margin-top: 20px;">Список преподавателей</h3> <div id="teachers-list"></div> </div> <!-- Таблица дисциплин --> <div id="disciplines-tab" class="tab-content"> <h3>Добавить новую дисциплину</h3> <div class="form-group"> <label>Название дисциплины:</label> <input type="text" id="discipline-name" placeholder="Математический анализ"> </div> <div class="form-group"> <label>Количество часов:</label> <input type="number" id="discipline-hours" min="0" placeholder="60"> </div> <button class="btn" onclick="addDiscipline()">Добавить дисциплину</button> <h3 style="margin-top: 20px;">Список дисциплин</h3> <div id="disciplines-list"></div> </div> <!-- Таблица аудиторий --> <div id="rooms-tab" class="tab-content"> <h3>Добавить новую аудиторию</h3> <div class="form-group"> <label>Название аудитории:</label> <input type="text" id="room-name" placeholder="Ауд. 301"> </div> <div class="form-group"> <label>Корпус:</label> <input type="text" id="room-building" placeholder="Главный корпус"> </div> <div class="form-group"> <label>Вместимость:</label> <input type="number" id="room-capacity" min="1" placeholder="30"> </div> <button class="btn" onclick="addRoom()">Добавить аудиторию</button> <h3 style="margin-top: 20px;">Список аудиторий</h3> <div id="rooms-list"></div> </div> <!-- Таблица расписания --> <div id="schedule-tab" class="tab-content"> <h3>Добавить запись в расписание</h3> <div style="display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 15px;"> <div class="form-group"> <label>Номер недели:</label> <input type="number" id="schedule-week" min="1" max="52" placeholder="1"> </div> <div class="form-group"> <label>День недели:</label> <select id="schedule-day"> <option value="Понедельник">Понедельник</option> <option value="Вторник">Вторник</option> <option value="Среда">Среда</option> <option value="Четверг">Четверг</option> <option value="Пятница">Пятница</option> <option value="Суббота">Суббота</option> </select> </div> <div class="form-group"> <label>Время начала:</label> <input type="time" id="schedule-start-time" value="09:00"> </div> <div class="form-group"> <label>Время окончания:</label> <input type="time" id="schedule-end-time" value="10:30"> </div> <div class="form-group"> <label>Группа:</label> <select id="schedule-group-id"> <option value="">Выберите группу</option> </select> </div> <div class="form-group"> <label>Преподаватель:</label> <select id="schedule-teacher-id"> <option value="">Выберите преподавателя</option> </select> </div> <div class="form-group"> <label>Дисциплина:</label> <select id="schedule-discipline-id"> <option value="">Выберите дисциплину</option> </select> </div> <div class="form-group"> <label>Аудитория:</label> <select id="schedule-room-id"> <option value="">Выберите аудиторию</option> </select> </div> <div class="form-group"> <label>Тип занятия:</label> <select id="schedule-type"> <option value="Лекция">Лекция</option> <option value="Практика">Практика</option> <option value="Лабораторная">Лабораторная</option> </select> </div> </div> <button class="btn" onclick="addScheduleRecord()" style="margin-top: 15px;">Добавить запись</button> <h3 style="margin-top: 20px;">Записи расписания</h3> <div id="schedule-records-list"></div> </div> </div> </div> </div> </div> <div class="taskbar"> <div class="start-button">Пуск</div> </div> <script src="script.js"></script> <script> // Адаптация существующих функций к новому интерфейсу function switchTab(tabId) { document.querySelectorAll('.tab-content').forEach(el => el.classList.remove('active')); document.querySelectorAll('.tab').forEach(el => el.classList.remove('active')); document.getElementById(tabId).classList.add('active'); document.querySelector(`.tab[onclick="switchTab('${tabId}')"]`).classList.add('active'); } // Инициализация при загрузке страницы document.addEventListener('DOMContentLoaded', function() { showContent('schedule-view'); }); </script> </body> </html>