Dev #5
+23
-1
@@ -796,10 +796,32 @@
|
||||
// l'éditeur — contourne la contrainte de clé étrangère de
|
||||
// target_element_id, qui empêche d'y stocker un sentinel comme
|
||||
// EVENT_ROW_ID directement (voir screens/flow/ensure_flow_schema.py).
|
||||
//
|
||||
// data-element-id N'EST PAS unique quand l'élément vit dans un
|
||||
// Répéteur : chaque ligne rejoue le MÊME modèle, donc le MÊME
|
||||
// data-element-id se répète à l'identique sur chaque ligne (voir
|
||||
// render_repeater.py, seul data-row-id — posé sur .repeaterItem,
|
||||
// l'englobant — distingue réellement une ligne d'une autre). Un
|
||||
// simple document.querySelector('[data-element-id]') global
|
||||
// prendrait toujours la PREMIÈRE ligne, jamais la bonne — sans
|
||||
// rapport avec l'événement reçu. Quand l'événement transmet aussi
|
||||
// une ligne (row_id), la recherche est donc scopée à L'INTÉRIEUR de
|
||||
// ce .repeaterItem précis ; sinon (élément fixe, ou événement sans
|
||||
// paramètre de ligne), recherche globale comme avant.
|
||||
const resolvedElementId = node.target_element_from_event
|
||||
? (window.lastEventParams ? window.lastEventParams.element_id : null)
|
||||
: node.target_element_id;
|
||||
const targetEl = resolvedElementId ? document.querySelector('[data-element-id="' + resolvedElementId + '"]') : null;
|
||||
const resolvedRowId = node.target_element_from_event && window.lastEventParams
|
||||
? window.lastEventParams.row_id : null;
|
||||
let targetEl = null;
|
||||
if (resolvedElementId != null) {
|
||||
if (resolvedRowId != null) {
|
||||
const rowEl = document.querySelector('.repeaterItem[data-row-id="' + resolvedRowId + '"]');
|
||||
targetEl = rowEl ? rowEl.querySelector('[data-element-id="' + resolvedElementId + '"]') : null;
|
||||
} else {
|
||||
targetEl = document.querySelector('[data-element-id="' + resolvedElementId + '"]');
|
||||
}
|
||||
}
|
||||
if (targetEl) applyElementProperty(targetEl, node.element_property, node.element_value);
|
||||
return Promise.resolve();
|
||||
} else if (node.action_type === 'declencher_evenement' && node.target_custom_event_id) {
|
||||
|
||||
Reference in New Issue
Block a user