{% extends "base.html" %} {% from "_when.html" import when_field with context %} {% from "_kit_fields.html" import spec_fields with context %} {% block title %}{{ it.name }} · Kit · {{ app_name }}{% endblock %} {% block body %}

← Kit

{{ it.cat_icon }} {{ it.name }}

{{ it.cat_title }} {%- if it.status != 'owned' %} · {{ '✨ wishlist' if it.status == 'wishlist' else 'retired' }}{% endif %} {%- if it.bought_at %} · bought {{ it.bought_at|local('%Y-%m-%d') }}{% endif %} {%- if it.cost_cents is not none %} · {{ cur }}{{ '%.2f'|format(it.cost_cents / 100) }}{% endif %}

{% if s.badges %}
{% for b in s.badges %} {{ b.icon }} {{ b.title }} {% endfor %}
{% endif %} {% for c in it.care %}

⚠ {{ c }}

{% endfor %}

Numbers

{% if it.kind == 'consumable' %}
On hand
{%- if level is not none %}{{ '%g'|format(level) }} {{ it.qty_unit }} {%- else %}not counted{% endif %}
{% if it.reorder_at is not none %}
Reorder at
{{ '%g'|format(it.reorder_at) }} {{ it.qty_unit }}
{% endif %} {% if it.expires_at %}
Expires
{{ it.expires_at|local('%Y-%m-%d') }}
{% endif %} {% else %}
Bouts
{{ s.uses }}
{#- 🔴 Every one of these omits itself rather than printing 0. An item nobody has timed has no average, and a "0 m" there would read as a measured zero. -#} {% if s.total_seconds is not none %}
Total
{{ s.total_seconds|dur }}
{% endif %} {% if s.avg_seconds is not none %}
Average
{{ s.avg_seconds|dur }}
{% endif %} {% if s.last_used %}
Last used
{{ s.last_used|rel(now) }}
{% endif %} {% if s.squirts %}
Made you come
💦 {{ s.squirts }}{% if s.caged_squirts %} · 🔒 {{ s.caged_squirts }} caged{% endif %}
{% endif %} {% if s.outcomes.get('edge') %}
Edges
🪢 {{ s.outcomes['edge'] }}
{% endif %} {% endif %} {% if s.cost_per_use is not none %}
Cost per bout
{{ cur }}{{ '%.2f'|format(s.cost_per_use) }}
{% endif %}
{% if it.spec_rows %}

Specs

{% for r in it.spec_rows %}
{{ r.label }}
{{ r.value }}
{% endfor %}
{% endif %} {% if it.notes %}

{{ it.notes }}

{% endif %}
{% if it.kind != 'consumable' and it.status == 'owned' %} {% if open_bout %} it's on — finish up {% else %}
{% endif %} {% endif %} {% for st in statuses if st != it.status %}
{% endfor %}

Photos

{% if it.kind == 'consumable' %}

Stock

{{ when_field('⏱ earlier?') }}
{{ when_field('⏱ earlier?') }}
{% else %}

History

{% endif %}
✎ Edit
{% if it.kind == 'consumable' %}
{% endif %}
{{ spec_fields(categories, it.category, it.specs_d) }}
Only while it has no history — otherwise retire it, so the totals you have already been shown stay true.
{% endblock %} {% block scripts %} {% endblock %}