From 739cd6568125def96f75e39165e583cddee7f587 Mon Sep 17 00:00:00 2001 From: Pierre Marx Date: Fri, 17 Oct 2025 11:34:12 -0400 Subject: [PATCH 1/4] =?UTF-8?q?refactor:=20Enlever=20le=20pr=C3=A9fixe=20'?= =?UTF-8?q?Poste'=20de=20l'affichage=20des=20terminaux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Affichage direct du numéro de terminal sans préfixe - Modifié dans Choices.js et dans les fallbacks natifs - Interface plus épurée et compacte --- renderer.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/renderer.js b/renderer.js index 3f729fe..661ceb0 100644 --- a/renderer.js +++ b/renderer.js @@ -804,7 +804,7 @@ async function loadTerminals() { terminals.forEach(terminal => { choicesData.push({ value: terminal.toString(), - label: `Poste ${terminal}` + label: terminal.toString() // Affichage simple du numéro sans préfixe }); }); } @@ -827,7 +827,7 @@ async function loadTerminals() { terminals.forEach(terminal => { const option = document.createElement('option'); option.value = terminal; - option.textContent = `Poste ${terminal}`; + option.textContent = terminal.toString(); // Affichage simple du numéro sans préfixe terminalSelect.appendChild(option); }); } @@ -903,7 +903,7 @@ async function loadTerminals() { terminals.forEach(terminal => { const option = document.createElement('option'); option.value = terminal; - option.textContent = `Poste ${terminal}`; + option.textContent = terminal.toString(); // Affichage simple du numéro sans préfixe terminalSelect.appendChild(option); }); } From faaa0e9739bf3317788e2fa9bb55ed9d93c9bab0 Mon Sep 17 00:00:00 2001 From: Pierre Marx Date: Fri, 17 Oct 2025 11:39:13 -0400 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20Permettre=20la=20saisie=20manuelle?= =?UTF-8?q?=20d'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 ` + - Validation de format numérique uniquement + - Avertissement visuel non-bloquant (5 secondes) si le poste n'est pas dans la liste officielle + - Textes UX explicites guidant l'utilisateur ("Rechercher ou saisir un poste...") + - Le serveur accepte tout numéro de poste valide + +### Modifié +- **Affichage des terminaux simplifié** : Les numéros de postes s'affichent maintenant sans le préfixe "Poste" + - Affichage direct "2101" au lieu de "Poste 2101" + - Interface plus épurée et compacte + - Modifié dans Choices.js et dans tous les fallbacks natifs + +### Corrigé +- **Contraste de l'élément survolé dans la liste déroulante** : Amélioration de la lisibilité + - Fond bleu clair (#e8f0fe) au lieu de bleu foncé (#667eea) + - Texte noir foncé (#1a1a1a) au lieu de blanc + - Poids de police semi-gras (500) pour meilleure lisibilité + - Résout le problème d'illisibilité lors de la navigation au clavier + ## [1.3.0] - 2025-09-12 ### Ajouté diff --git a/package.json b/package.json index b7d1044..159d2b9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "simpleconnect-electron", - "version": "1.3.0", + "version": "1.3.1", "description": "Application de gestion centralisée des plannings médicaux pour centres d'appels", "main": "main.js", "scripts": {