Merge branch 'feature/saisie-manuelle-poste'

This commit is contained in:
Pierre Marx
2025-10-17 16:12:27 -04:00
4 changed files with 67 additions and 17 deletions

View File

@@ -1,5 +1,28 @@
# Changelog - SimpleConnect Electron
## [1.3.1] - 2025-10-17
### Ajouté
- **Saisie manuelle de postes téléphoniques personnalisés** : L'utilisateur peut désormais taper un numéro de poste qui n'est pas dans la liste officielle
- Activation de `addItems` et `addChoices` dans Choices.js pour les éléments `<select>`
- 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é

View File

@@ -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": {

View File

@@ -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
if (!validateTerminal(terminal)) {
errorDiv.textContent = 'Poste téléphonique invalide. Veuillez choisir un poste de 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)) {
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);
@@ -804,7 +825,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 +848,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);
});
}
@@ -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 <select>, permet d'ajouter des choices personnalisés
searchPlaceholderValue: 'Rechercher ou saisir un poste...',
itemSelectText: 'Appuyez sur Entrée pour sélectionner',
noResultsText: 'Aucun poste trouvé. Appuyez sur Entrée pour utiliser ce numéro.',
noChoicesText: 'Aucun poste disponible',
addItemText: (value) => {
return `Utiliser le poste personnalisé : <b>${value}</b>`;
},
shouldSort: false,
searchResultLimit: 20,
renderChoiceLimit: -1,
placeholder: true,
placeholderValue: 'Sélectionner un poste téléphonique',
placeholderValue: 'Sélectionner ou saisir un poste téléphonique',
choices: choicesData.length > 0 ? choicesData : [{value: '', label: 'Aucun poste disponible', disabled: true}],
searchFields: ['label', 'value'],
fuseOptions: {
@@ -903,7 +929,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);
});
}

View File

@@ -1192,6 +1192,7 @@ body {
}
.choices__item--choice.is-highlighted {
background: #667eea;
color: white;
background: #e8f0fe !important; /* Bleu très clair pour meilleur contraste */
color: #1a1a1a !important; /* Texte noir foncé */
font-weight: 500; /* Légèrement en gras pour lisibilité */
}