Ajoute l'onglet "Données" au panneau objet, retire object_view.html
Suite de la demande : le panneau "Modifier un objet" (crayon ✏️, onglet Objets du tableau de bord) a maintenant 2 sous-onglets — "Champs" (déjà en place) et "Données", qui reprend data_list.html + data_form.html (retirés) : ajouter une entrée (une ligne compacte avec le bon type de champ par colonne — texte/nombre/case à cocher/date/relation, comme l'ancien formulaire), modifier/supprimer une entrée existante (tableau dense, cellules éditables en ligne, même principe que "Champs existants"). Sous-onglets scopés au panneau de LEUR objet (switchObjectPanelTab(), classes .objectPanelTabs/.objectPanelTabPanel distinctes de .builderTabs/ .builderTabPanel) — plusieurs objets ont chacun leurs propres sous-onglets indépendants sur la même page, sans jamais interférer avec les onglets du tableau de bord lui-même. routes/games/game_dashboard.py fournit maintenant, par objet : ses lignes (rows_by_definition), les libellés lisibles de ses champs relation (relation_labels_by_definition, pour l'affichage) et leurs options (relation_options_by_definition, pour les <select>), ainsi que referenced_by_definition (avertissement permanent si un autre objet a une relation vers celui-ci — repris de l'ancien object_view.py, affiché maintenant en continu plutôt qu'après une tentative de suppression échouée). data_form.py (partagé par data_new/data_edit), data_delete.py et object_delete.py redirigent maintenant vers le tableau de bord (?edit=<id>&subtab=data, +?blocked_row=<id> si la suppression d'une entrée est bloquée par une relation) au lieu de object_view/object_edit. Piège évité : de nombreux tests déduisent l'id d'un objet fraîchement créé du DERNIER SEGMENT du chemin dans le header Location d'une redirection (.../objects/<id>) — rediriger object_new directement vers le tableau de bord (chemin sans id) cassait donc 33 tests d'un coup. Fix : object_view.py reste en place, mais seulement comme redirecteur (plus de page rendue) — object_new redirige toujours vers lui (chemin qui se termine par l'id, donc les tests continuent de fonctionner), qui redirige à son tour vers le tableau de bord. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
b8dfdcb205
commit
0e390a679b
@@ -38,6 +38,11 @@ input[type=checkbox]{ width:auto; margin-top:6px; }
|
||||
.formField{ margin-bottom:6px; }
|
||||
|
||||
button{ background:var(--panel2); border:1px solid var(--border); color:var(--text); border-radius:6px; padding:9px 14px; cursor:pointer; font-size:13px; }
|
||||
/* Un <button> qui doit se comporter comme un <a> visuellement (ex. ouvrir
|
||||
un panneau plutôt que suivre un href, mais garder l'apparence d'un lien
|
||||
dans un tableau) — annule le style bouton par défaut ci-dessus. */
|
||||
.linkLikeButton{ background:none; border:none; padding:0; color:var(--accent); text-decoration:none; font-size:inherit; }
|
||||
.linkLikeButton:hover{ text-decoration:underline; }
|
||||
button.primary{ background:var(--accent); border-color:var(--accent); color:#fff; font-weight:600; }
|
||||
button.smallBtn{ padding:5px 10px; font-size:11.5px; }
|
||||
button.danger{ color:var(--danger); border-color:rgba(226,104,95,.4); }
|
||||
@@ -438,6 +443,15 @@ code{ background:var(--panel2); border:1px solid var(--border); border-radius:4p
|
||||
.builderTabPanel{ flex:1 1 auto; min-height:0; display:none; flex-direction:column; }
|
||||
.builderTabPanel.active{ display:flex; }
|
||||
|
||||
/* Sous-onglets Champs/Données À L'INTÉRIEUR d'un panneau "Modifier un
|
||||
objet" (voir game_dashboard.html) — classes distinctes de .builderTabs/
|
||||
.builderTabBtn/.builderTabPanel (utilisées par le style, réutilisé tel
|
||||
quel) pour que switchDashTab() (onglets du tableau de bord lui-même,
|
||||
ciblage global) n'aille jamais les toucher par erreur. */
|
||||
.objectPanelTabs{ margin:14px 0 10px; }
|
||||
.objectPanelTabPanel{ display:none; flex-direction:column; }
|
||||
.objectPanelTabPanel.active{ display:flex; }
|
||||
|
||||
.flowToolbar{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:10px; flex:0 0 auto; }
|
||||
|
||||
.nodeForm{ border:1px solid var(--border); border-radius:8px; padding:12px; margin-bottom:12px; background:var(--panel2); max-width:420px; flex:0 0 auto; }
|
||||
|
||||
Reference in New Issue
Block a user