126 lines
4.9 KiB
HTML
126 lines
4.9 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ru">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<title>Дашборд кафедры — преподаватели</title>
|
|
<link rel="stylesheet" href="styles.css">
|
|
</head>
|
|
<body>
|
|
<header class="topbar">
|
|
<div class="topbar-inner">
|
|
<div class="brand">
|
|
<div class="brand-mark">៛</div>
|
|
<div>
|
|
<h1>Клиническая кафедра</h1>
|
|
<p class="brand-sub">Дашборд преподавателей</p>
|
|
</div>
|
|
</div>
|
|
<div class="topbar-actions">
|
|
<button class="btn ghost" id="btnFields">⚙ Настроить поля</button>
|
|
<button class="btn ghost" id="btnExport">⤓ Экспорт CSV</button>
|
|
<button class="btn ghost" id="btnImport">⤒ Импорт</button>
|
|
<button class="btn primary" id="btnAdd">+ Преподаватель</button>
|
|
</div>
|
|
</div>
|
|
</header>
|
|
|
|
<nav class="tabs">
|
|
<div class="container">
|
|
<button class="tab active" data-tab="teachers">Преподаватели</button>
|
|
<button class="tab" data-tab="reports">Отчёты</button>
|
|
</div>
|
|
</nav>
|
|
|
|
<main class="container">
|
|
|
|
<!-- ===== Вкладка: Преподаватели ===== -->
|
|
<section id="tab-teachers" class="tabpanel active">
|
|
<div class="stats-grid" id="statsGrid"></div>
|
|
|
|
<div class="toolbar">
|
|
<input type="search" id="search" class="input" placeholder="🔍 Поиск по ФИО, образованию, базе…">
|
|
<select id="filterDegree" class="input"></select>
|
|
<select id="filterCategory" class="input"></select>
|
|
<select id="filterBase" class="input"></select>
|
|
<span class="count-pill" id="countPill"></span>
|
|
</div>
|
|
|
|
<div class="table-wrap">
|
|
<table class="data-table" id="teacherTable">
|
|
<thead><tr id="tableHead"></tr></thead>
|
|
<tbody id="tableBody"></tbody>
|
|
</table>
|
|
<div class="empty-state" id="emptyState" hidden>
|
|
<p>Пока нет ни одного преподавателя.</p>
|
|
<button class="btn primary" onclick="openEditor()">+ Добавить первого</button>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ===== Вкладка: Отчёты ===== -->
|
|
<section id="tab-reports" class="tabpanel">
|
|
<div class="report-controls">
|
|
<label>Сгруппировать по:
|
|
<select id="reportField" class="input"></select>
|
|
</label>
|
|
<button class="btn ghost" id="btnReportCsv">⤓ Скачать отчёт (CSV)</button>
|
|
</div>
|
|
<div class="report-grid" id="reportGrid"></div>
|
|
<div class="report-summary" id="reportSummary"></div>
|
|
</section>
|
|
</main>
|
|
|
|
<!-- ===== Модалка: редактор преподавателя ===== -->
|
|
<div class="modal-overlay" id="editorModal" hidden>
|
|
<div class="modal">
|
|
<div class="modal-head">
|
|
<h2 id="editorTitle">Новый преподаватель</h2>
|
|
<button class="icon-btn" onclick="closeEditor()">✕</button>
|
|
</div>
|
|
<form id="editorForm" class="modal-body"></form>
|
|
<div class="modal-foot">
|
|
<button class="btn ghost" onclick="closeEditor()">Отмена</button>
|
|
<button class="btn danger" id="btnDelete" hidden>Удалить</button>
|
|
<button class="btn primary" id="btnSave">Сохранить</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- ===== Модалка: настройка полей ===== -->
|
|
<div class="modal-overlay" id="fieldsModal" hidden>
|
|
<div class="modal">
|
|
<div class="modal-head">
|
|
<h2>Параметры преподавателя</h2>
|
|
<button class="icon-btn" onclick="closeFields()">✕</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p class="hint">Базовые поля нельзя удалить. Ниже — дополнительные параметры, которые вы добавляете сами.</p>
|
|
<ul class="field-list" id="fieldList"></ul>
|
|
|
|
<div class="field-adder">
|
|
<h3>Добавить параметр</h3>
|
|
<div class="row">
|
|
<input type="text" id="newFieldLabel" class="input" placeholder="Название (напр. Стаж работы)">
|
|
<select id="newFieldType" class="input">
|
|
<option value="text">Текст</option>
|
|
<option value="date">Дата</option>
|
|
<option value="number">Число</option>
|
|
<option value="select">Выпадающий список</option>
|
|
<option value="textarea">Длинный текст</option>
|
|
<option value="checkbox">Да/Нет</option>
|
|
</select>
|
|
</div>
|
|
<input type="text" id="newFieldOptions" class="input" placeholder="Варианты через запятую (только для списка)" hidden>
|
|
<button class="btn primary" id="btnAddField">+ Добавить поле</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<input type="file" id="importFile" accept="application/json" hidden>
|
|
|
|
<script src="app.js"></script>
|
|
</body>
|
|
</html>
|