114 lines
4.9 KiB
HTML
114 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="addRow()">+ Добавить первого</button>
|
||
</div>
|
||
</div>
|
||
<p class="info-banner">ℹ Данные сохраняются в этом браузере. Чтобы собрать анкеты нескольких преподавателей: каждый вводит свою строку и жмёт <b>⤓</b> в конце строки → отправляет файл вам → вы жмёте <b>⤒ Импорт</b> (данные добавятся к таблице).</p>
|
||
</section>
|
||
|
||
<!-- ===== Вкладка: Отчёты ===== -->
|
||
<section id="tab-reports" class="tabpanel">
|
||
<div class="report-controls">
|
||
<div class="report-fields">
|
||
<span class="rf-title">Параметры отчёта — отметьте несколько:</span>
|
||
<div class="rf-list" id="reportFieldsList"></div>
|
||
</div>
|
||
<button class="btn outline" id="btnReportCsv">⤓ Скачать отчёт (CSV)</button>
|
||
</div>
|
||
<div class="report-grid" id="reportGrid"></div>
|
||
<div class="crosstab-wrap" id="crosstabWrap"></div>
|
||
<div class="report-summary" id="reportSummary"></div>
|
||
</section>
|
||
</main>
|
||
|
||
<!-- ===== Модалка: настройка полей ===== -->
|
||
<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>
|
||
<div id="datalists" hidden></div>
|
||
|
||
<script src="app.js"></script>
|
||
</body>
|
||
</html>
|