1) Bug pjax trouvé : swapDocument() cherchait "header.topbar", qui n'a jamais existé (c'est un <nav>, pas un <header>) — la barre de navigation du jeu (ajoutée après pjax.js) n'était donc jamais mise à jour pendant une navigation pjax : absente en arrivant sur un jeu sans Ctrl+F5, et inversement laissée en place en revenant sur l'accueil où elle n'a rien à faire. Fix : tout ce qui est hors <main> mais doit changer d'une page à l'autre (topbar + barre du jeu) est regroupé dans un nouveau conteneur stable #pageChrome, que pjax.js remplace en bloc — plus fiable qu'un sélecteur qui ne correspondait à rien. CSS (flex:0 0 auto des layouts plein-écran) mis à jour en conséquence. 2) Renommages demandés : onglet/panneau "Écrans du jeu" -> "Écrants", "Éléments de jeu" -> "Templates" (tab, titre de panneau, bouton "+ Créer un template", état vide, infobulle, confirmation de suppression). 3) Le crayon ✏️ sur une ligne d'objet ouvre désormais un panneau déplaçable ET redimensionnable (nouveau coin de redimensionnement générique, .floatPanelResizeHandle) au lieu de naviguer vers object_edit.html (retirée) — un panneau par objet, pré-rendu et caché par défaut. Reprend telles quelles les fonctionnalités de l'ancienne page : renommer l'objet, ajouter un champ (ligne compacte), modifier/supprimer un champ existant (tableau dense déjà repris pour "Nouvel objet"), supprimer l'objet. Les routes de champs (object_field_ add/edit/delete) et object_edit lui-même redirigent maintenant vers le tableau de bord avec ?edit=<id>, pour rouvrir automatiquement le bon panneau après l'action plutôt que de le fermer silencieusement. makeFloatPanelDraggable()/makeFloatPanelResizable() généralisées pour être partagées entre "Nouvel objet" et les panneaux d'édition, plutôt que du code dupliqué par panneau. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
36 lines
1.6 KiB
Python
36 lines
1.6 KiB
Python
from flask import render_template
|
|
|
|
import db
|
|
import screens
|
|
|
|
from core.flask_app import app
|
|
|
|
|
|
@app.route("/game/<slug>")
|
|
def game_dashboard(slug):
|
|
"""Vue d'ensemble du jeu : tout ce qui a été créé (écrans, objets,
|
|
éléments de jeu réutilisables, variables), en un coup d'œil, avec un
|
|
accès direct à chaque élément — la barre de navigation du jeu (voir
|
|
base.html) permet déjà de sauter directement vers chaque éditeur, cette
|
|
page sert donc de résumé/point d'entrée plutôt que de répéter les mêmes
|
|
liens."""
|
|
game = db.game_meta(slug)
|
|
definitions = db.list_definitions(slug)
|
|
# Détail complet (avec ses champs) de chaque objet, pour le panneau
|
|
# d'édition déplaçable (voir game_dashboard.html) ouvert par le crayon
|
|
# ✏️ de l'onglet Objets — un panneau par objet, pré-rendu ici et
|
|
# simplement montré/masqué en JS, plutôt qu'un aller-retour serveur à
|
|
# l'ouverture (voir openObjectEditPanel()).
|
|
definitions_full = {d["id"]: db.get_definition(slug, d["id"]) for d in definitions}
|
|
screen_list = screens.list_screens(slug)
|
|
element_types = screens.list_element_types(slug)
|
|
element_type_usage = {t["id"]: screens.element_type_usage_count(slug, t["id"]) for t in element_types}
|
|
variables = db.list_global_variables(slug)
|
|
return render_template(
|
|
"game_dashboard.html", game=game, definitions=definitions,
|
|
definitions_full=definitions_full,
|
|
screen_list=screen_list, element_types=element_types,
|
|
element_type_usage=element_type_usage, variables=variables,
|
|
variable_types=db.GLOBAL_VARIABLE_TYPES, field_types=db.FIELD_TYPES,
|
|
)
|