{% extends "base.html" %} {% from "_provenance.html" import provenance %} {% from "_lifetime.html" import lifetime %} {# THE DESK (R2 C4). The index triaged by what needs the operator: needs you, then new since you looked, then everything else — always in that order, and the ORDER WITHIN each is decided in app.index, never here. A section with no booths renders nothing at all: no heading, no empty box (the negative half of the kept-lane pair this replaces). #} {# The first four images, the originals shown small. A blurred one stays blurred (`blurred-thumb`, the cover's rule). A booth with no images shows the kind placeholder the cards used to. #} {% macro preview(b) -%} {%- endmacro %} {% macro row(b, section) -%}
{{ preview(b) }}
{# The manifest title leads when there is one; the directory name stays beside it because it is what the URL says. #} {%- if b.manifest and not b.manifest.error and b.manifest.title and b.manifest.title != b.name -%} {{ b.manifest.title }} {{ b.name }} {%- else -%}{{ b.name }}{%- endif -%} {{ provenance(b.manifest) }} {# The row's controls sit ON the facts line, each beside the state it changes: release after "kept", keep after the countdown, wipe last. They were a hover-revealed column that reserved its room while invisible (operator, on the live Desk: "release and x take up space whether or not they're visible") — and hover never existed on touch. The confirmation text is DATA-DRIVEN: the booth name travels as a data attribute and never reaches a JS string (see the script below). Release is reversible, so it has no prompt beyond the wording. #}
{{ b.count }} item{{ '' if b.count == 1 else 's' }} {% if b.flags %} · {{ b.flags }} flagged{% endif %} · {{ lifetime(b.kept, b.hold, b.expires_in) }} {%- if b.kept %}
{%- else %}
{%- endif %} · ⬇ zip {%- if b.kept %} ·
{%- else %} ·
{%- endif %}
{# Badges only: a row with none renders no side column, so it reserves no room (the row is flex — an absent item costs no gap). #} {% if b.marks_open or b.hold == "unreadable" or section == 'new' or b.uploaded %}
{% if b.marks_open %}? {{ b.marks_open }} open {% elif b.hold == "unreadable" %}marks unreadable {% elif section == 'new' %}new{% endif %} {% if b.uploaded %}⬆ pickup{% endif %}
{% endif %}
{%- endmacro %} {% block content %}
{% if needs %}

Needs you oldest question first

{% for b in needs %}{{ row(b, 'needs') }}{% endfor %}
{% endif %} {% if new %}

New since you looked newest first

{% for b in new %}{{ row(b, 'new') }}{% endfor %}
{% endif %} {% if rest %}

Everything else last activity first

{% for b in rest %}{{ row(b, 'rest') }}{% endfor %}
{% endif %} {% if not needs and not new and not rest %}
No booths yet. Drop a folder into {{ data_dir }}, or upload files for pickup.
{% endif %}
{% endblock %}