{# ========================================================================== Wiederverwendbare Bausteine. Import in Templates: {% from "tesm_core/macros.html" import field, card_header, pill, ... %} ========================================================================== #} {% macro csrf(token) -%} {%- endmacro %} {% macro hint(text) -%} {% if text %}?{% endif %} {%- endmacro %} {% macro field(name, label, value='', type='text', required=False, hint_text='', placeholder='', autocomplete='', readonly=False, disabled=False, error='', extra_class='', attrs='') -%} {%- endmacro %} {% macro select_field(name, label, options, selected='', hint_text='', required=False, disabled=False, extra_class='', attrs='') -%} {%- endmacro %} {% macro textarea_field(name, label, value='', rows=4, hint_text='', placeholder='', extra_class='', mono=False) -%} {%- endmacro %} {% macro checkbox(name, label, checked=False, value='1', hint_text='', disabled=False) -%} {%- endmacro %} {% macro switch(name, label, checked=False, value='1', disabled=False) -%} {%- endmacro %} {% macro pill(label, kind='') -%} {{ label }} {%- endmacro %} {% macro badge(label) -%}{{ label }}{%- endmacro %} {% macro card_header(title, sub='', icon_name='') -%}
{% if icon_name %}{{ icon(icon_name, size=17) }}{% endif %}{{ title }}
{% if sub %}
{{ sub }}
{% endif %}
{{ caller() if caller is defined else '' }}
{%- endmacro %} {% macro empty_state(title, text='', icon_name='info', node_id='') -%}
{{ icon(icon_name, size=34) }}
{{ title }}
{% if text %}

{{ text }}

{% endif %} {{ caller() if caller is defined else '' }}
{%- endmacro %} {% macro alert(text, kind='info', title='') -%}
{{ icon({'info': 'info', 'success': 'check', 'warning': 'alert', 'danger': 'alert'}[kind], size=18) }}
{% if title %}
{{ title }}
{% endif %} {{ text }}
{%- endmacro %} {% macro search_box(target_id, placeholder='Suchen ...', count_id='', empty_id='') -%} {{ icon('search', size=15) }} {%- endmacro %} {% macro stat(label, value, kind='', hint_text='', href='', filter_value='') -%} {% if href %} {% elif filter_value %} {% else %}{% endif %} {%- endmacro %} {% macro modal(node_id, title, sub='', size='') -%} {{ caller() }} {%- endmacro %} {% macro kv_row(label, value) -%}
{{ label }}
{{ value if value not in (None, '') else '–' | safe }}
{%- endmacro %} {#- Rechtematrix: einmal geschrieben, in beiden Anwendungen benutzt -#} {% macro permission_matrix(tree, action_meta, state, disabled=False, field_prefix='permissions') -%}
{% for area in tree.areas %} {% set columns = area.columns() %} {% for action in columns %} {% endfor %} {% for action in columns %}{% endfor %} {% for resource in area.resources %} {% for action in columns %} {% endfor %} {% endfor %} {% endfor %}
{{ area.label }} {{ action_meta[action][0] }}
{{ resource.label }} {% if resource.hint %}{{ resource.hint }}{% endif %} {% if resource.has(action) %} {% else %} {# Bewusst *kein* Eingabefeld: ein deaktiviertes Kaestchen hat das JS beim Einschalten des Bereichs wieder freigegeben, es liess sich anhaken, hatte aber kein name-Attribut -- es sah erteilt aus und war nach dem Speichern weg. Was es nicht gibt, ist hier deshalb gar kein Bedienelement. #} nicht vorgesehen {% endif %}
{% for action, meta in action_meta.items() %} {{ meta[0] }} {{ meta[1] }} – {{ meta[2] }} {% endfor %} Fuer diese Zeile nicht vorgesehen – die Spalte gehoert zu einer anderen Zeile desselben Bereichs.
{%- endmacro %}