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
@@ -449,7 +449,7 @@
|
||||
</div>
|
||||
</div>
|
||||
{% if c.key == 'visibilite_cond_variable' %}
|
||||
<button type="button" class="button is-small is-fullwidth" style="margin-top:6px;" onclick="createVisCondVariable()">+ Créer une nouvelle variable</button>
|
||||
<p class="help">Pas la variable qu'il te faut ? <a href="{{ url_for('game_variables', slug=game.slug) }}" target="_blank">Gérer les variables du jeu ↗</a></p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
@@ -1530,27 +1530,6 @@ function bindJaugeDefinitionSelect() {
|
||||
// globale, ou champ d'un objet) — les deux autres restent en base (peu
|
||||
// importe, seul le mode courant est lu par is_element_visible()) mais sont
|
||||
// masqués pour ne pas embrouiller. ----------
|
||||
function createVisCondVariable() {
|
||||
var name = window.prompt("Nom de la nouvelle variable globale (ex. niveau_debloque) :");
|
||||
if (!name || !name.trim()) return;
|
||||
var body = new URLSearchParams({ name: name.trim(), type: 'texte', default_value: '' });
|
||||
fetch("{{ url_for('create_global_var', slug=game.slug) }}", { method: 'POST', body: body })
|
||||
.then(function (r) { return r.json(); })
|
||||
.then(function (json) {
|
||||
if (!json.ok) { window.alert(json.error || "Échec de la création."); return; }
|
||||
var sel = document.getElementById('field-visibilite_cond_variable');
|
||||
if (!sel) return;
|
||||
if (!sel.querySelector('option[value="' + CSS.escape(json.name) + '"]')) {
|
||||
var opt = document.createElement('option');
|
||||
opt.value = json.name;
|
||||
opt.textContent = json.name;
|
||||
sel.appendChild(opt);
|
||||
}
|
||||
sel.value = json.name;
|
||||
submitPropsForm();
|
||||
});
|
||||
}
|
||||
|
||||
function toggleVisCondFields(sel) {
|
||||
var mode = sel.value;
|
||||
document.querySelectorAll('.visCondRow').forEach(function (row) {
|
||||
|
||||
Reference in New Issue
Block a user