fix: corrige fluxo de modais na home - Ajusta modal de militantes para abrir detalhes primeiro - Corrige preenchimento de dados nos modais - Mantém fluxo: detalhes -> editar/excluir
This commit is contained in:
@@ -80,7 +80,16 @@
|
||||
{% if ultimos_militantes %}
|
||||
<div class="list-group list-group-flush">
|
||||
{% for militante in ultimos_militantes %}
|
||||
<div class="list-group-item" onclick="window.location='{{ url_for('editar_militante', id=militante.id) }}'">
|
||||
<div class="list-group-item" style="cursor: pointer"
|
||||
data-bs-toggle="modal"
|
||||
data-bs-target="#militanteModal"
|
||||
data-militante-id="{{ militante.id }}"
|
||||
data-militante-nome="{{ militante.nome }}"
|
||||
data-militante-cpf="{{ militante.cpf }}"
|
||||
data-militante-email="{{ militante.email }}"
|
||||
data-militante-telefone="{{ militante.telefone }}"
|
||||
data-militante-endereco="{{ militante.endereco }}"
|
||||
data-militante-filiado="{{ militante.filiado }}">
|
||||
<div class="militante-info">
|
||||
<h6 class="mb-1">{{ militante.nome }}</h6>
|
||||
<small>{{ militante.email }}</small>
|
||||
@@ -333,10 +342,91 @@
|
||||
|
||||
{% block scripts %}
|
||||
<script>
|
||||
<<<<<<< HEAD
|
||||
// Função para formatar CPF
|
||||
function formatCPF(cpf) {
|
||||
return cpf.replace(/(\d{3})(\d{3})(\d{3})(\d{2})/, "$1.$2.$3-$4");
|
||||
}
|
||||
=======
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Modal de Detalhes
|
||||
const militanteModal = document.getElementById('militanteModal');
|
||||
militanteModal.addEventListener('show.bs.modal', function(event) {
|
||||
const button = event.relatedTarget;
|
||||
const militanteId = button.getAttribute('data-militante-id');
|
||||
|
||||
// Preencher os dados do militante
|
||||
document.getElementById('militanteNome').textContent = button.getAttribute('data-militante-nome');
|
||||
document.getElementById('militanteCPF').textContent = button.getAttribute('data-militante-cpf');
|
||||
document.getElementById('militanteEmail').textContent = button.getAttribute('data-militante-email');
|
||||
document.getElementById('militanteTelefone').textContent = button.getAttribute('data-militante-telefone');
|
||||
document.getElementById('militanteEndereco').textContent = button.getAttribute('data-militante-endereco');
|
||||
document.getElementById('militanteFiliado').textContent = button.getAttribute('data-militante-filiado') === 'True' ? 'Filiado' : 'Não Filiado';
|
||||
|
||||
// Configurar dados para o modal de edição
|
||||
const btnEditar = this.querySelector('.btn-primary');
|
||||
btnEditar.addEventListener('click', function() {
|
||||
const modalEditar = document.getElementById('modalEditarMilitante');
|
||||
|
||||
// Preencher o formulário de edição
|
||||
document.getElementById('editNome').value = button.getAttribute('data-militante-nome');
|
||||
document.getElementById('editCpf').value = button.getAttribute('data-militante-cpf');
|
||||
document.getElementById('editEmail').value = button.getAttribute('data-militante-email');
|
||||
document.getElementById('editTelefone').value = button.getAttribute('data-militante-telefone');
|
||||
document.getElementById('editEndereco').value = button.getAttribute('data-militante-endereco');
|
||||
document.getElementById('editFiliado').checked = button.getAttribute('data-militante-filiado') === 'True';
|
||||
|
||||
// Configurar action do formulário
|
||||
document.getElementById('formEditarMilitante').action = `/militantes/editar/${militanteId}`;
|
||||
});
|
||||
|
||||
// Configurar dados para o modal de exclusão
|
||||
const btnExcluir = this.querySelector('.btn-danger');
|
||||
btnExcluir.addEventListener('click', function() {
|
||||
const deleteModal = document.getElementById('deleteModal');
|
||||
const btnConfirmarExclusao = deleteModal.querySelector('#btnConfirmarExclusao');
|
||||
|
||||
// Atualizar texto do modal
|
||||
deleteModal.querySelector('.modal-body p').textContent = `Tem certeza que deseja excluir o militante ${button.getAttribute('data-militante-nome')}?`;
|
||||
|
||||
// Configurar ação de exclusão
|
||||
btnConfirmarExclusao.onclick = function() {
|
||||
fetch(`/militantes/excluir/${militanteId}`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'X-Requested-With': 'XMLHttpRequest'
|
||||
}
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
if (data.status === 'success') {
|
||||
// Fechar os modais
|
||||
bootstrap.Modal.getInstance(deleteModal).hide();
|
||||
bootstrap.Modal.getInstance(militanteModal).hide();
|
||||
|
||||
// Atualizar a página
|
||||
location.reload();
|
||||
} else {
|
||||
alert(data.message || 'Erro ao excluir militante');
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Erro:', error);
|
||||
alert('Erro ao excluir militante');
|
||||
});
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
// Limpar event listeners quando o modal for fechado
|
||||
militanteModal.addEventListener('hidden.bs.modal', function () {
|
||||
const btnEditar = this.querySelector('.btn-primary');
|
||||
const btnExcluir = this.querySelector('.btn-danger');
|
||||
|
||||
btnEditar.replaceWith(btnEditar.cloneNode(true));
|
||||
btnExcluir.replaceWith(btnExcluir.cloneNode(true));
|
||||
});
|
||||
>>>>>>> a430b82 (fix: corrige fluxo de modais na home - Ajusta modal de militantes para abrir detalhes primeiro - Corrige preenchimento de dados nos modais - Mantém fluxo: detalhes -> editar/excluir)
|
||||
|
||||
// Função para formatar telefone
|
||||
function formatPhone(phone) {
|
||||
@@ -375,14 +465,25 @@
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
<<<<<<< HEAD
|
||||
if (data.success) {
|
||||
window.location.reload();
|
||||
=======
|
||||
if (data.status === 'success') {
|
||||
// Fechar os modais
|
||||
bootstrap.Modal.getInstance(document.getElementById('modalEditarMilitante')).hide();
|
||||
bootstrap.Modal.getInstance(document.getElementById('militanteModal')).hide();
|
||||
|
||||
// Atualizar a página
|
||||
location.reload();
|
||||
>>>>>>> a430b82 (fix: corrige fluxo de modais na home - Ajusta modal de militantes para abrir detalhes primeiro - Corrige preenchimento de dados nos modais - Mantém fluxo: detalhes -> editar/excluir)
|
||||
} else {
|
||||
alert('Erro ao excluir militante: ' + data.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
// Event listeners
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Máscara para CPF
|
||||
@@ -435,6 +536,8 @@
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
=======
|
||||
>>>>>>> a430b82 (fix: corrige fluxo de modais na home - Ajusta modal de militantes para abrir detalhes primeiro - Corrige preenchimento de dados nos modais - Mantém fluxo: detalhes -> editar/excluir)
|
||||
// Função para carregar dados do pagamento no modal
|
||||
function carregarDadosPagamento(id) {
|
||||
fetch(`/api/pagamentos/${id}`)
|
||||
@@ -515,4 +618,12 @@
|
||||
});
|
||||
>>>>>>> 324660d (refactor: melhorias na interface e funcionalidades - Atualização do layout do dashboard com Bootstrap 5 - Remoção do template editar_pagamento.html (integrado ao modal) - Melhorias no template home.html com cards estatísticos - Ajustes nos estilos e responsividade - Correções nas rotas e conexões do banco de dados - Implementação do modal de edição de pagamentos - Adição de efeitos hover e melhorias visuais)
|
||||
</script>
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
<script src="{{ url_for('static', filename='js/militantes.js') }}"></script>
|
||||
{% endblock %}
|
||||
>>>>>>> a430b82 (fix: corrige fluxo de modais na home - Ajusta modal de militantes para abrir detalhes primeiro - Corrige preenchimento de dados nos modais - Mantém fluxo: detalhes -> editar/excluir)
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user