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>
27 lines
1.0 KiB
Python
27 lines
1.0 KiB
Python
from ..connection import connect
|
|
from .ensure_custom_events_schema import ensure_custom_events_schema
|
|
|
|
|
|
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
|
|
double clic/soumission depuis l'onglet Événements (screen_edit.html)."""
|
|
name = (name or "").strip()
|
|
if not name:
|
|
return None
|
|
ensure_custom_events_schema(slug)
|
|
conn = connect(slug)
|
|
existing = conn.execute("SELECT id FROM _custom_events WHERE name = ?", (name,)).fetchone()
|
|
if existing:
|
|
conn.close()
|
|
return existing["id"]
|
|
conn.execute(
|
|
"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()
|
|
conn.close()
|
|
return new_id
|