{# Ringdiagramme für die Dashboards (GUI-Runde 09.10.2026, Punkt 6). Farben nach den Dataviz-Regeln: Kategorien in fester Reihenfolge (validiert gegen Pico hell/dunkel), "Weitere" grau; Gerätezustand mit den reservierten Statusfarben plus Symbol. Legende mit Zahl und Prozent - Farbe trägt nie allein. Eine einzige Kategorie wird als Satz statt als Ring gezeigt. #} {% macro ring(titel, teile, art="kategorie", einheit="Geräte") %} {% set segmente = ring_segmente(teile) %} {% set gesamt = segmente | sum(attribute="anzahl") %}

{{ titel }}

{% if not segmente %}

Noch keine Geräte.

{% elif segmente | length == 1 and art == "kategorie" %}

Alle {{ gesamt }} {{ einheit }}:
{{ segmente[0].name }}

{% else %}
{% for s in segmente %} {{ s.name }}: {{ s.anzahl }} ({{ s.prozent }} %) {% endfor %} {{ gesamt }} {{ einheit }}
{% endif %}
{% endmacro %} {% macro farbklasse(art, name, index) -%} {%- if art == "zustand" -%} {{ {"in Ordnung": "f-gut", "Ressourcen knapp": "f-ernst", "noch nie gemeldet": "f-neutral"}.get(name, "f-warnung") }} {%- elif name == "Weitere" -%}f-neutral {%- elif name in ["ohne Installation", "ohne Workspace", "unbekannt"] -%}f-neutral-2 {%- else -%}f-{{ index + 1 }}{%- endif -%} {%- endmacro %} {% macro status_symbol(name) -%} {{ {"in Ordnung": "✓", "Ressourcen knapp": "▲", "noch nie gemeldet": "–"}.get(name, "◷") }} {%- endmacro %} {% macro uebersicht(v, mit_organisationen=false) %}
{{ ring("Gerätezustand", v.zustand, "zustand") }} {{ ring("Distributionen", v.distros) }} {{ ring("Workspaces", v.workspaces) }} {% if mit_organisationen %}{{ ring("Geräte je Organisation", v.organisationen) }}{% endif %}
{% endmacro %}