{% extends "layout.html" %} {% from "_partials/table_helpers.html" import search_input, sort_header, pagination_inline %} {% from "_partials/page_description.html" import page_description %} {% block title %}Events - pixie{% endblock %} {% block subnav %} {% endblock %} {% block content %} {{ page_description('clock-history', 'Chronological log of every state change pixie has emitted: machines binding + status POSTs, catalog images fetching, exports going up + down, admin logins. Filter by kind or by the subject it\'s about; freeform search narrows the summary column. The tail is truncated to the newest 2000 events by default.') }}
Events {{ search_input('/ui/events', q, preserved, 'kind / related to / summary') }} {# Strict-equality narrowings applied BEFORE the freeform ``q`` filter. The two selects are dropped-label + icon-tooltip only so they don't push pagination onto a second row on medium viewports. Each is its own tiny form that submits on ``change``; hidden inputs preserve the OTHER filter + q so ``page`` + ``sort`` survive a filter flip. #}
{% if preserved.q %}{% endif %} {% if subject_kind_selected %} {% endif %}
{% if preserved.q %}{% endif %} {% if kind_selected %} {% endif %}
{% if kind_selected or subject_kind_selected %} {% endif %} {# Bulk actions, pushed to the right. Acknowledge advances the ack cursor so the dashboard error count zeros (the log is left intact); Clear wipes the whole log after a confirm. #}
{{ pagination_inline(page_state, preserved, label='events') }}
{% if events %}
{{ sort_header('When', 'ts', sort, preserved) }} {{ sort_header('Kind', 'kind', sort, preserved) }} {{ sort_header('Related to', 'subject_id', sort, preserved) }} {% for e in events %} {% endfor %}
Summary
{{ e.ts | fmt_ts }} {{ e.kind }} {# ``Related to`` reads as ``: ``: e.subject_kind is the category (entry / machine / export / auth), e.subject_id is the specific name / MAC / export name. Presenting both with a category label makes the row self-describing without an operator having to memorise which bare token means which. #} {% if e.subject_kind %} {{ e.subject_kind }} {{ e.subject_id or '' }} {% else %} - {% endif %} {{ e.summary or "" }}
{% else %}

{% if q %}No events match {{ q }}.{% else %}No events yet.{% endif %}

{% endif %}
{% endblock %}