Загрузка данных


{% extends "base.html" %}
{% block title %}Центр стажировки — Панель управления{% endblock %}

{% block content %}
<div class="d-flex justify-content-between align-items-center mb-3">
  <h4 class="mb-0">Центр стажировки — Панель управления</h4>
  <a class="btn btn-success" href="{{ url_for('reports.export_excel', mentor_id=selected_mentor, date_from=date_from, date_to=date_to) }}">
    <i class="bi bi-file-earmark-excel"></i> Выгрузить Excel
  </a>
</div>

<!-- Сводные карточки -->
<div class="row g-3 mb-4">
  <div class="col-md-3">
    <div class="card stat-card"><div class="card-body">
      <div class="text-muted small">Активных стажёров</div>
      <div class="fs-3 fw-bold">{{ overview.interns_count }}</div>
    </div></div>
  </div>
  <div class="col-md-3">
    <div class="card stat-card"><div class="card-body">
      <div class="text-muted small">Отметок за период</div>
      <div class="fs-3 fw-bold">{{ overview.records }}</div>
    </div></div>
  </div>
  <div class="col-md-3">
    <div class="card stat-card"><div class="card-body">
      <div class="text-muted small">Средняя посещаемость</div>
      <div class="fs-3 fw-bold text-primary">{{ overview.rate }}%</div>
    </div></div>
  </div>
  <div class="col-md-3">
    <div class="card stat-card"><div class="card-body">
      <div class="text-muted small">Отсутствий</div>
      <div class="fs-3 fw-bold text-danger">{{ overview.by_status.get('absent', 0) }}</div>
    </div></div>
  </div>
</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>
    <div>
      <label class="form-label small mb-1">С</label>
      <input type="date" name="date_from" class="form-control" value="{{ date_from }}">
    </div>
    <div>
      <label class="form-label small mb-1">По</label>
      <input type="date" name="date_to" class="form-control" value="{{ date_to }}">
    </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 - 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 text-dark">Дистанционно</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: 160px;">
                {% 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="Сохранить наставника">
                <i class="bi bi-check-lg"></i>
              </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 fw-bold">Просрочен!</div>
              {% elif days_left <= 7 %}
                <div class="small text-warning">Осталось {{ days_left }} дн.</div>
              {% endif %}
            {% else %}
              —
            {% endif %}
          </td>
          <td style="min-width:120px;">
            <div class="progress" style="height:6px;">
              <div class="progress-bar bg-success" style="width: {{ s.rate }}%"></div>
            </div>
            <small class="text-muted">{{ 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" title="Календарь">
                <i class="bi bi-calendar3"></i>
              </a>
              <form method="post" action="{{ url_for('interns.archive_intern', intern_id=row.intern.id) }}" onsubmit="return confirm('Отправить стажёра {{ row.intern.full_name }} в архив?');">
                <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 %}