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

๐Ÿฆด Kit โš™

{{ totals.owned }} owned ยท {{ totals.by_kind.toy }} toy{{ '' if totals.by_kind.toy == 1 else 's' }} ยท {{ totals.by_kind.gear }} gear ยท {{ totals.by_kind.consumable }} consumable{{ '' if totals.by_kind.consumable == 1 else 's' }} {%- if totals.wishlist %} ยท {{ totals.wishlist }} on the wishlist{% endif %} {%- if totals.bouts %} ยท {{ totals.bouts }} bouts ยท {{ totals.seconds|dur }}{% endif %} {%- if totals.priced %} ยท {{ cur }}{{ '%.2f'|format(totals.spend_cents / 100) }} spent (of {{ totals.priced }} you priced){% endif %}

{# โ”€โ”€ what is on right now โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ #} {% if open %}

On right now

{% for b in open %}
{{ b.things|map(attribute='name')|join(' ยท ') }} {{ '๐Ÿฆด play' if b.kind == 'play' else '๐Ÿถ wear' }} {% if b.locked %}๐Ÿ”’ caged{% endif %} {% if b.source == 'session' %}auto{% endif %}

on since {{ b.started_at|local }} ยท {{ (now - b.started_at)|dur }}

{% endfor %}
{% endif %} {% if stale %} {#- ๐Ÿ”ด Reported, never auto-closed. The app does not know when you took it off and will not invent an end time โ€” see service.stale_bouts. -#}

โš  {{ stale|length }} play bout{{ '' if stale|length == 1 else 's' }} still open since {{ stale[0].started_at|rel(now) }}. Finish it with the real time, or discard it โ€” nothing will guess an end for you.

{% endif %}
{# โ”€โ”€ start a bout โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ #}

Put something on

{% for i in playable %} {% else %}

Nothing owned yet. Add something below.

{% endfor %}
{{ when_field('โฑ started earlier? set the time') }}
{# โ”€โ”€ things that want attention โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ #}

Wants attention

{% if low %}

Running out

{% endif %} {% if expiring %}

Going off

{% endif %} {% if neglected %}

Gathering dust

{% endif %} {% if not low and not expiring and not neglected %}

Nothing running low, nothing going off, nothing neglected. Tidy kennel.

{% endif %}
{# โ”€โ”€ the inventory โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ #}
all {% for k in kinds %} {{ kind_icon[k] }} {{ kind_title[k] }} {% endfor %} โœจ wishlist ๐Ÿ“• retired
{% for i in items %} {% set s = stats[i.id] %}
{% if i.media_id %} {% else %}{{ i.cat_icon }}{% endif %} {% if badges.get(i.id) %} {% for b in badges[i.id][:3] %}{{ b.icon }}{% endfor %} {% endif %}
{{ i.name }} {{ i.cat_title }} {%- if i.status == 'wishlist' %} ยท โœจ want{% elif i.status == 'retired' %} ยท retired{% endif %} {%- if i.kind == 'consumable' -%} {% if s.level is not none %}{{ '%g'|format(s.level) }} {{ i.qty_unit }} left {%- else %}level unknown{% endif %} {%- elif s.uses -%} {{ s.uses }} bout{{ '' if s.uses == 1 else 's' }} {%- if s.total_seconds %} ยท {{ s.total_seconds|dur }}{% endif %} {%- if s.last_used %} ยท {{ s.last_used|rel(now) }}{% endif %} {%- elif i.status == 'wishlist' -%} not yours yet {%- else -%} never used {%- endif -%} {% if s.squirts %}๐Ÿ’ฆ {{ s.squirts }}{% if s.caged_squirts %} ยท ๐Ÿ”’ {{ s.caged_squirts }} caged{% endif %}{% endif %}
{% else %}

Nothing here yet.

{% endfor %}
{# โ”€โ”€ add โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ #}
โž• Add something
{{ spec_fields(categories) }}
{{ when_field('โฑ got it earlier? set the date') }}
{% endblock %} {% block scripts %} {% endblock %}