Let Texte/Titre elements bind directly to a single row of another object

Adds a "Donnée liée" settings group to Texte/Titre: pick an object, optionally match it to the current game state via 1-2 filter conditions (same engine as the data-repeater's filter, including {{Objet.champ}} cross-references), and use {{champ}} in the text content to show a field from that one matching row. Unlike the data repeater — built for showing a list of rows — this covers displaying a single computed value (e.g. the objective of the level matching the game's current parcours/level) without wrapping it in a repeater.
This commit is contained in:
william
2026-08-24 11:02:54 +02:00
parent f58fb2bc3d
commit 0e5db97180
5 changed files with 74 additions and 3 deletions
+4
View File
@@ -14,6 +14,7 @@ from .render_repeater import _render_repeater
from .render_jauge import _render_jauge
from .render_overlay import _render_overlay
from .render_onglets import _render_onglets
from .resolve_bound_row import _resolve_bound_row_ctx
def render_element_html(el, slug=None, children_map=None, ctx=None, parent_flex_direction=None):
@@ -29,6 +30,9 @@ def render_element_html(el, slug=None, children_map=None, ctx=None, parent_flex_
pose physiquement cet élément, s'il y en a un — elle influence la largeur
par défaut de cet élément (voir _style_string)."""
meta = widget_meta(el.get("widget"))
bound_ctx = _resolve_bound_row_ctx(slug, el.get("attributes") or {})
if bound_ctx:
ctx = {**(ctx or {}), **bound_ctx}
special = meta.get("special_render")
if special == "table":
return _render_table(el, meta, slug, children_map, ctx, parent_flex_direction)