From d468f8ff39e046b76223f75bacb5baa40a2f4c91 Mon Sep 17 00:00:00 2001 From: andersonid Date: Fri, 4 Apr 2025 12:15:19 -0300 Subject: [PATCH] =?UTF-8?q?fix:=20Corrige=20processamento=20das=20responsa?= =?UTF-8?q?bilidades=20no=20modal=20de=20edi=C3=A7=C3=A3o=20dos=20militant?= =?UTF-8?q?es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/js/militantes.js | 230 ++++++++++++++++++---------------------- 1 file changed, 101 insertions(+), 129 deletions(-) diff --git a/static/js/militantes.js b/static/js/militantes.js index 0f84327..311c3de 100644 --- a/static/js/militantes.js +++ b/static/js/militantes.js @@ -115,7 +115,6 @@ document.addEventListener('DOMContentLoaded', function() { // Configuração do modal de edição const modalEditarMilitante = document.getElementById('modalEditarMilitante'); - console.log('Modal de edição:', modalEditarMilitante); if (modalEditarMilitante) { console.log('Modal encontrado, configurando eventos...'); @@ -124,71 +123,37 @@ document.addEventListener('DOMContentLoaded', function() { const modalInstance = new bootstrap.Modal(modalEditarMilitante); console.log('Instância do modal criada:', modalInstance); + // Configurar eventos quando o modal é mostrado modalEditarMilitante.addEventListener('show.bs.modal', function(event) { - console.log('Modal sendo exibido'); + console.log('Modal sendo aberto...'); + + // Obter o botão que disparou o modal const button = event.relatedTarget; - console.log('Botão:', button); - - if (!button) { - console.error('Botão não encontrado!'); - return; - } - const militanteId = button.getAttribute('data-militante-id'); const militanteNome = button.getAttribute('data-militante-nome'); + console.log('ID do militante:', militanteId); console.log('Nome do militante:', militanteNome); - if (!militanteId) { - console.error('ID do militante não encontrado no botão!'); - return; - } - - // Atualizar o título do modal com o nome do militante + // Atualizar o título do modal const modalTitle = modalEditarMilitante.querySelector('.modal-title'); if (modalTitle) { modalTitle.innerHTML = `Editar ${militanteNome}`; } - // Configurar formulário - const form = document.getElementById('formEditarMilitante'); - if (form) { - form.action = `/militantes/editar/${militanteId}`; - const idInput = document.getElementById('edit_militante_id'); - if (idInput) { - idInput.value = militanteId; - } - console.log('Action do formulário:', form.action); - console.log('ID do militante no formulário:', militanteId); - } else { - console.error('Formulário não encontrado!'); - return; + // Definir o ID do militante no campo hidden + const idField = document.getElementById('edit_militante_id'); + if (idField) { + idField.value = militanteId; } - // Mostrar loading - const modalBody = modalEditarMilitante.querySelector('.modal-body'); - if (modalBody) { - modalBody.style.opacity = '0.5'; - } - - // Buscar dados completos do militante via AJAX - console.log(`Fazendo requisição para /militantes/${militanteId}/dados`); - - // Obter o CSRF token - const csrfToken = document.querySelector('meta[name="csrf-token"]')?.getAttribute('content'); - console.log('CSRF token:', csrfToken); - - fetch(`/militantes/${militanteId}/dados`, { - method: 'GET', + // Buscar dados do militante + fetch(`/militantes/dados/${militanteId}`, { headers: { - 'Accept': 'application/json', - 'X-Requested-With': 'XMLHttpRequest', - 'X-CSRFToken': csrfToken - }, - credentials: 'same-origin' + 'X-Requested-With': 'XMLHttpRequest' + } }) .then(response => { - console.log('Resposta recebida:', response); if (!response.ok) { return response.json().then(data => { throw new Error(data.message || `HTTP error! status: ${response.status}`); @@ -204,85 +169,91 @@ document.addEventListener('DOMContentLoaded', function() { } try { - console.log('Preenchendo dados básicos...'); - // Dados Básicos - document.getElementById('edit_nome').value = dados.nome || ''; - document.getElementById('edit_cpf').value = dados.cpf || ''; - document.getElementById('edit_titulo_eleitoral').value = dados.titulo_eleitoral || ''; - document.getElementById('edit_data_nascimento').value = dados.data_nascimento || ''; - document.getElementById('edit_data_entrada').value = dados.data_entrada_oci || ''; - document.getElementById('edit_data_efetivacao').value = dados.data_efetivacao_oci || ''; - console.log('Dados básicos preenchidos'); + // Preencher os campos do formulário + const campos = { + 'edit_nome': dados.nome, + 'edit_cpf': dados.cpf, + 'edit_titulo_eleitoral': dados.titulo_eleitoral, + 'edit_data_nascimento': dados.data_nascimento, + 'edit_data_entrada': dados.data_entrada_oci, + 'edit_data_efetivacao': dados.data_efetivacao_oci, + 'edit_telefone1': dados.telefone1, + 'edit_telefone2': dados.telefone2, + 'edit_email': dados.email, + 'edit_cep': dados.endereco?.cep, + 'edit_estado': dados.endereco?.estado, + 'edit_cidade': dados.endereco?.cidade, + 'edit_bairro': dados.endereco?.bairro, + 'edit_rua': dados.endereco?.rua, + 'edit_numero': dados.endereco?.numero, + 'edit_complemento': dados.endereco?.complemento, + 'edit_profissao': dados.profissao, + 'edit_regime_trabalho': dados.regime_trabalho, + 'edit_empresa': dados.empresa, + 'edit_contratante': dados.contratante, + 'edit_instituicao_ensino': dados.instituicao_ensino, + 'edit_tipo_instituicao': dados.tipo_instituicao, + 'edit_sindicato': dados.sindicato, + 'edit_cargo_sindical': dados.cargo_sindical, + 'edit_central_sindical': dados.central_sindical, + 'edit_estado_militante': dados.estado, + 'edit_celula': dados.celula_id + }; - console.log('Preenchendo dados de contato...'); - // Contato - document.getElementById('edit_telefone1').value = dados.telefone1 || ''; - document.getElementById('edit_telefone2').value = dados.telefone2 || ''; - document.getElementById('edit_email').value = dados.email || ''; - console.log('Dados de contato preenchidos'); - - console.log('Preenchendo dados de endereço...'); - // Endereço - if (dados.endereco) { - document.getElementById('edit_cep').value = dados.endereco.cep || ''; - document.getElementById('edit_estado').value = dados.endereco.estado || ''; - document.getElementById('edit_cidade').value = dados.endereco.cidade || ''; - document.getElementById('edit_bairro').value = dados.endereco.bairro || ''; - document.getElementById('edit_logradouro').value = dados.endereco.rua || ''; - document.getElementById('edit_numero').value = dados.endereco.numero || ''; - document.getElementById('edit_complemento').value = dados.endereco.complemento || ''; - } - console.log('Dados de endereço preenchidos'); - - console.log('Preenchendo dados profissionais...'); - // Profissional - document.getElementById('edit_profissao').value = dados.profissao || ''; - document.getElementById('edit_regime_trabalho').value = dados.regime_trabalho || ''; - document.getElementById('edit_empresa').value = dados.empresa || ''; - document.getElementById('edit_contratante').value = dados.contratante || ''; - console.log('Dados profissionais preenchidos'); - - console.log('Preenchendo dados acadêmicos...'); - // Acadêmico - document.getElementById('edit_instituicao_ensino').value = dados.instituicao_ensino || ''; - document.getElementById('edit_tipo_instituicao').value = dados.tipo_instituicao || ''; - console.log('Dados acadêmicos preenchidos'); - - console.log('Preenchendo dados sindicais...'); - // Sindical - document.getElementById('edit_sindicato').value = dados.sindicato || ''; - document.getElementById('edit_cargo_sindical').value = dados.cargo_sindical || ''; - document.getElementById('edit_central_sindical').value = dados.central_sindical || ''; - document.getElementById('edit_dirigente_sindical').checked = dados.dirigente_sindical || false; - console.log('Dados sindicais preenchidos'); - - console.log('Preenchendo dados organizacionais...'); - // Organização - document.getElementById('edit_estado_militante').value = dados.estado || 'ATIVO'; - document.getElementById('edit_celula').value = dados.celula_id || ''; - - // Responsabilidades - const responsabilidades = dados.responsabilidades || 0; - document.querySelectorAll('input[name="responsabilidades"]').forEach(checkbox => { - const valor = parseInt(checkbox.value); - checkbox.checked = (responsabilidades & valor) !== 0; + // Preencher cada campo se ele existir + Object.entries(campos).forEach(([id, valor]) => { + const campo = document.getElementById(id); + if (campo && valor !== undefined && valor !== null) { + campo.value = valor; + } }); - console.log('Dados organizacionais preenchidos'); - console.log('Todos os dados preenchidos com sucesso!'); + // Checkbox de dirigente sindical + const checkDirigente = document.getElementById('edit_dirigente_sindical'); + if (checkDirigente) { + checkDirigente.checked = dados.dirigente_sindical; + } + + // Checkboxes de responsabilidades + const responsabilidadesMap = { + 'Finanças': 'edit_resp_1', + 'Imprensa': 'edit_resp_2', + 'Quadro-Orientador': 'edit_resp_4' + }; + + console.log('Responsabilidades recebidas:', dados.responsabilidades); + + // Resetar todos os checkboxes primeiro + Object.values(responsabilidadesMap).forEach(id => { + const checkbox = document.getElementById(id); + if (checkbox) { + checkbox.checked = false; + } + }); + + // Marcar os checkboxes baseado nas responsabilidades recebidas + if (Array.isArray(dados.responsabilidades)) { + dados.responsabilidades.forEach(resp => { + const checkboxId = responsabilidadesMap[resp]; + if (checkboxId) { + const checkbox = document.getElementById(checkboxId); + if (checkbox) { + checkbox.checked = true; + console.log(`Marcando checkbox ${checkboxId} para responsabilidade ${resp}`); + } + } + }); + } + + console.log('Formulário preenchido com sucesso'); } catch (error) { - console.error('Erro ao preencher os campos:', error); - throw new Error('Erro ao preencher os dados do militante: ' + error.message); + console.error('Erro ao preencher formulário:', error); + mostrarAlerta('Erro ao carregar dados do militante', 'danger'); } }) .catch(error => { - console.error('Erro ao buscar dados do militante:', error); - alert('Erro ao carregar dados do militante: ' + error.message); - }) - .finally(() => { - if (modalBody) { - modalBody.style.opacity = '1'; - } + console.error('Erro ao buscar dados:', error); + mostrarAlerta('Erro ao carregar dados do militante', 'danger'); }); }); @@ -294,21 +265,22 @@ document.addEventListener('DOMContentLoaded', function() { console.log('Enviando formulário de edição...'); const formData = new FormData(this); - console.log('Dados do formulário:', Object.fromEntries(formData)); - // Adicionar responsabilidades selecionadas - const responsabilidades = Array.from(this.querySelectorAll('input[name="responsabilidades"]:checked')) - .map(cb => parseInt(cb.value)) - .reduce((a, b) => a + b, 0); - formData.set('responsabilidades', responsabilidades); + // Coletar responsabilidades selecionadas + const responsabilidades = []; + if (document.getElementById('edit_resp_1').checked) responsabilidades.push('Finanças'); + if (document.getElementById('edit_resp_2').checked) responsabilidades.push('Imprensa'); + if (document.getElementById('edit_resp_4').checked) responsabilidades.push('Quadro-Orientador'); + + formData.set('responsabilidades', JSON.stringify(responsabilidades)); + + console.log('Responsabilidades enviadas:', responsabilidades); // Obter o CSRF token const csrfToken = document.querySelector('meta[name="csrf-token"]')?.getAttribute('content'); - console.log('CSRF token:', csrfToken); // Obter o ID do militante do campo hidden const militanteId = document.getElementById('edit_militante_id').value; - console.log('ID do militante:', militanteId); if (!militanteId) { console.error('ID do militante não encontrado!');