{% extends "_shell.html" %} {% from "_macros.html" import service_error, bar, disk_state, trend %} {% block title %}P105 System{% endblock %} {% block content %}

SYSTEM

{#- ── Service transmission status ─────────────────────────────── Six services, one row each, colour carrying up or down. This is what the old header pills were, given room to say something. -#}
Transmission
{% for name, svc in [('Sonarr', sonarr), ('Radarr', radarr), ('SABnzbd', sabnzbd), ('Tautulli', tautulli), ('Prowlarr', prowlarr), ('Ombi', ombi)] %}
{{ name }} {{- 'ON AIR' if svc.status == 'ok' else 'OFF AIR' -}}
{% endfor %}
{#- ── Array ───────────────────────────────────────────────────── -#} {% if unraid.status != 'ok' %}
Arrayunreachable
{{ service_error('Unraid', unraid.error) }} {% else %} {%- set apct = unraid.array_used_pct | default(0) | float -%}
Array {{ unraid.array_state | default('') }} {%- if unraid.parities %} · parity {%- for p in unraid.parities %} {{ p.temp if p.temp is not none else '—' }}°C{% endfor %} {%- endif %}
{{ apct | round | int }}%
Used
{{ unraid.array_free | default('—') }}
Free
{{ unraid.array_total | default('—') }}
Total
{{ unraid.disk_count | default(0) }}
Disks
{% if unraid.disks %}
{% for dk in unraid.disks %} {% endfor %} {% for ck in unraid.caches | default([]) %} {% endfor %}
Disk Device Size Free Usage Temp
{{ dk.name }} {{ dk.device | default('—') }} {{ dk.total | default('—') }} {{ dk.free | default('—') }} {{ bar(dk.used_pct | default(0)) }} {{ dk.used_pct | default(0) | round | int }}% {{ disk_state(dk) }}
{{ ck.name }} {{ ck.device | default('—') }} {{ ck.total | default('—') }} {{ ck.free | default('—') }} {{ bar(ck.used_pct | default(0)) }} {{ ck.used_pct | default(0) | round | int }}% {{ disk_state(ck) }}
{% endif %} {% endif %} {#- ── Downloads ───────────────────────────────────────────────── The one place the service holds real history, so the one place a trend arrow is honest: current speed against the 7-day average. -#} {% if sabnzbd.status == 'ok' %}
Downloads{{ sabnzbd.sab_status | default('') }}
{{ sabnzbd.queue_count }}
In queue
{{ sabnzbd.speed | default('0') }} {{ trend(sabnzbd.speed_kbps, sabnzbd.avg_speed) }}
Speed vs 7-day avg
{{ sabnzbd.sizeleft | default('—') }}
Remaining
{{ sabnzbd.week_size | default('—') }}
This week
{% else %}
Downloadsoff air
{{ service_error('SABnzbd', sabnzbd.error) }} {% endif %} {#- ── Indexers ────────────────────────────────────────────────── -#} {% if prowlarr.status == 'ok' %}
Indexers {{ prowlarr.up_count }} of {{ prowlarr.total }} up
{% for idx in prowlarr.indexers %}
{{ idx.protocol | default('') }} {{ idx.name }} {% if prowlarr.has_stats %}{{ idx.grabs | default(0) }} grabs · {{ idx.queries | default(0) }} queries{% endif %} {% if prowlarr.has_stats %}{{ bar(idx.grab_share | default(0), 'ok' if idx.up else 'alert') }}{% endif %} {{ 'UP' if idx.up else 'DOWN' }}
{% endfor %}
{% else %}
Indexersoff air
{{ service_error('Prowlarr', prowlarr.error) }} {% endif %} {% endblock %}