{% macro sparkline(data, w=120, h=28, color='#0d6efd') %}
{% set n = (data|length) or 1 %}
{% set mx = (data|max) if (data and (data|max) > 0) else 1 %}
{% set bw = w / n %}
{% endmacro %}
{% macro barchart(complete, error, w=600, h=56) %}
{% set n = (complete|length) or 1 %}
{% set bw = w / n %}
{% set pad = 4 %}
{% set base = h - pad %}
{% set ph = base - pad %}
{% set ns = namespace(mx=1) %}
{% for i in range(n) %}
{% set tot = complete[i] + (error[i] if error else 0) %}
{% if tot > ns.mx %}{% set ns.mx = tot %}{% endif %}
{% endfor %}
{% endmacro %}
{% macro sigbadge(signal) %}
{%- set m = {'complete': 'success', 'error': 'danger', 'retrying': 'warning',
'executing': 'primary', 'enqueued': 'secondary', 'scheduled': 'info',
'revoked': 'dark', 'canceled': 'dark', 'locked': 'secondary',
'rate-limited': 'secondary', 'timeout': 'warning',
'expired': 'warning', 'interrupted': 'warning'} -%}
{{ signal }}
{%- endmacro %}
{% macro dur(seconds) %}{% if seconds is none %}—{% elif seconds < 1 %}{{ '%d'|format(seconds * 1000) }} ms{% else %}{{ '%.2f'|format(seconds) }} s{% endif %}{% endmacro %}
{% macro elapsed(seconds) %}{% if seconds < 60 %}{{ '%.1f'|format(seconds) }}s{% elif seconds < 3600 %}{{ '%d'|format(seconds // 60) }}m {{ '%d'|format(seconds % 60) }}s{% else %}{{ '%d'|format(seconds // 3600) }}h {{ '%d'|format((seconds % 3600) // 60) }}m{% endif %}{% endmacro %}