/* Les appels API sont référencés via l'espace de noms et résolus au moment de l'appel, et non capturés à l'import : la configuration ne fige donc pas une implémentation, ce qui la découple du module d'API. */ import * as api from '../../services/api'; /* Description déclarative des 4 référentiels administrables. Les colonnes du tableau, les champs du formulaire et les appels API sont décrits ici plutôt que répétés onglet par onglet : les 4 onglets partagent ainsi un seul tableau et un seul formulaire. */ export const REFERENTIELS = [ { key: 'monitorings', label: 'Monitorings', singulier: 'monitoring', idField: 'id_monito', /* Désactivation logique : TABLE_FINAL référence le monitoring. */ suppressionEstDesactivation: true, colonnes: [ { key: 'monito_intitule', label: 'Nom' }, { key: 'id_service', label: 'Service', referentiel: 'services' }, { key: 'id_categorie', label: 'Catégorie', referentiel: 'categories' }, { key: 'bdd_source', label: 'Source' }, { key: 'table_source', label: 'Table' }, ], champs: [ { name: 'monito_intitule', label: 'Nom', type: 'text', required: true }, { name: 'id_service', label: 'Service', type: 'select', options: 'services', required: true }, { name: 'id_categorie', label: 'Catégorie', type: 'select', options: 'categories', required: true }, { name: 'table_source', label: 'Table source', type: 'text', required: true }, { name: 'bdd_source', label: 'Base source', type: 'text', required: true }, ], creer: body => api.createMonitoring(body), modifier: (id, body) => api.updateMonitoring(id, body), supprimer: id => api.desactiverMonitoring(id), }, { key: 'services', label: 'Services', singulier: 'service', idField: 'id_service', colonnes: [{ key: 'nom_service', label: 'Nom' }], champs: [{ name: 'nom_service', label: 'Nom du service', type: 'text', required: true }], creer: body => api.createService(body), modifier: (id, body) => api.updateService(id, body), supprimer: id => api.deleteService(id), }, { key: 'categories', label: 'Catégories', singulier: 'catégorie', idField: 'id_categorie', colonnes: [{ key: 'intitule_categorie', label: 'Nom' }], champs: [{ name: 'intitule_categorie', label: 'Intitulé', type: 'text', required: true }], creer: body => api.createCategorie(body), modifier: (id, body) => api.updateCategorie(id, body), supprimer: id => api.deleteCategorie(id), }, { key: 'contacts', label: 'Contacts', singulier: 'contact', idField: 'id_contact', colonnes: [ { key: 'intitule_contact', label: 'Intitulé' }, { key: 'nom', label: 'Nom' }, { key: 'prenom', label: 'Prénom' }, { key: 'mail', label: 'Email' }, { key: 'id_service', label: 'Service', referentiel: 'services' }, ], champs: [ { name: 'intitule_contact', label: 'Intitulé', type: 'text', required: true }, { name: 'nom', label: 'Nom', type: 'text', required: true }, { name: 'prenom', label: 'Prénom', type: 'text', required: true }, { name: 'mail', label: 'Email', type: 'email', required: true }, { name: 'id_service', label: 'Service', type: 'select', options: 'services', required: true }, ], creer: body => api.createContact(body), modifier: (id, body) => api.updateContact(id, body), supprimer: id => api.deleteContact(id), }, ]; /* Libellés des listes déroulantes et des colonnes qui affichent un identifiant. */ export const LIBELLES_REFERENTIEL = { services: { idField: 'id_service', labelField: 'nom_service' }, categories: { idField: 'id_categorie', labelField: 'intitule_categorie' }, };