/** * Script para funcionalidade de chat * Implementa a conexão entre o botão de chat e os modais de opções e seleção de documentos */ // Função para inicializar a funcionalidade de chat function initChatFunctionality() { console.log('🗨️ Inicializando funcionalidade de chat...'); // Elementos do chat const chatClientBtn = document.getElementById('chat-client-btn'); const chatOptionsModal = document.getElementById('chat-options-modal'); const chatDocumentsModal = document.getElementById('chat-documents-modal'); // Elementos de opções de chat const chatStrategyOption = document.getElementById('chat-strategy-option'); const chatClientOption = document.getElementById('chat-client-option'); // Elementos de seleção de documentos const chatAvailableAnalyses = document.getElementById('chat-available-analyses'); const chatAvailablePlans = document.getElementById('chat-available-plans'); const chatPreviousChats = document.getElementById('chat-previous-chats'); const chatSelectedDocumentsList = document.getElementById('chat-selected-documents-list'); const startChatBtn = document.getElementById('start-chat-btn'); const cancelChatDocumentsBtn = document.getElementById('cancel-chat-documents-btn'); // Botões de fechar modais const closeModalButtons = document.querySelectorAll('.close-modal'); // Estado do chat let selectedChatType = null; let selectedDocuments = []; let selectedExistingChat = null; // Verificar se os elementos existem if (!chatClientBtn) { console.error('❌ Botão de chat não encontrado'); return; } // Adicionar evento de clique ao botão de chat chatClientBtn.addEventListener('click', () => { console.log('🗨️ Botão de chat clicado'); // Verificar se há cliente selecionado if (!window.currentClientId) { console.error('❌ Nenhum cliente selecionado'); return; } // Redirecionar diretamente para a página de chat console.log('🗨️ Redirecionando diretamente para chat.html'); window.location.href = `/chat.html?cliente=${window.currentClientId}`; }); // Adicionar eventos às opções de chat if (chatStrategyOption) { chatStrategyOption.addEventListener('click', () => { console.log('🗨️ Opção de estratégia selecionada'); selectedChatType = 'strategy'; // Atualizar UI chatStrategyOption.classList.add('selected'); if (chatClientOption) chatClientOption.classList.remove('selected'); // Fechar modal de opções if (chatOptionsModal) chatOptionsModal.classList.remove('show'); // Carregar documentos disponíveis e chats existentes loadAvailableDocuments(); loadPreviousChats(); // Mostrar modal de seleção de documentos if (chatDocumentsModal) chatDocumentsModal.classList.add('show'); }); } if (chatClientOption) { chatClientOption.addEventListener('click', () => { console.log('🗨️ Opção de cliente ideal selecionada'); selectedChatType = 'client'; // Atualizar UI chatClientOption.classList.add('selected'); if (chatStrategyOption) chatStrategyOption.classList.remove('selected'); // Fechar modal de opções if (chatOptionsModal) chatOptionsModal.classList.remove('show'); // Carregar documentos disponíveis e chats existentes loadAvailableDocuments(); loadPreviousChats(); // Mostrar modal de seleção de documentos if (chatDocumentsModal) chatDocumentsModal.classList.add('show'); }); } // Adicionar evento ao botão de cancelar seleção de documentos if (cancelChatDocumentsBtn) { cancelChatDocumentsBtn.addEventListener('click', () => { console.log('🗨️ Seleção de documentos cancelada'); // Fechar modal de documentos if (chatDocumentsModal) chatDocumentsModal.classList.remove('show'); // Resetar seleções selectedChatType = null; selectedDocuments = []; selectedExistingChat = null; }); } // Adicionar evento ao botão de iniciar chat if (startChatBtn) { startChatBtn.addEventListener('click', () => { console.log('🗨️ Iniciando chat...'); // Verificar se há tipo de chat e documentos selecionados ou um chat existente selecionado if (!selectedChatType) { console.error('❌ Tipo de chat não selecionado'); return; } if (selectedExistingChat) { // Redirecionar para o chat existente redirectToExistingChat(); } else if (selectedDocuments.length === 0) { console.error('❌ Nenhum documento selecionado'); return; } else { // Iniciar novo chat startChat(); } }); } // Adicionar eventos aos botões de fechar modais closeModalButtons.forEach(button => { button.addEventListener('click', () => { const modal = button.closest('.modal'); if (modal) modal.classList.remove('show'); }); }); // Fechar modais ao clicar fora window.addEventListener('click', (e) => { if (e.target === chatOptionsModal) { chatOptionsModal.classList.remove('show'); } if (e.target === chatDocumentsModal) { chatDocumentsModal.classList.remove('show'); } }); // Função para carregar chats anteriores async function loadPreviousChats() { console.log('🗨️ Carregando chats anteriores...'); // Verificar se há cliente selecionado if (!window.currentClientId) { console.error('❌ Nenhum cliente selecionado'); return; } if (!chatPreviousChats) { console.error('❌ Elemento de chats anteriores não encontrado'); return; } try { // Mostrar indicador de carregamento chatPreviousChats.innerHTML = `
Carregando chats anteriores...
Nenhum chat anterior disponível
Carregando análises...
Carregando planos de ação...
Nenhuma análise disponível
Nenhum plano de ação disponível
Selecione pelo menos um documento acima