liste déroulante postes téléphoniques

This commit is contained in:
Pierre Marx
2025-09-04 13:06:17 -04:00
parent ee038cedd8
commit a22344d664
5 changed files with 151 additions and 11 deletions

View File

@@ -18,12 +18,17 @@ document.addEventListener('DOMContentLoaded', async () => {
// Écouter les changements de statut SignalR
ipcRenderer.on('signalr-status', (event, status) => {
updateSignalRIndicator(status);
// Recharger les terminaux à chaque changement de statut
loadTerminals();
});
// Obtenir le statut initial SignalR
const initialStatus = await ipcRenderer.invoke('get-signalr-status');
updateSignalRIndicator(initialStatus);
// Toujours charger les terminaux (simulation ou réels)
loadTerminals();
// Vérifier si un agent est déjà connecté
const agentData = await ipcRenderer.invoke('get-current-agent');
if (agentData) {
@@ -66,19 +71,44 @@ document.addEventListener('DOMContentLoaded', async () => {
async function handleLogin(e) {
e.preventDefault();
const email = document.getElementById('email').value;
const accessCode = document.getElementById('accessCode').value;
const password = document.getElementById('password').value;
const terminal = document.getElementById('terminal').value;
const errorDiv = document.getElementById('loginError');
const result = await ipcRenderer.invoke('login-agent', { email, password });
// Vérifier que le terminal est sélectionné et valide
if (!terminal) {
errorDiv.textContent = 'Veuillez sélectionner un poste téléphonique';
return;
}
if (result.success) {
currentAgent = result.agent;
currentCentres = result.centres;
// 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.';
return;
}
// Sauvegarder le terminal sélectionné pour la prochaine fois
localStorage.setItem('last-terminal', terminal);
// Pour l'instant, utiliser l'authentification locale (simulation)
// TODO: Intégrer l'authentification SignalR
const config = await ipcRenderer.invoke('get-config');
const agent = config.agents.find(a =>
a.email === `${accessCode}@callcenter.fr` &&
a.password === password
);
if (agent) {
currentAgent = agent;
currentAgent.terminal = terminal; // Ajouter le terminal sélectionné
currentCentres = config.centres.filter(c =>
agent.centresAssignes.includes(c.id)
);
errorDiv.textContent = '';
showMainPage();
} else {
errorDiv.textContent = result.message;
errorDiv.textContent = 'Code d\'accès ou mot de passe incorrect';
}
}
@@ -406,6 +436,57 @@ async function saveNotes() {
}
}
// === GESTION DES TERMINAUX ===
let availableTerminals = []; // Stocker les terminaux disponibles
async function loadTerminals() {
const terminalInput = document.getElementById('terminal');
const terminalDatalist = document.getElementById('terminalList');
if (!terminalInput || !terminalDatalist) return;
try {
// Récupérer les terminaux depuis le serveur SignalR
const terminals = await ipcRenderer.invoke('get-terminal-list');
availableTerminals = terminals || [];
if (terminals && terminals.length > 0) {
// Vider la datalist
terminalDatalist.innerHTML = '';
// Ajouter chaque terminal comme option
terminals.forEach(terminal => {
const option = document.createElement('option');
option.value = terminal;
terminalDatalist.appendChild(option);
});
// Restaurer la dernière sélection si disponible
const lastTerminal = localStorage.getItem('last-terminal');
if (lastTerminal && terminals.includes(lastTerminal)) {
terminalInput.value = lastTerminal;
}
// Activer l'input
terminalInput.disabled = false;
terminalInput.placeholder = 'Poste téléphonique (tapez pour filtrer)';
} else {
terminalDatalist.innerHTML = '';
terminalInput.placeholder = 'Aucun poste disponible';
terminalInput.disabled = true;
}
} catch (error) {
console.error('Erreur chargement des terminaux:', error);
terminalDatalist.innerHTML = '';
terminalInput.placeholder = 'Erreur de chargement';
terminalInput.disabled = true;
}
}
// Valider que le terminal saisi existe dans la liste
function validateTerminal(terminal) {
return availableTerminals.includes(terminal);
}
// === GESTION INDICATEUR SIGNALR ===
function updateSignalRStatus() {
// Fonction appelée au chargement pour initialiser l'interface