first commit
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
// object_form.js — ajoute/retire des lignes de champ dans le formulaire de
|
||||
// définition d'objet, bascule l'affichage du sélecteur "objet lié"
|
||||
// uniquement quand le type choisi est "relation", et l'affichage des
|
||||
// bornes mini/maxi (2.2 — bornage automatique) uniquement pour un champ
|
||||
// numérique.
|
||||
|
||||
const fieldsList = document.getElementById('fieldsList');
|
||||
const template = document.getElementById('fieldRowTemplate');
|
||||
const btnAddField = document.getElementById('btnAddField');
|
||||
const NUMERIC_FIELD_TYPES = ['nombre_entier', 'nombre_decimal'];
|
||||
|
||||
function wireRow(row) {
|
||||
const typeSelect = row.querySelector('.fieldTypeSelect');
|
||||
const relationWrap = row.querySelector('.relationTarget');
|
||||
const boundsWrap = row.querySelector('.boundsTarget');
|
||||
function syncFieldTypeVisibility() {
|
||||
relationWrap.style.display = typeSelect.value === 'relation' ? 'block' : 'none';
|
||||
if (boundsWrap) boundsWrap.style.display = NUMERIC_FIELD_TYPES.includes(typeSelect.value) ? 'flex' : 'none';
|
||||
}
|
||||
typeSelect.addEventListener('change', syncFieldTypeVisibility);
|
||||
syncFieldTypeVisibility();
|
||||
|
||||
row.querySelector('.btnRemoveField').addEventListener('click', () => {
|
||||
row.remove();
|
||||
});
|
||||
}
|
||||
|
||||
function addFieldRow() {
|
||||
const clone = template.content.cloneNode(true);
|
||||
const row = clone.querySelector('.fieldRowCard');
|
||||
fieldsList.appendChild(clone);
|
||||
wireRow(fieldsList.lastElementChild);
|
||||
}
|
||||
|
||||
btnAddField.addEventListener('click', addFieldRow);
|
||||
|
||||
// Toujours démarrer avec un premier champ prêt à remplir.
|
||||
addFieldRow();
|
||||
Reference in New Issue
Block a user