47 lines
1.4 KiB
HTML
47 lines
1.4 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block title %}{{ person.full_name }} · Face Attendance{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="page-header">
|
|
<div>
|
|
<p class="eyebrow">Person profile</p>
|
|
<h1>{{ person.full_name }}</h1>
|
|
<p class="text-secondary mb-0">{{ person.employee_id }} · {{ "Active" if person.active else "Inactive" }}</p>
|
|
</div>
|
|
<a class="btn btn-outline-secondary" href="{{ url_for('people.index') }}">Back</a>
|
|
</div>
|
|
|
|
<div class="detail-grid">
|
|
<section class="content-section">
|
|
<h2>Profile</h2>
|
|
<dl class="detail-list">
|
|
<dt>Employee ID</dt>
|
|
<dd>{{ person.employee_id }}</dd>
|
|
<dt>Face samples</dt>
|
|
<dd>{{ person.face_encodings|length }}</dd>
|
|
<dt>Last presence</dt>
|
|
<dd>{{ presence_summary }}</dd>
|
|
<dt>Notes</dt>
|
|
<dd>{{ person.notes or "No notes" }}</dd>
|
|
</dl>
|
|
</section>
|
|
|
|
<section class="content-section">
|
|
<h2>Recent events</h2>
|
|
{% if events %}
|
|
<div class="event-list">
|
|
{% for event in events %}
|
|
<div class="event-row">
|
|
<span class="badge text-bg-{{ 'success' if event.event_type == 'check_in' else 'warning' }}">{{ event.type_label }}</span>
|
|
<span>{{ event.occurred_at.strftime("%Y-%m-%d %H:%M") }}</span>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% else %}
|
|
<div class="empty-state">No attendance events for this person.</div>
|
|
{% endif %}
|
|
</section>
|
|
</div>
|
|
{% endblock %}
|