From faaa0e9739bf3317788e2fa9bb55ed9d93c9bab0 Mon Sep 17 00:00:00 2001 From: Pierre Marx Date: Fri, 17 Oct 2025 11:39:13 -0400 Subject: [PATCH] =?UTF-8?q?feat:=20Permettre=20la=20saisie=20manuelle=20d'?= =?UTF-8?q?un=20poste=20t=C3=A9l=C3=A9phonique=20personnalis=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Ajout de addItems et addChoices dans Choices.js pour permettre la saisie manuelle - Remplacement de la validation stricte par une validation de format numérique - Ajout d'un avertissement visuel temporaire (5s) si le poste n'est pas dans la liste officielle - Amélioration des textes UX pour guider l'utilisateur - Le serveur accepte maintenant tout numéro de poste valide (numérique) --- renderer.js | 48 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/renderer.js b/renderer.js index 661ceb0..2015ae2 100644 --- a/renderer.js +++ b/renderer.js @@ -157,17 +157,38 @@ async function handleLogin(e) { const loginBtn = document.querySelector('#loginForm button[type="submit"]'); // Vérifier que le terminal est sélectionné et valide - if (!terminal) { - errorDiv.textContent = 'Veuillez sélectionner un poste téléphonique'; + if (!terminal || terminal.trim() === '') { + errorDiv.textContent = 'Veuillez sélectionner ou saisir un poste téléphonique'; return; } - - // Valider que le terminal existe dans la liste + + // Valider le format du terminal (doit être numérique) + if (!/^\d+$/.test(terminal)) { + errorDiv.textContent = 'Le poste doit être un numéro (ex: 3001)'; + return; + } + + // Avertir si le poste n'est pas dans la liste officielle if (!validateTerminal(terminal)) { - errorDiv.textContent = 'Poste téléphonique invalide. Veuillez choisir un poste de la liste.'; - return; + console.log(`⚠️ Avertissement : Le poste ${terminal} n'est pas dans la liste officielle`); + + // Afficher un avertissement visuel temporaire + const warningDiv = document.createElement('div'); + warningDiv.className = 'warning-message'; + warningDiv.style.cssText = 'color: #ff9800; font-size: 0.9em; margin-top: 5px;'; + warningDiv.textContent = `⚠️ Attention : Le poste ${terminal} n'est pas dans la liste officielle`; + + // Insérer l'avertissement avant le message d'erreur + errorDiv.parentNode.insertBefore(warningDiv, errorDiv); + + // Supprimer l'avertissement après 5 secondes + setTimeout(() => { + if (warningDiv.parentNode) { + warningDiv.remove(); + } + }, 5000); } - + // Sauvegarder le terminal sélectionné pour la prochaine fois localStorage.setItem('last-terminal', terminal); @@ -841,15 +862,20 @@ async function loadTerminals() { // Créer une nouvelle instance Choices.js terminalChoices = new window.Choices(terminalSelect, { searchEnabled: true, - searchPlaceholderValue: 'Rechercher un poste...', - itemSelectText: '', - noResultsText: 'Aucun poste trouvé', + addItems: true, // Permet l'ajout d'items + addChoices: true, // IMPORTANT: Pour les