{# tickets/list.html — known problems, open first (tickets.service): each with what it is about, its area, who opened it and when, and how many comments it has; resolved ones say who resolved them and how. #} {% extends "base.html" %} {% from "_macros.html" import page_header, empty_state, status_badge %} {% block title %}Tickets — Steward{% endblock %} {% block content %} {% call page_header("Tickets", "Known problems, open until someone resolves them. Opening and resolving one goes on the timeline.") %} {% if session.user_role in ('operator', 'admin') %}Open a ticket{% endif %} {% endcall %}

{%- if open_count %}{{ open_count }} open{% else %}No open tickets{% endif %} {%- if host %} · on {{ host }} · every host{% endif %}

{% if tickets %}
{% for t in tickets %} {% endfor %}
Ticket Where Area Opened ({{ tz_label() }}) State
#{{ t.id }} {{ t.title }} {%- if counts.get(t.id) %}
{{ counts[t.id] }} comment{{ "s" if counts[t.id] != 1 }}
{% endif %}
{%- for h in t.hosts %}{{ h }}{{ ", " if not loop.last }}{% endfor -%} {%- if t.subject %}{% if t.hosts %}
{% endif %}{{ t.subject }}{% endif -%} {%- if not t.hosts and not t.subject %}—{% endif -%}
{{ labels.get(t.area, t.area) }} {{ t.opened_at|when }}
{{ t.opened_by }}
{{ status_badge(t.status) }} {%- if t.status == 'resolved' %}
{{ t.resolved_by }}, {{ t.resolved_at|when }}
{% endif %}
{% else %}
{{ empty_state({"open": "No open tickets.", "resolved": "No ticket has been resolved yet.", "all": "No tickets yet."}[status]) }}
{% endif %} {% endblock %}