Merge branch 'feature/saisie-manuelle-poste'
This commit is contained in:
@@ -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é
|
||||
|
||||
@@ -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": {
|
||||
|
||||
50
renderer.js
50
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
|
||||
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);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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é */
|
||||
}
|
||||
Reference in New Issue
Block a user