180 lines
6.7 KiB
JavaScript
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);
|
|
});
|
|
});
|
|
|