119 lines
7.9 KiB
HTML
119 lines
7.9 KiB
HTML
{% extends "base.html" %}
|
||
{% block title %}Сотрудники · MIEM Employees{% endblock %}
|
||
{% block content %}
|
||
<section class="directory">
|
||
<div class="directory__header">
|
||
<div>
|
||
<h2 class="directory__title">Сотрудники</h2>
|
||
<p class="directory__summary">Найдено: {{ page.total }}</p>
|
||
</div>
|
||
<button class="button" type="button" data-columns-open>Колонки</button>
|
||
</div>
|
||
|
||
<form class="directory__filters" method="get" action="/admin/directory">
|
||
<input class="directory__input" name="q" value="{{ filters.q }}" placeholder="ФИО или ссылка">
|
||
<select class="directory__input" name="status">
|
||
<option value="" {% if not filters.status %}selected{% endif %}>Все статусы</option>
|
||
<option value="active" {% if filters.status == "active" %}selected{% endif %}>Работает</option>
|
||
<option value="dismissed" {% if filters.status == "dismissed" %}selected{% endif %}>Уволен</option>
|
||
</select>
|
||
<select class="directory__input" name="has_email">
|
||
<option value="" {% if not filters.has_email %}selected{% endif %}>Любой email</option>
|
||
<option value="true" {% if filters.has_email == "true" %}selected{% endif %}>Есть email</option>
|
||
<option value="false" {% if filters.has_email == "false" %}selected{% endif %}>Нет email</option>
|
||
</select>
|
||
<input class="directory__input" type="date" name="started_from" value="{{ filters.started_from }}" aria-label="Впервые найден с">
|
||
<input class="directory__input" type="date" name="started_to" value="{{ filters.started_to }}" aria-label="Впервые найден по">
|
||
<select class="directory__input" name="sort">
|
||
{% for value, label in [("full_name", "ФИО"), ("status", "Статус"), ("hse_start_year", "Год начала"), ("first_seen_at", "Впервые найден"), ("last_seen_at", "Последний раз найден"), ("dismissed_at", "Дата увольнения")] %}
|
||
<option value="{{ value }}" {% if filters.sort == value %}selected{% endif %}>Сортировка: {{ label }}</option>
|
||
{% endfor %}
|
||
</select>
|
||
<select class="directory__input" name="direction">
|
||
<option value="asc" {% if filters.direction == "asc" %}selected{% endif %}>По возрастанию</option>
|
||
<option value="desc" {% if filters.direction == "desc" %}selected{% endif %}>По убыванию</option>
|
||
</select>
|
||
<select class="directory__input" name="limit" onchange="this.form.offset.value = 0; this.form.submit()">
|
||
{% for value in [25, 50, 100] %}
|
||
<option value="{{ value }}" {% if filters.limit == value %}selected{% endif %}>На странице: {{ value }}</option>
|
||
{% endfor %}
|
||
</select>
|
||
<input type="hidden" name="offset" value="{{ filters.offset }}">
|
||
<button class="button" type="submit">Применить</button>
|
||
</form>
|
||
|
||
<div class="directory__table-wrap">
|
||
<table class="directory-table" data-directory-table>
|
||
<thead>
|
||
<tr>
|
||
<th class="directory-table__head" data-column="full_name">ФИО</th>
|
||
<th class="directory-table__head" data-column="status">Статус</th>
|
||
<th class="directory-table__head" data-column="positions">Должности</th>
|
||
<th class="directory-table__head" data-column="hse_start_year">Год начала</th>
|
||
<th class="directory-table__head" data-column="email">Email</th>
|
||
<th class="directory-table__head" data-column="phone">Телефон</th>
|
||
<th class="directory-table__head" data-column="address">Адрес</th>
|
||
<th class="directory-table__head" data-column="publications_count">Публикации</th>
|
||
<th class="directory-table__head" data-column="courses_count">Курсы</th>
|
||
<th class="directory-table__head" data-column="first_seen_at">Впервые найден</th>
|
||
<th class="directory-table__head" data-column="last_seen_at">Последний раз найден</th>
|
||
<th class="directory-table__head" data-column="dismissed_at">Дата увольнения</th>
|
||
<th class="directory-table__head" data-column="profile">Профиль</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for employee in page.employees %}
|
||
<tr class="directory-table__row" data-row-href="/admin/employees/{{ employee.id }}">
|
||
<td class="directory-table__cell" data-column="full_name">{{ employee.full_name or "Без имени" }}</td>
|
||
<td class="directory-table__cell" data-column="status"><span class="badge {% if employee.status == "dismissed" %}badge--dismissed{% endif %}">{{ employee.status_display }}</span></td>
|
||
<td class="directory-table__cell" data-column="positions">{{ employee.positions_text }}</td>
|
||
<td class="directory-table__cell" data-column="hse_start_year">{{ employee.hse_start_year or "" }}</td>
|
||
<td class="directory-table__cell" data-column="email">{{ employee.email_text }}</td>
|
||
<td class="directory-table__cell" data-column="phone">{{ employee.phone_text }}</td>
|
||
<td class="directory-table__cell" data-column="address">{{ employee.address or "" }}</td>
|
||
<td class="directory-table__cell" data-column="publications_count">{{ employee.publications_count }}</td>
|
||
<td class="directory-table__cell" data-column="courses_count">{{ employee.courses_count }}</td>
|
||
<td class="directory-table__cell" data-column="first_seen_at">{{ employee.first_seen_display }}</td>
|
||
<td class="directory-table__cell" data-column="last_seen_at">{{ employee.last_seen_display }}</td>
|
||
<td class="directory-table__cell" data-column="dismissed_at">{{ employee.dismissed_display }}</td>
|
||
<td class="directory-table__cell" data-column="profile"><a class="admin__link" href="{{ employee.canonical_url }}">Открыть</a></td>
|
||
</tr>
|
||
{% else %}
|
||
<tr><td class="directory-table__empty" colspan="13">По этим фильтрам сотрудники не найдены.</td></tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="directory__pagination">
|
||
{% set prev_offset = filters.offset - filters.limit %}
|
||
{% set next_offset = filters.offset + filters.limit %}
|
||
{% if filters.offset > 0 %}
|
||
<a class="admin__link" href="{{ request.url.include_query_params(offset=prev_offset) }}">Назад</a>
|
||
{% endif %}
|
||
<span class="directory__page">Страница {{ page.page }}{% if page.pages %} из {{ page.pages }}{% endif %}</span>
|
||
{% if next_offset < page.total %}
|
||
<a class="admin__link" href="{{ request.url.include_query_params(offset=next_offset) }}">Вперед</a>
|
||
{% endif %}
|
||
</div>
|
||
</section>
|
||
|
||
<div class="columns-modal" data-columns-modal hidden>
|
||
<div class="columns-modal__backdrop" data-columns-close></div>
|
||
<section class="columns-modal__panel" aria-label="Настройка колонок">
|
||
<div class="columns-modal__header">
|
||
<h3 class="columns-modal__title">Отображаемые колонки</h3>
|
||
<button class="button button--ghost" type="button" data-columns-close>Закрыть</button>
|
||
</div>
|
||
<div class="columns-modal__grid">
|
||
{% for key, label in [("full_name", "ФИО"), ("status", "Статус"), ("positions", "Должности"), ("hse_start_year", "Год начала"), ("email", "Email"), ("phone", "Телефон"), ("address", "Адрес"), ("publications_count", "Публикации"), ("courses_count", "Курсы"), ("first_seen_at", "Впервые найден"), ("last_seen_at", "Последний раз найден"), ("dismissed_at", "Дата увольнения"), ("profile", "Профиль")] %}
|
||
<label class="columns-modal__option"><input class="columns-modal__checkbox" type="checkbox" value="{{ key }}" data-column-toggle> {{ label }}</label>
|
||
{% endfor %}
|
||
</div>
|
||
</section>
|
||
</div>
|
||
{% endblock %}
|
||
{% block scripts %}
|
||
<script src="/static/admin.js"></script>
|
||
{% endblock %}
|