Simplifie les événements : notification pure, sans paramètre
Retour de l'utilisateur sur le premier jet : "Déclencher un événement" ne doit JAMAIS faire choisir un élément — c'est une notification pure, rien de plus. C'est à l'ÉCOUTEUR (déclencheur "Sur un événement personnalisé" → condition → action) de décider quoi faire ensuite, avec ses réglages habituels (cible fixe, "Ligne cliquée"...), jamais à l'événement de transporter un paramètre. Retire donc tout le mécanisme de transmission ajouté au tour précédent (has_element_param, target_element_from_event, EVENT_ROW_ID, window.lastEventParams) : - db/custom_events/ : _custom_events perd sa colonne has_element_param — un événement n'est plus qu'un nom + une description. - screens/flow/ : retire target_element_from_event (colonne ajoutée par ALTER TABLE, laissée inerte sur les bases déjà migrées — sans conséquence, plus jamais lue ni écrite) et la constante EVENT_ROW_ID. - routes/flow/flow_node_run_data.py : retire la résolution EVENT_ROW_ID, revient à sa forme d'origine (seul CLICKED_ROW_ID reste géré). - templates/screen_edit.html : le nœud Action "Déclencher un événement" n'a plus qu'un sélecteur d'événement — plus de champs élément/ligne. Le nœud Action "Modifier un élément" perd la case "Utiliser l'élément transmis par l'événement en cours". L'onglet Événements perd la case à cocher "Paramètre" (création et édition). - templates/play.html : window.dispatchGameEvent(eventId) ne prend plus que l'id de l'événement — scan global inchangé, mais ne pose plus aucun window.lastEventParams. modifier_element et readFieldValue reviennent à leur résolution d'origine (plus de branche event-aware). 208 tests au total (2 tests retirés, devenus sans objet : la persistance de target_element_from_event et la résolution serveur d'EVENT_ROW_ID). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
666aa892e0
commit
2c59e54556
@@ -2,7 +2,7 @@ from ..connection import connect
|
||||
from .ensure_custom_events_schema import ensure_custom_events_schema
|
||||
|
||||
|
||||
def create_custom_event(slug, name, description="", has_element_param=False):
|
||||
def create_custom_event(slug, name, description=""):
|
||||
"""Idempotent par nom (même convention que create_global_variable.py) :
|
||||
si le nom existe déjà, ne touche à rien et renvoie simplement son id
|
||||
existant plutôt que de lever une erreur — sans risque en cas de
|
||||
@@ -17,8 +17,8 @@ def create_custom_event(slug, name, description="", has_element_param=False):
|
||||
conn.close()
|
||||
return existing["id"]
|
||||
conn.execute(
|
||||
"INSERT INTO _custom_events (name, description, has_element_param) VALUES (?, ?, ?)",
|
||||
(name, (description or "").strip(), 1 if has_element_param else 0),
|
||||
"INSERT INTO _custom_events (name, description) VALUES (?, ?)",
|
||||
(name, (description or "").strip()),
|
||||
)
|
||||
new_id = conn.execute("SELECT last_insert_rowid() AS id").fetchone()["id"]
|
||||
conn.commit()
|
||||
|
||||
@@ -8,7 +8,10 @@ def ensure_custom_events_schema(slug):
|
||||
c'est par ce nom qu'on le désigne dans l'interface, même si les nœuds
|
||||
du graphe le référencent par id technique (voir
|
||||
screens/flow/ensure_flow_schema.py, trigger_custom_event_id/
|
||||
target_custom_event_id)."""
|
||||
target_custom_event_id). Un événement est une pure NOTIFICATION,
|
||||
sans paramètre : "déclencher" ne fait que signaler, jamais choisir
|
||||
un élément — c'est à l'ÉCOUTEUR (déclencheur → condition → action)
|
||||
de décider quoi faire, avec ses propres réglages habituels."""
|
||||
conn = connect(slug)
|
||||
conn.execute(
|
||||
"""
|
||||
@@ -16,7 +19,6 @@ def ensure_custom_events_schema(slug):
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
description TEXT,
|
||||
has_element_param INTEGER NOT NULL DEFAULT 0,
|
||||
created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
"""
|
||||
|
||||
@@ -2,7 +2,7 @@ from ..connection import connect
|
||||
from .ensure_custom_events_schema import ensure_custom_events_schema
|
||||
|
||||
|
||||
def update_custom_event(slug, event_id, description="", has_element_param=False):
|
||||
def update_custom_event(slug, event_id, description=""):
|
||||
"""Le NOM reste volontairement immuable après création — comme une
|
||||
variable globale (voir update_global_variable.py) : c'est par ce nom
|
||||
qu'on désigne l'événement dans l'interface, mais surtout par son ID
|
||||
@@ -11,9 +11,6 @@ def update_custom_event(slug, event_id, description="", has_element_param=False)
|
||||
casserait donc rien niveau logique."""
|
||||
ensure_custom_events_schema(slug)
|
||||
conn = connect(slug)
|
||||
conn.execute(
|
||||
"UPDATE _custom_events SET description = ?, has_element_param = ? WHERE id = ?",
|
||||
((description or "").strip(), 1 if has_element_param else 0, event_id),
|
||||
)
|
||||
conn.execute("UPDATE _custom_events SET description = ? WHERE id = ?", ((description or "").strip(), event_id))
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
Reference in New Issue
Block a user