{# ── Global settings panel ────────────────────────────────────────────── Triggered by the gear button in base.html ($store.dojo.openSettings()). Entirely data-driven from GET /settings's JSON Schema (see lib/settings-panel.ts) - a field only needs markup here once, per widget *type*, not per setting, so a new/changed field in settings.py shows up automatically with no template edit required. ─────────────────────────────────────────────────────────────────────── #} {% macro settings_field_row(field_expr) %}
{% endmacro %} {# Renders one group's own content - its leaf fields, its subgroups (each still its own independently-collapsible mini-accordion), and its dict field, if any - with no outer per-group header/collapse-toggle of its own. Shared by both places a single group's content needs to render: the search-results view (one call per matching group, each wrapped in its own collapsible header there) and the left-nav "active section" view (exactly one call, for whichever section is currently selected, with no header/toggle needed since it's already the only thing shown). #} {% macro settings_group_body(group_expr) %} {% endmacro %} {% macro settings_dict_rows(group_expr) %}

No entries

{% endmacro %} {# Renders a SettingsListField (settings-panel.ts) - an editable, add/removable list of fixed-shape objects, e.g. SensAISettings.models: list[SensAIModelEntry]. Each row's fields are real SettingsField objects (built once from the item schema), so the widgets below only need to cover the handful of field *types* a row can contain (select/text/number/toggle) rather than one bespoke input per settings field - a new fixed-shape list field defined in settings.py picks up this same editor automatically, the same way a plain field or subgroup does. Deliberately its own compact one-line-per-row layout (unlike settings_field_row's label-left/control-right layout, sized for one standalone field) since a row here packs 2+ fields plus a remove button side by side. #} {% macro settings_list_rows(list_expr) %}

No entries

{% endmacro %}