Загрузка данных
{% extends "base.html" %}
{% block content %}
<div class="d-flex justify-content-between align-items-center mb-3">
<h4 class="mb-0">Центр стажировки — Панель управления</h4>
</div>
<!-- Фильтры -->
<form method="get" class="card stat-card mb-3">
<div class="card-body d-flex gap-3 align-items-end flex-wrap">
<div style="min-width:220px">
<label class="form-label small mb-1">Наставник</label>
<select name="mentor_id" class="form-select" onchange="this.form.submit()">
<option value="">Все наставники</option>
{% for m in mentors %}
<option value="{{ m.id }}" {% if selected_mentor == m.id %}selected{% endif %}>{{ m.full_name }}</option>
{% endfor %}
</select>
</div>
<button class="btn btn-primary">Применить</button>
</div>
</form>
<div class="card stat-card">
<div class="table-responsive">
<table class="table table-hover mb-0 align-middle">
<thead class="table-light">
<tr>
<th>Стажёр</th>
<th>Тип</th>
<th>Наставник</th>
<th>Дата окончания</th>
<th>Посещаемость</th>
<th class="text-end">Действия</th>
</tr>
</thead>
<tbody>
{% for row in rows %}
{% set s = row.stats %}
{% set days_left = (row.intern.end_date - date.today()).days if row.intern.end_date else 999 %}
<tr>
<td>
<div class="fw-semibold">{{ row.intern.full_name }}</div>
<small class="text-muted">{{ row.intern.direction or '—' }}</small>
</td>
<td>
{% if row.intern.internship_type == 'online' %}
<span class="badge bg-info">Дистанционно</span>
{% else %}
<span class="badge bg-secondary">Очно</span>
{% endif %}
</td>
<td>
<!-- Форма для смены наставника -->
<form method="post" action="{{ url_for('interns.assign_mentor', intern_id=row.intern.id) }}" class="d-flex gap-1">
<select name="mentor_id" class="form-select form-select-sm" style="max-width: 150px;">
{% for m in mentors %}
<option value="{{ m.id }}" {% if row.intern.mentor_id == m.id %}selected{% endif %}>{{ m.full_name }}</option>
{% endfor %}
</select>
<button type="submit" class="btn btn-sm btn-outline-primary" title="Назначить">✓</button>
</form>
</td>
<td>
{% if row.intern.end_date %}
<span class="{% if days_left < 0 %}text-danger fw-bold{% elif days_left <= 7 %}text-warning fw-bold{% endif %}">
{{ row.intern.end_date.strftime('%d.%m.%Y') }}
</span>
{% if days_left < 0 %}
<div class="small text-danger">Просрочен</div>
{% endif %}
{% else %}
—
{% endif %}
</td>
<td>
<div class="progress" style="height:6px; width:100px;">
<div class="progress-bar bg-success" style="width: {{ s.rate }}%"></div>
</div>
<small>{{ s.rate }}%</small>
</td>
<td class="text-end">
<div class="d-flex gap-1 justify-content-end">
<a href="{{ url_for('interns.detail', intern_id=row.intern.id) }}" class="btn btn-sm btn-outline-primary">
<i class="bi bi-calendar3"></i>
</a>
<form method="post" action="{{ url_for('interns.archive_intern', intern_id=row.intern.id) }}" onsubmit="return confirm('Отправить стажёра в архив?');">
<button type="submit" class="btn btn-sm btn-outline-danger" title="В архив">
<i class="bi bi-archive"></i>
</button>
</form>
</div>
</td>
</tr>
{% else %}
<tr><td colspan="6" class="text-center text-muted py-4">Нет активных стажёров</td></tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %}