diff --git a/screens/widgets/controls_with_values.py b/screens/widgets/controls_with_values.py index 9cb7b8e2..f94e4dfc 100644 --- a/screens/widgets/controls_with_values.py +++ b/screens/widgets/controls_with_values.py @@ -67,5 +67,12 @@ def controls_with_values(slug, el): control["options"] = [("", "(sélectionner un objet d'abord)")] + [(f["name"], _field_label(f)) for f in jauge_options["fields"]] if control["key"] in ("data_filtre_champ", "data_filtre2_champ"): control["options"] = [("", "(sélectionner un objet d'abord)")] + [(f["name"], _field_label(f)) for f in data_binding_options["fields"]] + if control["key"] == "content" and attributes.get("_data_definition_id"): + # Une fois "Lier à un objet de données" réglé (voir + # DATA_BINDING_CONTROLS), propose les champs de CET objet en + # liste déroulante à côté du texte — plutôt que de devoir taper + # "{{nom_du_champ}}" à la main sans savoir quels noms existent + # (voir insertFieldAtCursor() dans screen_edit.html). + control["field_options"] = [(f["name"], _field_label(f)) for f in data_binding_options["fields"]] result.append({**control, "value": _control_value(el, control)}) return result diff --git a/templates/screen_edit.html b/templates/screen_edit.html index 10e110a0..e9176906 100644 --- a/templates/screen_edit.html +++ b/templates/screen_edit.html @@ -691,8 +691,31 @@
Colle une adresse (URL) ci-dessus, ou choisis un fichier sur ton ordinateur — il sera hébergé automatiquement avec ce jeu.
{% endif %} + {% if c.field_options %} +Insère "{{champ}}" à l'emplacement du curseur — affichera la valeur de ce champ, sur la ligne trouvée par "Donnée liée" ci-dessous.
+ {% endif %} {% elif c.type == 'color' %} {% elif c.type == 'slider' %} @@ -1389,6 +1412,29 @@ function debouncedSubmitPropsForm() { autosaveTimer = setTimeout(submitPropsForm, 500); } +// Insère "{{champ}}" à l'emplacement du curseur dans le champ "Contenu" +// (voir controls_with_values.py, control["field_options"] posé une fois +// "Lier à un objet de données" réglé) — évite d'avoir à taper la syntaxe +// à la main sans savoir quels noms de champs existent. OPEN/CLOSE en deux +// morceaux : Jinja interpréterait "{{"/"}}" littéralement adjacents dans +// le SOURCE de ce template comme le début d'une expression s'il les +// rencontrait tels quels (même à l'intérieur d'un