liste déroulante postes téléphoniques
This commit is contained in:
93
renderer.js
93
renderer.js
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user