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
@@ -8,7 +8,6 @@ from core.flask_app import app
|
||||
@app.route("/game/<slug>/events/<int:event_id>/edit", methods=["POST"])
|
||||
def custom_event_edit(slug, event_id):
|
||||
description = request.form.get("description") or ""
|
||||
has_element_param = request.form.get("has_element_param") == "on"
|
||||
screen_id = request.form.get("screen_id", type=int)
|
||||
db.update_custom_event(slug, event_id, description, has_element_param)
|
||||
db.update_custom_event(slug, event_id, description)
|
||||
return redirect(url_for("screen_edit", slug=slug, screen_id=screen_id, tab="events"))
|
||||
|
||||
@@ -14,8 +14,7 @@ def custom_event_new(slug):
|
||||
bon écran ensuite, jamais stocké sur l'événement lui-même (game-wide)."""
|
||||
name = (request.form.get("name") or "").strip()
|
||||
description = request.form.get("description") or ""
|
||||
has_element_param = request.form.get("has_element_param") == "on"
|
||||
screen_id = request.form.get("screen_id", type=int)
|
||||
if name:
|
||||
db.create_custom_event(slug, name, description, has_element_param)
|
||||
db.create_custom_event(slug, name, description)
|
||||
return redirect(url_for("screen_edit", slug=slug, screen_id=screen_id, tab="events"))
|
||||
|
||||
@@ -13,19 +13,14 @@ def flow_node_run_data(slug, node_id):
|
||||
un nœud du graphe de logique plutôt que depuis la table _actions.
|
||||
|
||||
Si le nœud vise CLICKED_ROW_ID (voir "Ligne cliquée (Répéteur)" dans
|
||||
screen_edit.html) ou EVENT_ROW_ID (la ligne transmise par un événement
|
||||
personnalisé en cours, voir screens/custom_events/), la vraie ligne
|
||||
n'est connue qu'au moment de l'exécution — le client (play.html) la
|
||||
transmet dans le corps JSON de cette requête, et elle remplace ici
|
||||
target_row_id avant d'exécuter l'action."""
|
||||
screen_edit.html), la vraie ligne n'est connue qu'au moment du clic —
|
||||
le client (play.html) la transmet dans le corps JSON de cette requête,
|
||||
et elle remplace ici target_row_id avant d'exécuter l'action."""
|
||||
node = screens.get_flow_node(slug, node_id)
|
||||
if not node or node.get("node_type") != "action" or node.get("action_type") != "modifier_donnee":
|
||||
return jsonify({"ok": False}), 400
|
||||
if node.get("target_row_id") == screens.CLICKED_ROW_ID:
|
||||
body = request.get_json(silent=True) or {}
|
||||
node = {**node, "target_row_id": body.get("clicked_row_id")}
|
||||
elif node.get("target_row_id") == screens.EVENT_ROW_ID:
|
||||
body = request.get_json(silent=True) or {}
|
||||
node = {**node, "target_row_id": body.get("event_row_id")}
|
||||
ok = screens.apply_data_action(slug, node)
|
||||
return jsonify({"ok": ok})
|
||||
|
||||
@@ -46,10 +46,7 @@ def screen_edit(slug, screen_id):
|
||||
global_variables = db.list_global_variables(slug)
|
||||
custom_events = db.list_custom_events(slug)
|
||||
custom_event_usages = screens.list_custom_event_usages(slug)
|
||||
custom_events_map = {
|
||||
e["id"]: {"name": e["name"], "has_element_param": bool(e["has_element_param"])}
|
||||
for e in custom_events
|
||||
}
|
||||
custom_events_map = {e["id"]: {"name": e["name"]} for e in custom_events}
|
||||
|
||||
return render_template(
|
||||
"screen_edit.html",
|
||||
|
||||
Reference in New Issue
Block a user