credit-direct/assets/js/buildings-manager.js
2025-12-18 09:44:42 +01:00

180 lines
6.7 KiB
JavaScript

/**
* Gestion des bâtiments et crédits associés
* Pour le formulaire credit-one-step.php
*/
jQuery(document).ready(function($) {
var buildingIndex = 0;
var loanIndex = 0;
// Toggle de la section bâtiments
$('input[name="isowner"]').on('change', function() {
if ($(this).val() === '1') {
$('.wpcf-buildings-section').removeClass('d-none');
} else {
$('.wpcf-buildings-section').addClass('d-none');
$('#buildings-container').empty();
$('#IDnumberofbuildings').val('');
buildingIndex = 0;
}
});
// Génération des bâtiments selon le nombre sélectionné
$('#IDnumberofbuildings').on('change', function() {
var numberOfBuildings = parseInt($(this).val());
var container = $('#buildings-container');
// Vider le container
container.empty();
buildingIndex = 0;
// Générer les bâtiments
for (var i = 1; i <= numberOfBuildings; i++) {
addBuilding(i);
}
});
// Fonction pour ajouter un bâtiment
function addBuilding(index) {
var template = $('#building-template').html();
template = template.replace(/__INDEX__/g, index);
var $building = $(template);
$building.removeClass('d-none');
// S'assurer que tous les champs clonés sont activés (pas disabled)
$building.find('input, select, textarea').prop('disabled', false);
$('#buildings-container').append($building);
// Attacher les événements pour ce bâtiment
attachBuildingEvents(index);
}
// Attacher les événements spécifiques à un bâtiment
function attachBuildingEvents(index) {
// Gestion de l'affichage du select pays
$('input[name="building[' + index + '][inbelgium]"]').on('change', function() {
var $block = $(this).closest('.building-block');
var $countrySelect = $block.find('.building-country-select');
if ($(this).val() === '0') {
$countrySelect.removeClass('d-none');
} else {
$countrySelect.addClass('d-none');
}
});
// Gestion de l'affichage du montant des revenus locatifs
$('input[name="building[' + index + '][hasrentalincome]"]').on('change', function() {
var $block = $(this).closest('.building-block');
var $rentalAmount = $block.find('.building-rental-amount');
if ($(this).val() === '1') {
$rentalAmount.removeClass('d-none');
} else {
$rentalAmount.addClass('d-none');
}
});
}
// Toggle de la section crédits pour bâtiments
$('input[name="hasbuildingloans"]').on('change', function() {
if ($(this).val() === '1') {
$('.wpcf-buildingloans').removeClass('d-none');
// Si le container est vide, ajouter automatiquement un premier crédit
if ($('#building-loans-container').children().length === 0) {
loanIndex = 1;
addBuildingLoan(loanIndex);
}
} else {
$('.wpcf-buildingloans').addClass('d-none');
$('#building-loans-container').empty();
loanIndex = 0;
}
});
// Ajouter un crédit
$('.wpcf-buildingloan-add').on('click', function(e) {
e.preventDefault();
loanIndex++;
addBuildingLoan(loanIndex);
});
// Fonction pour ajouter un crédit
function addBuildingLoan(index) {
var template = $('#building-loan-template').html();
template = template.replace(/__LOANINDEX__/g, index);
var $loan = $(template);
$loan.removeClass('d-none');
// S'assurer que tous les champs clonés sont activés (pas disabled)
$loan.find('input, select, textarea').prop('disabled', false);
$('#building-loans-container').append($loan);
// Attacher l'événement de suppression
$loan.find('.wpcf-buildingloan-remove').on('click', function(e) {
e.preventDefault();
if (confirm('Êtes-vous sûr de vouloir retirer ce crédit ?')) {
var $loanBlock = $(this).closest('.building-loan-block');
var kuid = $loanBlock.find('input[name*="[kuid]"]').val();
if (kuid) {
// Ajouter le kuid à la liste des suppressions
var delList = $('input[name="delbuildingloans"]').val();
delList = delList ? delList + ',' + kuid : kuid;
$('input[name="delbuildingloans"]').val(delList);
}
$loanBlock.remove();
}
});
}
// Si des crédits existent déjà (en cas de modification), initialiser loanIndex
var existingLoans = $('.building-loan-block').length;
if (existingLoans > 0) {
loanIndex = existingLoans;
}
// Si hasbuildingloans est déjà coché au chargement et qu'aucun crédit n'existe, en ajouter un
if ($('input[name="hasbuildingloans"]:checked').val() === '1' && $('#building-loans-container').children().length === 0) {
loanIndex = 1;
addBuildingLoan(loanIndex);
}
// Animation et style pour les sections
$('.building-block').each(function() {
$(this).css({
'background-color': '#f8f9fa',
'border-radius': '8px',
'margin-bottom': '20px',
'padding': '20px',
'box-shadow': '0 2px 4px rgba(0,0,0,0.1)'
});
});
// Style pour les labels des bâtiments
$('.building-label').css({
'color': '#ff6b35',
'font-weight': 'bold'
});
// Désactiver tous les champs des templates pour éviter leur soumission
// Les templates contiennent __INDEX__ et __LOANINDEX__ dans les noms de champs
$('#building-template input, #building-template select, #building-template textarea').prop('disabled', true);
$('#building-loan-template input, #building-loan-template select, #building-loan-template textarea').prop('disabled', true);
// S'assurer que les templates restent désactivés avant chaque soumission
$('form.form-submit').on('submit', function(e) {
// Désactiver tous les champs contenant __INDEX__ ou __LOANINDEX__ dans leur nom
$(this).find('input[name*="__INDEX__"], select[name*="__INDEX__"], textarea[name*="__INDEX__"]').prop('disabled', true);
$(this).find('input[name*="__LOANINDEX__"], select[name*="__LOANINDEX__"], textarea[name*="__LOANINDEX__"]').prop('disabled', true);
});
});