`;
$('#timeValidationForm').append(newRow);
// Reinitialize the datepicker for new date fields
$('.datepicker').datepicker({
format: 'dd/mm/yyyy',
weekStart: 1,
language: 'fr',
autoclose: true
});
}
function generateTimeOptions() {
let options = '';
for(let hour = 8; hour < 18; hour++) {
for(let min = 0; min < 60; min += 30) {
options += ``;
}
}
return options;
}
function calculateHours(element) {
let row = $(element).closest('.form-row');
let startTime = row.find('.start-time').val();
let endTime = row.find('.end-time').val();
let startDate = new Date(`01/01/2000 ${startTime}`);
let endDate = new Date(`01/01/2000 ${endTime}`);
let diff = endDate - startDate;
let hours = Math.floor(diff / 3600000);
let minutes = Math.round((diff % 3600000) / 60000);
row.find('.hours').val(`${hours}:${String(minutes).padStart(2, '0')}`);
}
function setPeriodStatus(element, status) {
let row = $(element).closest('.form-row');
// Retire la classe 'active' de tous les boutons dans cette ligne
$(row).find('.btn-validate, .btn-refuse').removeClass('active');
// Ajoute la classe 'active' au bouton cliqué
$(element).addClass('active');
// Définit le statut dans les données de la ligne pour utilisation ultérieure
row.data('status', status);
}
function sendEmail() {
let csvContent = 'Date,Heure de début,Heure de fin,Avis\n'; // Entête CSV
$('#timeValidationForm .form-row').each(function() {
let date = $(this).find('.datepicker').val();
let startTime = $(this).find('.start-time').val();
let endTime = $(this).find('.end-time').val();
let status = $(this).data('status') || 'Non spécifié';
csvContent += `${date},${startTime},${endTime},${status}\n`; // Ajouter les données en format CSV
});
window.location.href = `mailto:planning@ip-services.biz?subject=Validation des périodes&body=${encodeURIComponent(csvContent)}`;
}