From a0839ed563bdecc26de0b3ffe4d1d57c5e595241 Mon Sep 17 00:00:00 2001 From: Benoit Date: Sun, 24 May 2026 20:32:24 +0200 Subject: [PATCH] refactor: simplification structure des groupes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Simplification majeure de la configuration des groupes : - Suppression des champs redondants 'id' et 'description' - Le nom du groupe sert maintenant d'identifiant (converti en slug automatiquement) - Génération automatique des IDs pour groupes et canaux via fonction slugify() Backend (server/) : - Ajout fonction slugify() pour génération d'IDs à partir des noms - Génération automatique des IDs au chargement de la config (index.js) - API admin adaptée : POST/PUT /admin/groups génèrent les IDs automatiquement - Pas besoin de fournir l'ID lors de la création/modification Frontend (client/src/Admin.jsx + Admin.css) : - Suppression champs ID et description du formulaire - Simplification interface : nom + bitrate + canaux - Mise à jour layout CSS canal (4 colonnes au lieu de 5) - Cartes de groupe épurées (plus d'affichage d'ID) Configuration (config.yaml) : - Format simplifié : groupes avec 'name', 'channels' et 'audioBitrate' optionnel - Exemple : "Production" au lieu de id/name/description séparés - Plus lisible et maintenable Les IDs sont générés dynamiquement : - Groupe "Production" → id: "production" - Canal "Principal" → id: "production-principal" 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- client/src/Admin.css | 2 +- client/src/Admin.jsx | 56 ++++++--------------------------------- server/api/admin.js | 54 ++++++++++++++++++++++++++++--------- server/config/config.yaml | 36 +++++++------------------ server/index.js | 36 ++++++++++++++++++++++--- 5 files changed, 93 insertions(+), 91 deletions(-) diff --git a/client/src/Admin.css b/client/src/Admin.css index 104f0b8..e36038a 100644 --- a/client/src/Admin.css +++ b/client/src/Admin.css @@ -293,7 +293,7 @@ .channel-item { display: grid; - grid-template-columns: 1fr 1fr 80px 80px 50px; + grid-template-columns: 2fr 80px 80px 50px; gap: 0.5rem; margin-bottom: 0.5rem; align-items: center; diff --git a/client/src/Admin.jsx b/client/src/Admin.jsx index e24a08a..7c537b0 100644 --- a/client/src/Admin.jsx +++ b/client/src/Admin.jsx @@ -16,9 +16,7 @@ function Admin() { const [showGroupForm, setShowGroupForm] = useState(false); const [editingGroup, setEditingGroup] = useState(null); const [groupForm, setGroupForm] = useState({ - id: '', name: '', - description: '', audioBitrate: 96, channels: [] }); @@ -152,9 +150,7 @@ function Admin() { const startEditGroup = (group) => { setEditingGroup(group.id); setGroupForm({ - id: group.id, name: group.name, - description: group.description || '', audioBitrate: group.audioBitrate || 96, channels: group.channels || [] }); @@ -163,9 +159,7 @@ function Admin() { const resetGroupForm = () => { setGroupForm({ - id: '', name: '', - description: '', audioBitrate: 96, channels: [] }); @@ -178,7 +172,7 @@ function Admin() { ...groupForm, channels: [ ...groupForm.channels, - { id: '', name: '', audioInput: 0, audioOutput: 0 } + { name: '', audioInput: 0, audioOutput: 0 } ] }); }; @@ -295,38 +289,18 @@ function Admin() {
-
- - - -