{% extends "base.html" %} {% import "report_sections.html" as rs with context %} {% block title %}{{ dashboard.title if dashboard else 'No such dashboard' }}{% endblock %} {% block content %} {% if missing %}

No dashboard called “{{ missing }}”

There is no dashboards/{{ missing }}.toml in the data folder.{% if others %} These dashboards are:{% endif %}

{% if others %}{% endif %}

Make it yours: describe a dashboard and your own AI agent builds it.

{% else %}

{{ dashboard.title }}

{% if dashboard.description %}

{{ dashboard.description }}

{% endif %}

Adjust

{% if problems %}
{{ problems | length }} problem{{ '' if problems | length == 1 else 's' }} in {{ dashboard.file }}. Paste these lines to your agent, or run hermitcrm check.{% if widgets %} The widgets without a problem are below.{% endif %}
{% endif %}
{% for w in widgets %}

{{ w.title }}

{% if w.type == 'count' %}

{{ w.count }}

{% elif w.type == 'list' %}
{% for c in w.columns %}{% endfor %} {% for r in w.rows %} {% for v in r.cells %}{% endfor %} {% else %} {% endfor %}
{{ c.label }}
{% if loop.first %}{{ v or '(empty)' }}{% else %}{{ v }}{% endif %}
none

{% if w.total > w.rows | length %}{{ w.rows | length }} of {{ w.total }} · {% endif %}open in {{ w.scope | capitalize }}

{% elif w.type == 'group' %} {% for b in w.bars %} {% else %} {% endfor %}
{% if b.url %}{{ b.label }}{% else %}{{ b.label }}{% endif %}{% if b.url and b.count %}{{ b.count }}{% else %}{{ b.count }}{% endif %}{{ rs.bar(b.count, w.max) }}
none

{{ w.total }} in all{% if w.more %} · {{ w.more }} more value{{ '' if w.more == 1 else 's' }} not shown{% endif %}

{% elif w.type == 'report' %} {% set p = w.report.period %}

{{ fmt_date(p.start) }} to {{ fmt_date(p.end) }} ({{ p.days }}d). Click a number for the rows behind it.

{{ rs['section_' ~ w.section](w.report, w.rows_query) }} {% endif %}
{% endfor %}
{% if not widgets and not problems %}

No widgets yet.

{% endif %} {% endif %} {% endblock %}