{% extends "basis.html" %}{% set x = t.qw %}{% block titel %}{{ x.titel }} – Timbre{% endblock %}{% block inhalt %}{% from "wq.html" import wq %} {# Einstellung „Woher die Werte kommen“ (31.10.2026, quellen_wahl.py, Konzept docs/konzepte/2026-10-31-bpm-quellen.md Teil B, Variante B „Vorlage, dann Feinschliff“). Ein Formular, jeder Knopf eine Aktion – geht ohne Skript; nach dem Speichern springt die Seite zur Karte zurück und der gedrückte Knopf hat wieder den Fokus (autofocus). Image Schema: oben = zuerst/mehr. Quellen nur über die Symbole (Etikett, Platte, Messkurve) mit Kürzel, nie über Ampelformen. Ziele ≥ 44 px. #} {% set e = qw.e %}{% set wt = t.wertquelle %} {% macro knopf(aktion, klasse="", gedrueckt=none, aus=false, label=none) -%} {%- endmacro %}

{{ x.pfad }} ›

{{ x.titel }}

{{ x.lead }}

{% if qw.ok %}{{ x.gespeichert }}{% endif %}

{% if qw.beispiel %}

{{ x.beispiel }} {{ qw.beispiel.titel or t.blatt.ohne_titel }}{% if qw.beispiel.interpret %} – {{ qw.beispiel.interpret }}{% endif %}

{% else %}

{{ x.beispiel_leer }}

{% endif %} {# 08.11.2026 (Zweig konto-patch): mit Skript speichert jeder Knopf über PATCH /api/v1/konto (static/quellen_wahl.js – auch im App-Fenster, wo dieses POST nicht ankommt); ohne Skript wie bisher #}

{{ x.block_vorlage }}

{% for v, kette in qw.vorlagen.items() %}{% call knopf("vorlage:" ~ v, "qw-vk", qw.vorlage == v) %}{{ x.vorlagen[v][0] }}{% if v == "tags" %}{{ x.vorgabe }}{% endif %}{{ x.vorlagen[v][1] }}{% endcall %}{% endfor %}
{% if qw.vorlage == "eigen" %}

{{ x.eigen }}

{% endif %}

{{ x.block_felder }}

{% for fd in qw.felder %}{% set f = fd.k %}{% set name = x.felder[f][0] %}
{{ name }} {{ x.felder[f][1] }} {% for z in fd.reihe %}{{ wq(z.q, f, wt) }}{% if not loop.last %}{% endif %}{% endfor %}{% if fd.dig %}· {{ x.dig_gruppe }}{{ wq(fd.dig, f, wt) }}{% endif %}

{{ x.reihe }}

    {% for z in fd.reihe %}{% set qn = x.quellen[z.q] %} {{ qn }} {{ z.wert if z.wert is not none else x.kein_wert }} {% call knopf("hoch:" ~ f ~ ":" ~ z.q, "knopf qw-mini", aus=loop.first, label=x.hoch | replace('{q}', qn)) %}↑{% endcall %}{% call knopf("runter:" ~ f ~ ":" ~ z.q, "knopf qw-mini", aus=loop.last, label=x.runter | replace('{q}', qn)) %}↓{% endcall %} {% endfor %}
{% if fd.tags_fehlen %}

{{ x.tags_fehlen }}

{% endif %} {% if f == "bpm" %}
{% call knopf("halftime:" ~ ("aus" if e.halftime else "an"), "dj-taste", e.halftime) %}{{ x.an if e.halftime else x.aus }}{% endcall %}{{ x.halftime }}
{{ x.halftime_text }}
{% endif %}
{% call knopf("dig:" ~ f ~ ":" ~ ("aus" if fd.dig else "an"), "dj-taste", fd.dig is not none) %}{{ x.an if fd.dig else x.aus }}{% endcall %}{{ x.dig_schalter }}
{% if fd.dig %}
{% for z in fd.reihe %}{% call knopf("dig:" ~ f ~ ":" ~ z.q, "knopf", fd.dig == z.q) %} {{ x.quellen[z.q] }}{% endcall %}{% endfor %}
{% endif %} {% set wo = x.wo_grid if f == "grid" else x.wo %}

{{ x.satz | replace('{liste}', fd.namen | join(' › ')) }} {{ (x.dig_an | replace('{q}', x.quellen[fd.dig]) if fd.dig else x.dig_aus) | replace('{wo}', wo) }}{% if f == "genre" %} {{ x.genre_baum }}{% endif %}{% if f in ("tonart", "bpm") %} {{ x.export }}{% endif %}

{% if fd.uneinig is not none %}

{% if fd.uneinig == 0 %}{{ x.uneinig_null }}{% else %}{{ x.uneinig_eins if fd.uneinig == 1 else x.uneinig | replace('{n}', fd.uneinig | string) }} {{ x.uneinig_link }}{% endif %}

{% endif %}
{% endfor %}

{{ x.fuss }} {{ x.zurueck }}

{% endblock %}