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 %}
|
{% if ultimos_militantes %}
|
||||||
<div class="list-group list-group-flush">
|
<div class="list-group list-group-flush">
|
||||||
{% for militante in ultimos_militantes %}
|
{% 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">
|
<div class="militante-info">
|
||||||
<h6 class="mb-1">{{ militante.nome }}</h6>
|
<h6 class="mb-1">{{ militante.nome }}</h6>
|
||||||
<small>{{ militante.email }}</small>
|
<small>{{ militante.email }}</small>
|
||||||
@@ -333,10 +342,91 @@
|
|||||||
|
|
||||||
{% block scripts %}
|
{% block scripts %}
|
||||||
<script>
|
<script>
|
||||||
|
<<<<<<< HEAD
|
||||||
// Função para formatar CPF
|
// Função para formatar CPF
|
||||||
function formatCPF(cpf) {
|
function formatCPF(cpf) {
|
||||||
return cpf.replace(/(\d{3})(\d{3})(\d{3})(\d{2})/, "$1.$2.$3-$4");
|
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
|
// Função para formatar telefone
|
||||||
function formatPhone(phone) {
|
function formatPhone(phone) {
|
||||||
@@ -375,14 +465,25 @@
|
|||||||
})
|
})
|
||||||
.then(response => response.json())
|
.then(response => response.json())
|
||||||
.then(data => {
|
.then(data => {
|
||||||
|
<<<<<<< HEAD
|
||||||
if (data.success) {
|
if (data.success) {
|
||||||
window.location.reload();
|
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 {
|
} else {
|
||||||
alert('Erro ao excluir militante: ' + data.message);
|
alert('Erro ao excluir militante: ' + data.message);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
// Event listeners
|
// Event listeners
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
// Máscara para CPF
|
// Máscara para CPF
|
||||||
@@ -435,6 +536,8 @@
|
|||||||
<<<<<<< HEAD
|
<<<<<<< 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
|
// Função para carregar dados do pagamento no modal
|
||||||
function carregarDadosPagamento(id) {
|
function carregarDadosPagamento(id) {
|
||||||
fetch(`/api/pagamentos/${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)
|
>>>>>>> 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>
|
</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 %}
|
{% endblock %}
|
||||||
Reference in New Issue
Block a user