Réutilise le système déjà en place pour l'édition d'objet (body.objectEditBody
+ .content-objectEdit) : la page occupe exactement la hauteur de la fenêtre,
seules les deux colonnes défilent chacune de leur côté si besoin - plus la
page elle-même, qui ne doit jamais défiler.
Colonne de gauche ("Créer") : nouvelle nav à une ligne (.navRow/.navList,
icône + libellé, sous-titre en info-bulle) plutôt que des cartes à deux
lignes - plus dense, plus sobre.
Colonne de droite ("Objets définis") : remplace les cartes par le tableau
compact à en-tête collant déjà utilisé pour les champs d'un objet
(.fieldsTable) - format nettement plus adapté à beaucoup de lignes.
Réduit aussi le padding par défaut de .listRow/.dangerZone (encore utilisés
par la page Variables), dans le même esprit.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
64 lines
3.0 KiB
HTML
64 lines
3.0 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}{{ game.name }} — Forge Engine{% endblock %}
|
|
{% block content_class %}content-wide content-objectEdit{% endblock %}
|
|
{% block body_class %}objectEditBody{% endblock %}
|
|
{% block breadcrumb %}<li class="is-active"><a>{{ game.name }}</a></li>{% endblock %}
|
|
{% block content %}
|
|
<h1 class="title">{{ game.name }}</h1>
|
|
<p class="hint mb-4">Base de données : projects/{{ game.slug }}/game.db</p>
|
|
|
|
<div class="twoCol">
|
|
<div class="colLeft">
|
|
<h2>Créer</h2>
|
|
<div class="navList">
|
|
<a href="{{ url_for('screens_list', slug=game.slug) }}" class="navRow" title="Créer et enchaîner les écrans jouables">🖥️ Écrans du jeu</a>
|
|
<a href="{{ url_for('element_types', slug=game.slug) }}" class="navRow" title="Catalogue réutilisable (Personnage, Outil, IA...)">🧩 Éléments de jeu</a>
|
|
<a href="{{ url_for('game_variables', slug=game.slug) }}" class="navRow" title="Valeurs globales au jeu entier">🔧 Variables</a>
|
|
<a href="{{ url_for('game_play', slug=game.slug) }}" target="_blank" class="navRow" title="Aperçu jouable du jeu">▶️ Jouer</a>
|
|
<a href="{{ url_for('object_new', slug=game.slug) }}" class="navRow" title="Comme une table de base de données : un nom, et des champs typés">🗂️ Objet</a>
|
|
</div>
|
|
|
|
<div class="dangerZone">
|
|
<h3>Paramètres du jeu</h3>
|
|
<form method="post" action="{{ url_for('game_rename', slug=game.slug) }}">
|
|
<label for="rename">Renommer le jeu</label>
|
|
<div class="fieldRow">
|
|
<input type="text" id="rename" name="game_name" value="{{ game.name }}" required autocomplete="off">
|
|
<button type="submit">Renommer</button>
|
|
</div>
|
|
</form>
|
|
<form method="post" action="{{ url_for('game_delete', slug=game.slug) }}" class="actionsRow"
|
|
onsubmit="return confirm('Supprimer définitivement le jeu « {{ game.name }} », son dossier et sa base de données ? Cette action est irréversible.');">
|
|
<button type="submit" class="danger">🗑️ Supprimer ce jeu</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="colRight">
|
|
<h2>Objets définis</h2>
|
|
{% if definitions %}
|
|
<div class="fieldsTableWrap">
|
|
<table class="table is-fullwidth is-hoverable fieldsTable">
|
|
<thead>
|
|
<tr><th>Nom</th><th>Table SQL</th><th></th></tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for d in definitions %}
|
|
<tr>
|
|
<td><a href="{{ url_for('object_view', slug=game.slug, definition_id=d.id) }}">{{ d.name }}</a></td>
|
|
<td class="has-text-grey">{{ d.table_name }}</td>
|
|
<td class="fieldsTableActions">
|
|
<a class="button is-small" href="{{ url_for('object_edit', slug=game.slug, definition_id=d.id) }}" title="Modifier cet objet">✏️</a>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{% else %}
|
|
<p class="hint">Aucun objet défini pour l'instant — un objet, c'est comme une table de base de données : un nom, et des champs typés.</p>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|