Rend le panneau "Nouvel objet" compact — lignes de tableau, pas des cartes
Chaque champ prenait une grosse carte (~250px de haut : libellés Bulma pleine taille, "Retirer ce champ" en texte) — inutilisable pour un objet à 10+ champs, ce qui est pourtant l'usage visé par ce panneau. Remplacé par une vraie ligne de tableau dense, sur le même principe que "Champs existants" dans object_edit.html (déjà compact et sobre dans le reste de l'outil) : une ligne = un champ, colonnes Nom/Type/Objet lié/Mini/Maxi/Obligatoire, action "Retirer" réduite à une icône. Les colonnes conditionnelles (Objet lié pour une relation, Mini/Maxi pour un nombre) restent TOUJOURS présentes — sans quoi les colonnes de lignes différentes ne s'aligneraient plus — seul leur contenu bascule entre le vrai champ de saisie et un espace réservé "—", au lieu de masquer toute la cellule comme avant. object_form.js adapté en conséquence : bounds désormais 2 cibles séparées (mini/maxi, chacune dans sa propre cellule) au lieu d'une seule enveloppe commune, et chaque bascule s'accompagne de celle de son espace réservé. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
d875557254
commit
e1216e99d5
+20
-4
@@ -17,12 +17,28 @@
|
||||
var NUMERIC_FIELD_TYPES = ['nombre_entier', 'nombre_decimal'];
|
||||
|
||||
function wireRow(row) {
|
||||
// Ligne de TABLEAU dense (une ligne = un champ, comme "Champs
|
||||
// existants" dans object_edit.html) : "Objet lié" et "Mini"/"Maxi"
|
||||
// gardent toujours leur colonne (jamais masquée, sinon les colonnes
|
||||
// des différentes lignes ne s'alignent plus) — seul leur CONTENU
|
||||
// bascule entre le vrai champ de saisie et un espace réservé "—"
|
||||
// quand il ne s'applique pas au type choisi.
|
||||
var typeSelect = row.querySelector('.fieldTypeSelect');
|
||||
var relationWrap = row.querySelector('.relationTarget');
|
||||
var boundsWrap = row.querySelector('.boundsTarget');
|
||||
var relationTarget = row.querySelector('.relationTarget');
|
||||
var relationPlaceholder = row.querySelector('.relationPlaceholder');
|
||||
var boundsTargets = row.querySelectorAll('.boundsTarget');
|
||||
var boundsPlaceholders = row.querySelectorAll('.boundsPlaceholder');
|
||||
|
||||
function toggle(target, placeholder, visible) {
|
||||
target.style.display = visible ? '' : 'none';
|
||||
placeholder.style.display = visible ? 'none' : '';
|
||||
}
|
||||
|
||||
function syncFieldTypeVisibility() {
|
||||
relationWrap.style.display = typeSelect.value === 'relation' ? 'block' : 'none';
|
||||
if (boundsWrap) boundsWrap.style.display = NUMERIC_FIELD_TYPES.includes(typeSelect.value) ? 'flex' : 'none';
|
||||
var isRelation = typeSelect.value === 'relation';
|
||||
var isNumeric = NUMERIC_FIELD_TYPES.includes(typeSelect.value);
|
||||
toggle(relationTarget, relationPlaceholder, isRelation);
|
||||
boundsTargets.forEach(function (el, i) { toggle(el, boundsPlaceholders[i], isNumeric); });
|
||||
}
|
||||
typeSelect.addEventListener('change', syncFieldTypeVisibility);
|
||||
syncFieldTypeVisibility();
|
||||
|
||||
Reference in New Issue
Block a user