Remplace la création inline de variable par une page de gestion dédiée, redesign du tableau de bord du jeu
Retrait de la création rapide de variable globale depuis le sélecteur de
la Condition de visibilité (bouton "+ Créer") : une variable globale est
désormais gérée comme un objet "jeu" à part entière, avec une vraie page
CRUD ("Variables", nouvelle entrée du menu de gauche) - création, édition
du type/valeur, suppression. Le nom reste volontairement immuable après
création (c'est par ce nom qu'une condition de visibilité ou une action
"Modifier une variable" la référence - la renommer casserait ces réglages
en silence), d'où db.update_global_variable qui ne touche que type/valeur.
Redesign du tableau de bord du jeu (game_dashboard.html) en deux
colonnes : à gauche tout ce qu'on peut créer (écrans, éléments de jeu,
variables, jouer, nouvel objet) plus les paramètres du jeu (renommer/
supprimer) ; à droite ce qui a déjà été créé (objets définis). Remplace
les cartes Bulma par le système de mise en page compact déjà défini dans
style.css (.twoCol/.listRow/.dangerZone/.addBtn) mais jamais utilisé
jusqu'ici - plus dense et cohérent avec le reste de l'éditeur.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
c04bc0b926
commit
11a2d397e8
+6
-3
@@ -20,7 +20,7 @@ exécute un vrai CREATE TABLE, et remplir le formulaire généré exécute un
|
||||
vrai INSERT dans cette table.
|
||||
"""
|
||||
|
||||
from .constants import PROJECTS_DIR, FIELD_TYPES
|
||||
from .constants import PROJECTS_DIR, FIELD_TYPES, GLOBAL_VARIABLE_TYPES
|
||||
from .slugify import slugify
|
||||
from .table_name_for import table_name_for
|
||||
from .game_dir import game_dir
|
||||
@@ -56,10 +56,12 @@ from .global_vars.list_global_variables import list_global_variables
|
||||
from .global_vars.get_global_variable import get_global_variable
|
||||
from .global_vars.create_global_variable import create_global_variable
|
||||
from .global_vars.update_global_variable_value import update_global_variable_value
|
||||
from .global_vars.update_global_variable import update_global_variable
|
||||
from .global_vars.delete_global_variable import delete_global_variable
|
||||
from .global_vars.delete_global_variable_by_id import delete_global_variable_by_id
|
||||
|
||||
__all__ = [
|
||||
"PROJECTS_DIR", "FIELD_TYPES",
|
||||
"PROJECTS_DIR", "FIELD_TYPES", "GLOBAL_VARIABLE_TYPES",
|
||||
"slugify", "table_name_for", "game_dir", "db_path", "connect",
|
||||
"list_games", "game_meta", "create_game", "update_game_name", "delete_game",
|
||||
"list_definitions", "get_definition", "create_definition", "rename_definition",
|
||||
@@ -68,5 +70,6 @@ __all__ = [
|
||||
"list_rows", "relation_options", "insert_row", "get_row", "update_row",
|
||||
"update_row_field", "delete_row", "rows_referencing",
|
||||
"list_global_variables", "get_global_variable", "create_global_variable",
|
||||
"update_global_variable_value", "delete_global_variable",
|
||||
"update_global_variable_value", "update_global_variable", "delete_global_variable",
|
||||
"delete_global_variable_by_id",
|
||||
]
|
||||
|
||||
@@ -14,3 +14,14 @@ FIELD_TYPES = {
|
||||
"date": {"label": "Date", "sql": "TEXT"},
|
||||
"relation": {"label": "Relation vers un autre objet", "sql": "INTEGER"},
|
||||
}
|
||||
|
||||
# Types disponibles pour une variable globale (voir db/global_vars/) — un
|
||||
# sous-ensemble de FIELD_TYPES : ni "relation" (une variable globale n'a pas
|
||||
# d'objet à pointer) ni "texte_long"/"date" (pas gérés par
|
||||
# apply_variable_action.py, qui ne coerce que ces 4 types).
|
||||
GLOBAL_VARIABLE_TYPES = {
|
||||
"texte": FIELD_TYPES["texte"],
|
||||
"nombre_entier": FIELD_TYPES["nombre_entier"],
|
||||
"nombre_decimal": FIELD_TYPES["nombre_decimal"],
|
||||
"booleen": FIELD_TYPES["booleen"],
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
from ..connection import connect
|
||||
from .ensure_global_vars_schema import ensure_global_vars_schema
|
||||
|
||||
|
||||
def delete_global_variable_by_id(slug, var_id):
|
||||
"""Version par id de delete_global_variable — utilisée par la page de
|
||||
gestion des variables (game_variables.html), où chaque ligne connaît son
|
||||
id technique mais pas nécessairement un nom encore garanti unique côté
|
||||
formulaire d'URL (espaces, accents...)."""
|
||||
ensure_global_vars_schema(slug)
|
||||
conn = connect(slug)
|
||||
conn.execute("DELETE FROM _global_variables WHERE id = ?", (var_id,))
|
||||
conn.commit()
|
||||
conn.close()
|
||||
@@ -0,0 +1,16 @@
|
||||
from ..connection import connect
|
||||
from .ensure_global_vars_schema import ensure_global_vars_schema
|
||||
|
||||
|
||||
def update_global_variable(slug, var_id, var_type, value):
|
||||
"""Modifie le type et la valeur d'une variable existante depuis la page
|
||||
de gestion (voir game_variables.html) — le NOM reste volontairement
|
||||
immuable après création : c'est par ce nom qu'une condition de
|
||||
visibilité ou une action "Modifier une variable" la référence (voir
|
||||
get_global_variable.py), la renommer casserait ces réglages en
|
||||
silence."""
|
||||
ensure_global_vars_schema(slug)
|
||||
conn = connect(slug)
|
||||
conn.execute("UPDATE _global_variables SET type = ?, value = ? WHERE id = ?", (var_type, str(value), var_id))
|
||||
conn.commit()
|
||||
conn.close()
|
||||
Reference in New Issue
Block a user