Formulaire de Validation des Périodes

Confirmation de présence



`; $('#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)}`; }